You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TensorFlow多GPU能否同时运行?附分布式机制测试代码

TensorFlow多GPU能否同时运行?

当然可以!TensorFlow完全支持多GPU并行计算,不管是数据并行(每个GPU处理不同的数据批次)还是模型并行(不同GPU负责模型的不同部分),都能实现多个GPU同时工作。不过你的当前代码并没有真正触发多GPU的并行执行,我来帮你梳理问题和改进方案:

你的代码存在的核心问题

你的代码只是在不同GPU设备下定义了计算节点,但没有完成关键的两步:

  • 没有将对应的数据分配到各个GPU的计算节点中
  • 没有实际触发这些GPU节点的并行计算(代码里sess.run(init)之后就没有后续执行逻辑了)
  • 另外注意:tf.initialize_all_variables()已经是废弃的API,建议替换为tf.global_variables_initializer()

正确实现多GPU并行的示例代码

下面是基于你的代码修改的可运行版本,实现5个GPU(如果GPU数量不足,会自动 fallback 到CPU)同时执行计算:

import tensorflow as tf
import numpy as np

def cv_data(SEED):
    np.random.seed(SEED)
    return np.random.rand(5,2,2)

# 生成5组测试数据,对应5个计算单元
data = cv_data(42)

# 封装单个GPU的计算逻辑
def run_on_gpu(gpu_id, input_tensor):
    with tf.device(f'/gpu:{gpu_id}'):
        with tf.name_scope(f'cv{gpu_id}'):
            # 直接用常量传入数据,也可以用占位符喂数据
            x = tf.constant(input_tensor, dtype=tf.float32)
            # 定义你的计算操作(这里是矩阵乘法)
            y = tf.matmul(x, x)
            return y

# 为每个GPU创建计算任务
gpu_tasks = []
for gpu_idx in range(5):
    task = run_on_gpu(gpu_idx, data[gpu_idx])
    gpu_tasks.append(task)

# 配置会话,允许自动设备 fallback,同时打印设备分配日志
session_config = tf.ConfigProto(
    allow_soft_placement=True,
    log_device_placement=True
)

with tf.Session(config=session_config) as sess:
    writer = tf.summary.FileWriter("test_graph", sess.graph)
    # 一次性运行所有GPU的计算任务,触发并行执行
    all_results = sess.run(gpu_tasks)
    
    # 输出每个GPU的计算结果
    for idx, result in enumerate(all_results):
        print(f"=== GPU {idx} 计算结果 ===")
        print(result)

关键说明

  • 当你调用sess.run(gpu_tasks)时,TensorFlow会同时调度所有GPU上的计算任务,实现真正的并行运行
  • log_device_placement=True会在控制台打印每个操作分配的设备,你可以通过这个日志验证计算是否真的跑在GPU上
  • 如果你的机器GPU数量少于5个,allow_soft_placement=True会自动把超出的计算任务放到CPU上执行,避免报错
  • 对于大规模训练场景,更常用的是数据并行:每个GPU加载相同的模型,处理不同的数据批次,最后合并梯度更新模型,TensorFlow 1.x可以用tf.train.replica_device_setter或者自定义梯度合并逻辑,TensorFlow 2.x则有更简洁的tf.distribute.MirroredStrategy可以直接使用

内容的提问来源于stack exchange,提问作者Yushin Liu

火山引擎 最新活动