[深度学习]设置使用cpu还是gpu(如何设置)

410 阅读2分钟

在使用TensorFlow构建深度学习模型时,不需要强制使用CPU。TensorFlow会自动检测并优先使用GPU加速(如果环境配置正确)。以下是详细说明和设置方法:


1. TensorFlow的设备选择逻辑

  • 默认行为:安装GPU版TensorFlow后,如果有可用GPU,自动优先使用GPU
  • 如果无GPU或GPU不可用(如驱动未安装),则自动回退到CPU。
  • 全连接网络(FCN)同样受益于GPU加速,尤其在大批量数据或深层网络时。

2. 强制指定CPU/GPU的方法

✅ 方法一:代码中临时指定设备

使用 tf.device() 上下文管理器:

import tensorflow as tf

# 强制使用CPU
with tf.device('/CPU:0'):
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(128, activation='relu'),
        tf.keras.layers.Dense(10)
    ])

# 强制使用特定GPU(例如第一个GPU)
with tf.device('/GPU:0'):
    model = tf.keras.Sequential([...])
✅ 方法二:全局禁用GPU

在代码开头设置环境变量:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"  # 禁用所有GPU,强制使用CPU
✅ 方法三:按需选择GPU

限制TensorFlow使用的GPU(多卡环境):

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"      # 只使用第一个GPU, (GPU索引从0开始)    
# os.environ["CUDA_VISIBLE_DEVICES"] = "1"    # 只使用第二个GPU, (GPU索引从0开始)    

3. 验证设备使用情况

运行以下代码检查TensorFlow是否识别到GPU:

import tensorflow as tf
print("可用设备:", tf.config.list_physical_devices())
print("当前使用的设备:", tf.test.gpu_device_name() or "CPU")
  • 输出示例(GPU可用):
    可用设备: [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
               PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
    当前使用的设备: /device:GPU:0
    

4. 安装GPU版TensorFlow

确保已安装 TensorFlow-GPU 版本和对应驱动:

# 安装GPU支持的TensorFlow(需CUDA/cuDNN)
pip install tensorflow[and-cuda] -U  # 最新版本

# 验证安装
python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

注意:GPU版本需要配置NVIDIA驱动+CUDA+cuDNN,版本必须严格匹配。


5. 常见问题

  • Q: 代码未指定设备,但运行很慢,如何确认是否用了GPU? A: 运行 nvidia-smi(Linux/Win)查看GPU使用率,或在代码中添加设备日志。

  • Q: 想用CPU但误装了GPU版? A: 无需重装,用 os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 禁用即可。

  • Q: FCN在GPU上比CPU快吗? A: 通常,尤其当数据批量大或层数多时,GPU并行计算优势明显。


总结

需求操作方式
默认自动用GPU安装GPU版TensorFlow并配置好CUDA环境
强制使用CPU代码开头加 os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
指定某块GPUos.environ["CUDA_VISIBLE_DEVICES"] = "0" (GPU索引从0开始)
临时用CPU/GPU在代码块中用 with tf.device('/CPU:0')with tf.device('/GPU:0')

根据你的硬件环境和需求灵活选择即可!