浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置

服务器有多张显卡,一般是组里共用,分配好显卡和任务就体现公德了。除了在代码中指定使用的 GPU 编号,还可以直接设置可见 GPU 编号,使程序/用户只对部分 GPU 可见。

操作很简单,使用环境变量 CUDA_VISIBLE_DEVICES 即可。

具体来说,如果使用单卡运行 Python 脚本,则可输入

CUDA_VISIBLE_DEVICES=1 python my_script.py

脚本将只使用 GPU1。

在 .py 脚本和 Notebook 中设置,则

import os

os.environ["CUDA_VISIBLE_DEVICES"] = "2"

还可以直接设置临时的环境变量:

export CUDA_VISIBLE_DEVICES="0"

此时该用户的 CUDA 只看得见 GPU0。

至于显存设置,可以设置使用比例(70%):

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

也可以按需增长:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

如果是 Keras 使用 TensorFlow 后端,则可通过如

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
set_session(tf.Session(config=config))

更改使用设置。

以上这篇浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 运行tensorflow python程序,限制对GPU和CPU的占用操作

    一般情况下,运行tensorflow时,默认会占用可以看见的所有GPU,那么就会导致其它用户或程序无GPU可用,那么就需要限制程序对GPU的占用.并且,一般我们的程序也用不了所有的GPU资源,只是强行霸占着,大部分资源都不会用到,也不会提升运行速度. 使用nvidia-smi可以查看本机的GPU使用情况,如下图,这里可以看出,本机的GPU型号是K80,共有两个K80,四块可用(一个K80包括两块K40). 1.如果是只需要用某一块或某几块GPU,可以在运行程序时,利用如下命令运行:CUDA_VI

  • 在tensorflow中设置使用某一块GPU、多GPU、CPU的操作

    tensorflow下设置使用某一块GPU(从0开始编号): import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "1" 多GPU: num_gpus = 4 for i in range(num_gpus): with tf.device('/gpu:%d',%i): ... 只是用cpu的

  • 解决Tensorflow占用GPU显存问题

    我使用Pytorch进行模型训练时发现真正模型本身对于显存的占用并不明显,但是对应的转换为tensorflow后(权重也进行了转换),发现Python-tensorflow在使用时默认吃掉所有显存,并且不手动终结程序的话显存并不释放(我有两个序贯的模型,前面一个跑完后并不释放占用显存)(https://github.com/tensorflow/tensorflow/issues/1727),这一点对于后续的工作有很大的影响. 后面发现python-tensorflow限制显存有两种方法: 1.

  • tensorflow使用指定gpu的方法

    TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief [1]  . Tensorflow拥有多层级结构,可部署于各类服务器.PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 . TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括Ten

  • 浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置

    服务器有多张显卡,一般是组里共用,分配好显卡和任务就体现公德了.除了在代码中指定使用的 GPU 编号,还可以直接设置可见 GPU 编号,使程序/用户只对部分 GPU 可见. 操作很简单,使用环境变量 CUDA_VISIBLE_DEVICES 即可. 具体来说,如果使用单卡运行 Python 脚本,则可输入 CUDA_VISIBLE_DEVICES=1 python my_script.py 脚本将只使用 GPU1. 在 .py 脚本和 Notebook 中设置,则 import os os.en

  • 浅谈Java分布式架构下如何实现分布式锁

    01分布式锁运用场景 互联网秒杀,抢优惠卷,接口幂等性校验.咱们以互联网秒杀为例. @RestController @Slf4j publicclassIndexController{ @Autowired privateRedissonredission; @Autowired privateStringRedisTemplatestringRedisTemplate; @RequestMapping("/deduct_stock") publicStringdeductStock(

  • 浅谈vue单一组件下动态修改数据时的全部重渲染

    今天在学习vue的过程中,发现一个有趣的现象. 在某一组件下的某一数据通过点击事件被动态修改的时候,对应view中的数据同步的进行了修改,没错,这不是废话吗,vue的一大特色就是数据的双向绑定.可有趣的是,该组件下我写的另一个用Math.random()的data值对应的值和视图也发生了变化 这就让我这个刚入门的小白有点奇怪了,我修改一个,怎么变了两个????脑洞放开一想,会不会数据在双向同步的时候,发生了什么,比如.是不是只要有一个节点变了,node都重新进行了加载??? 我想这其中的缘由必定

  • 浅谈python在提示符下使用open打开文件失败的原因及解决方法

    题目:在提示符下使用open打开一个文件 刚开始网上看了下打开的方式,结果一直实现不了,报错是没找到这个文件,而且和我输入的文件名不一样. 错误如下: >>>open('d:\456.txt') Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> open('d:\456.txt') IOError: [Errno 2] No such file

  • 浅谈PHP各环境下的伪静态配置

    一.Apache的伪静态配置 1.网站根目录下需要有 .htaccess 文件,没有则自己创建一个,内容 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> 如果你的apache是fastcgi模式下

  • 浅谈Ruby on Rails下的rake与数据库数据迁移操作

    不知道你有没有把数据迁移写入Migration文件的经历,相信无论是老鸟还是新手都这样干过吧.事实上,这样做并不是行不通,只不过这样的实践慢慢会给你引入一些不必要的麻烦. 一般认为db/migrate文件夹里的内容是关于你数据库Schema的演变过程,每个新的开发或线上环境都要通过这些Migration来构建可用的数据库.但如果这里装入了,负责细节的业务代码,比如一些历史遗留数据的迁移代码之类的,当一段时间后,数据库的结构变化了,但Migration没有跟着变化,渐渐的曾经的辅助代码,就成了垃圾

  • 浅谈java获取服务器基本信息

    实现步骤: (1)创建servlet BrowserServer (2)调用HttpServletRequest对象的getServerName()方法获取服务器名称 (3)调用HttpServletRequest对象的getServerPort()方法获取服务器端口 (4)首先调用getServletContext()方法获取ServletContext对象,然后调用ServletContext对象的getServerInfo()方法获取服务器环境信息名称.版本信息 (5)利用HttpServ

  • 浅谈云服务器下如何选择操作系统

    目录 Windows操作系统和Linux操作系统有何区别? Windows系统和Linux系统哪个更好,应该怎么选择? 华为云提供哪些版本的操作系统? 如果选错了云服务器的操作系统,怎么切换? Windows操作系统和Linux操作系统有何区别? Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使用习惯来说可能更容易上手:目前华为云提供的版本有2008版.2012版.2016版和2019版,并有英文和中文版

  • 浅谈Linux环境下gcc优化级别

    代码优化可以说是一个非常复杂而又非常重要的问题,以笔者多年的linux c开发经验来说优化通常分为两个方面,一是人为优化,也就是基于编程经验采用更简易的数据结构函数等来降低编译器负担,二是采用系统自带的优化模式,也就是gcc - o系列,下面我将简述一下各级优化的过程以及实现. gcc - o1 首先o1上面还有一个o0,那个是不提供任何优化,项目中几乎不会使用,而o1使用就非常广泛了,o1是最基本的优化,主要对代码的分支,表达式,常量来进行优化,编译器会在较短的时间下将代码变得更加短小,这样体

  • 浅谈Linux下通过find命令进行rm文件删除的小技巧

    我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,

随机推荐