专栏名称: AI科技评论
「AI科技评论」是国内顶尖人工智能媒体和产业服务平台,专注全球 AI 业界、学术和开发三大方向的深度报道。
目录
相关文章推荐
新智元  ·  Fellou ... ·  昨天  
量子位  ·  训练MoE足足提速70%!华为只用了3招 ·  昨天  
爱可可-爱生活  ·  //@爱可可-爱生活:欢迎参与~-20250 ... ·  昨天  
51好读  ›  专栏  ›  AI科技评论

开发 | 如何为TensorFlow和PyTorch自动选择空闲GPU,解决抢卡争端

AI科技评论  · 公众号  · AI  · 2017-08-28 13:55

正文

请到「今天看啥」查看全文


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)

那么问题来了:

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

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

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

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

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

每次训练前执行这个命令,再与良好团队保持良好的沟通可以解决上述1、2两个问题,但是3、4两个问题还是不好解决。

而且经常和师兄弟、同事抢卡岂不是影响效率?

我们需要一种解决方案,能够实现不修改脚本、不需要和组员沟通,自动选择空闲GPU设备。

实现

如何高效获取GPU状态信息

nvidia-smi (https://developer.nvidia.com/nvidia-system-management-interface) 是一个由NVIDIA官方提供的GPU状态管理、监控命令行软件。和其他命令行软件一样,nvidia-smi也有许多argument。

通过阅读 文档 ,以及学习 老司机的经验(http://nvidia.custhelp.com/app/answers/detail/a_id/3751/~/useful-nvidia-smi-queries) ,我们知道--query-gpu这个option可以指定查询GPU状态信息,并返回格式化信息。

通过执行命令:

nvidia-smi --help-query-gpu

我们得到了所有支持的查询参数(太多了不一一枚举)

最有用的参数老司机给我们总结出来了:







请到「今天看啥」查看全文