【问题标题】:How to run multiple training tasks on different GPUs?如何在不同的 GPU 上运行多个训练任务?
【发布时间】:2020-03-05 06:39:28
【问题描述】:

我的服务器上有 2 个 GPU,我想在它们上运行不同的训练任务。

在第一个任务中,我试图强制 Tensorflow 只使用一个 GPU,我在脚本顶部添加了以下代码:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

运行第一个任务后,当我尝试在另一个 GPU 上运行第二个任务时,(使用相同的 2 行代码)我收到错误 "No device GPU:1"强>。

有什么问题?

【问题讨论】:

    标签: parallel-processing gpu lstm recurrent-neural-network


    【解决方案1】:

    “有什么问题?”

    系统需要查看卡片 - 验证服务器的当前状态,使用对 (hwloc-tool) lstopo 的调用:

    $ lstopo --only osdev
    GPU L#0 "card1"
    GPU L#1 "renderD128"
    GPU L#2 "card2"
    GPU L#3 "renderD129"
    GPU L#4 "card3"
    GPU L#5 "renderD130"
    GPU L#6 "card0"
    GPU L#7 "controlD64"
    Block(Disk) L#8 "sda"
    Block(Disk) L#9 "sdb"
    Net L#10 "eth0"
    Net L#11 "eno1"
    GPU L#12 "card4"
    GPU L#13 "renderD131"
    GPU L#14 "card5"
    GPU L#15 "renderD132"
    

    如果显示的不仅仅是上面提到的card0,请继续正确命名/id#-s

    确保设置它执行任何操作之前其他import-s,如pycudatensorflow

    import os
    os.environ['CUDA_VISIBLE_DEVICES'] = '1'   # MUST PRECEDE ANY IMPORT-s
    #---------------------------------------------------------------------
    import pycuda     as pyCUDA
    import tensorflow as tf
    ...
    #----------------------------------------------------------------------
    

    【讨论】:

    • 当我在第一个进程中设置可见设备以仅查看 GPU:0 并在另一个进程上打印可用 gpus 时,它会看到我认为是 GPU:1 的 GPU:0
    • 该死的强制(不)可见性重新索引:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2020-11-21
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多