Tensorflow 在 jupyter 中设置 CUDA_VISIBLE_DEVICES
Tensorflow set CUDA_VISIBLE_DEVICES within jupyter
我有两个 GPU,想通过 ipynb 同时 运行 两个不同的网络,但是第一个笔记本总是分配两个 GPU。
使用 CUDA_VISIBLE_DEVICES,我可以隐藏 python 文件的设备,但我不确定如何在笔记本中这样做。
是否可以将不同的 GPU 隐藏到同一台服务器上的笔记本 运行?
您可以使用 os.environ
在笔记本中设置环境变量。在初始化 TensorFlow 之前执行以下操作以将 TensorFlow 限制为第一个 GPU。
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0"
您可以仔细检查您是否拥有对 TF 可见的正确设备
from tensorflow.python.client import device_lib
print device_lib.list_local_devices()
我倾向于从 notebook_util
等实用模块中使用它
import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf
只需使用 magics:
,无需任何导入即可更快地完成
%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0
注意所有环境变量都是字符串,所以不需要使用"
。您可以验证环境变量是否由 运行: %env <name_of_var>
设置。或者用 %env
.
检查所有这些
您还可以启用多个 GPU 核心,如下所示:
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0,2,3,4"
我有两个 GPU,想通过 ipynb 同时 运行 两个不同的网络,但是第一个笔记本总是分配两个 GPU。
使用 CUDA_VISIBLE_DEVICES,我可以隐藏 python 文件的设备,但我不确定如何在笔记本中这样做。
是否可以将不同的 GPU 隐藏到同一台服务器上的笔记本 运行?
您可以使用 os.environ
在笔记本中设置环境变量。在初始化 TensorFlow 之前执行以下操作以将 TensorFlow 限制为第一个 GPU。
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0"
您可以仔细检查您是否拥有对 TF 可见的正确设备
from tensorflow.python.client import device_lib
print device_lib.list_local_devices()
我倾向于从 notebook_util
等实用模块中使用它import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf
只需使用 magics:
,无需任何导入即可更快地完成%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0
注意所有环境变量都是字符串,所以不需要使用"
。您可以验证环境变量是否由 运行: %env <name_of_var>
设置。或者用 %env
.
您还可以启用多个 GPU 核心,如下所示:
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0,2,3,4"