pytorch 指定卡1_如何为TensorFlow和PyTorch自动选择空闲GPU,解决抢卡争端

原标题:如何为TensorFlow和PyTorch自动选择空闲GPU,解决抢卡争端

雷锋网按:本文作者天清,原文载于其知乎专栏世界那么大我想写代码,雷锋网获其授权发布。

项目地址:QuantumLiu/tf_gpu_manager

***

更新:支持pytorch

***

使用

git clone https://github.com/QuantumLiu/tf_gpu_manager

把manager.py放到你训练的目录就行。

直接使用with gm.auto_choice()自动选择设备进行接下来代码块的操作。

import tensorflow as tf

from manager import GPUManager

from keras.layers LSTM

gm=GPUManager()

with gm.auto_choice():

x=tf.placeholder(tf.float32,shape=(None,20,64))

y=LSTM(32)(x)背景

随着深度学习技术快速的发展,深度学习任务的数据和计算规模也越来越大,想要做出个像样的work,没有一台powerful的GPU工作站是万万不能的。

除了要求单卡性能强大,GPU数量多也很重要。

因为以下几点原因,多GPU工作站已经成了各大实验室的标配:

一般来说,一个深度学习项目需要一个实验室或者小组的多人合作完成,要共享一台或几台工作站。一个host多个GPU比较方便。

实验需要试多组参数或者对比试验。多GPU并行跑省时间。

模型计算量大,需要将模型不同分配在多个GPU上计算。

现在,Tensorflow、pytorch等主流深度学习框架都支持多GPU训练。

比如Tensorflow,在 tensorflow\python\framework中定义了device函数,返回一个用来执行操作的GPU设备的context manager对象。

def device(device_name_or_function):

"""Wrapper for `Graph.device()` using the default graph.

See

@{tf.Graph.device}

for more details.

Args:

device_name_or_function: The device name or function to use in the context.

Returns:

A context manager that specifies the default device to use for newly created ops.

"""

return get_default_graph().device(device_name_or_function)

在我们的训练脚本中使用with语句就可以指定接下来的操作在某个GPU上进行。

with tf.device('/gpu:2'):

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')

b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')

c = tf.matmul(a, b)

那么问题来了:

在写训练脚本时怎么知道哪个GPU是空闲可用的?

同组的人做实验和我冲突怎么办?

将来某个时刻运行这个脚本的时候是不是还要根据情况修改?

同行用我的代码复现实验,GPU配置环境不一样,他们甚至可能没有GPU,又要改代码?

当然,上道儿的开发者都知道nvidia-smi可以查询显卡信息,查看GPU显存、温度、功率使用,然后选择合适的GPU。

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/925d4b6331f0d6a55b25b9598bf86fc0.png" data-rawwidth="1109" data-rawheight="727" class="origin_image zh-lightbox-thumb" width="1109" data-original="https://pic4.zhimg.com/v2-4e889c4ab7942cc4056249f2f063f28f_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值