TensorFlow指定可见GPU设备失效求助:多GPU服务器选空闲卡
解决TensorFlow指定GPU的问题
你的操作无效的原因
你用的是TensorFlow 1.x的兼容配置写法,但如果是TF2.x环境,这套配置不会影响tf.config.list_physical_devices的输出,而且必须在所有TensorFlow操作(包括import)之前执行,否则GPU已经完成初始化,再修改配置就没用了。另外TF2.x默认用eager模式,tf.compat.v1.Session的配置不会全局生效。
可靠的GPU指定方法
方法1:通过环境变量指定(和PyTorch逻辑一致,推荐)
TF其实支持CUDA_VISIBLE_DEVICES,但必须在加载TensorFlow之前设置:
import os # 只让TF看到编号为2的GPU(替换成你需要的编号) os.environ["CUDA_VISIBLE_DEVICES"] = "2" # 之后再导入TensorFlow import tensorflow as tf
- 注意:在Jupyter Notebook中,必须重启kernel后,先运行这段代码,再执行任何TF相关操作。如果之前已经导入过TF,环境变量的设置不会生效。
方法2:TF2.x原生API指定
用TF2.x推荐的tf.config.set_visible_devices,同样要在所有TF操作前执行:
import tensorflow as tf # 获取所有物理GPU gpus = tf.config.list_physical_devices('GPU') if gpus: # 指定只使用第2块GPU(索引从0开始) target_gpu = gpus[2] tf.config.set_visible_devices(target_gpu, 'GPU') # 验证:查看逻辑可见的GPU(只会显示你指定的) print("可用GPU:", tf.config.list_logical_devices('GPU'))
- 这个方法下,
tf.config.list_physical_devices仍会显示所有物理GPU,但TF只会使用你指定的那一块,不会去占用其他GPU的显存。
Jupyter环境的注意事项
- Jupyter的kernel会保留会话状态,如果你之前已经运行过import TensorFlow的代码,再修改GPU配置不会生效,必须重启kernel。
- 每次启动Notebook后,先执行GPU配置代码,再导入TF或构建模型,避免GPU提前初始化。
内容的提问来源于stack exchange,提问作者lokindo
相关产品推荐
相关产品推荐

