Tensorflow在jupyter中设置CUDA_VISIBLE_DEVICES

Tim*_*Tim 65 python environment-variables tensorflow

我有两个GPU,并希望同时通过ipynb运行两个不同的网络,但第一个笔记本总是分配两个GPU.

使用CUDA_VISIBLE_DEVICES,我可以隐藏python文件的设备,但是我不确定如何在笔记本中这样做.

反正是否有不同的GPU隐藏在同一台服务器上运行的笔记本电脑?

Yar*_*tov 134

您可以使用在笔记本中设置环境变量os.environ.在初始化TensorFlow之前执行以下操作以将TensorFlow限制为第一个GPU.

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0"
Run Code Online (Sandbox Code Playgroud)

您可以仔细检查TF是否可以看到正确的设备

from tensorflow.python.client import device_lib
print device_lib.list_local_devices()
Run Code Online (Sandbox Code Playgroud)

我倾向于使用像notebook_util这样的实用程序模块

import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,它不起作用 os.environ["CUDA_VISIBLE_DEVICES"]="0" ...我将其更改为 os.environ["CUDA_VISIBLE_DEVICES"]="" 然后它起作用了。我正在使用 tensorflow 1.12 (2认同)

Sal*_*ali 23

只需使用魔法,你就可以更快地完成它而无需任何进口:

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0
Run Code Online (Sandbox Code Playgroud)

请注意,所有env变量都是字符串,因此无需使用".您可以验证ENV变量是通过运行设置:%env <name_of_var>.或者检查所有这些%env.


mar*_*mus 6

您还可以启用多个 GPU 内核,如下所示:

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0,2,3,4"
Run Code Online (Sandbox Code Playgroud)