You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多GPU独立并行推理耗时随GPU数量增加上升的原因排查

排查多GPU独立并行推理耗时上升的方向

针对单GPU推理耗时低于多GPU独立并行的情况,可从以下几个方向逐一排查:

1. 系统资源竞争(CPU/内存/PCIe带宽)

  • CPU调度瓶颈:每个Worker的推理依赖CPU完成输入预处理、请求调度、输出后处理等操作。当GPU/Worker数量增加,CPU核心可能被占满,导致单个推理任务的等待调度时间变长。可通过top或htop观察CPU使用率,看是否接近100%。
  • PCIe带宽饱和:多GPU同时进行数据传输(CPU→GPU输入、GPU→CPU输出)时,共享的PCIe总线带宽可能成为瓶颈。用nvidia-smi dmon或nvtop查看GPU的PCIe Tx/Rx利用率,若接近总线带宽上限(如PCIe 3.0 x16为16GB/s),则说明数据传输耗时拉高了整体推理时间。

2. GPU上下文与资源隔离问题

  • 显存碎片/残留资源:每个Worker初始化GPU上下文后,若推理后未彻底释放临时显存,多Worker运行时可能产生显存碎片,导致后续推理的内存分配耗时增加。用nvidia-smi实时监控各GPU的显存占用,看是否随Worker数量增加出现异常增长;可尝试在每个推理周期后调用显存清理接口(如torch.cuda.empty_cache(),适配PyTorch后端)再测试。
  • 模型实例未完全隔离:若多个Worker共享同一模型实例的底层资源(如权重内存),可能引发隐性竞争。确保每个Worker独立加载模型,避免跨Worker的资源共享。

3. 耗时统计方式的偏差

  • CPU调度延迟被计入统计:当前用time.time()统计的是从CPU发起请求到获取结果的总时间,包含了CPU调度、数据传输的耗时,而非纯GPU推理时间。可改用GPU端事件统计,排除CPU侧干扰:
    import torch
    
    start_event = torch.cuda.Event(enable_timing=True)
    end_event = torch.cuda.Event(enable_timing=True)
    start_event.record()
    output = ort_model.generate(**inputs)
    end_event.record()
    torch.cuda.synchronize()
    elapsed_ms = start_event.elapsed_time(end_event)
    
  • 冷启动耗时影响平均:Worker启动初期的几次推理可能包含模型加载、上下文初始化的冷启动耗时,拉高了平均耗时。可跳过前5-10次推理,仅统计稳定运行后的耗时数据。

4. 系统与驱动层面的调度问题

  • GPU调度器负载不均衡:操作系统的GPU调度器可能未合理分配负载,导致部分GPU占用过高。用nvidia-smi查看各GPU的Utilization(利用率),确认是否存在负载不均的情况。
  • 驱动/电源管理限制:老旧的NVIDIA驱动可能对多GPU并行支持不佳,建议更新到最新稳定版;同时检查系统电源模式,确保GPU运行在高性能模式(避免降频),可通过nvidia-smi -q -d CLOCK查看GPU的实际运行频率。
  • CPU-GPU亲和性不足:若Worker的CPU线程未绑定到对应GPU的NUMA节点,跨节点调度会增加延迟。可通过任务管理器(Windows)或taskset(Linux)将每个Worker的进程绑定到对应NUMA节点的CPU核心。

5. ONNX Runtime配置优化缺失

  • 线程数配置不合理:ONNX Runtime的intra_op_num_threads(算子内并行线程数)和inter_op_num_threads(算子间并行线程数)若设置过大,多Worker并行时会引发CPU线程竞争。建议将每个Worker的线程数设置为CPU核心数除以Worker数量,避免过度竞争。
  • 动态形状开销:若模型使用动态输入形状,多Worker并行时GPU的内存分配与Tensor Core利用率可能下降。尝试固定输入形状,测试耗时是否有明显改善。

内容的提问来源于stack exchange,提问作者Basir Mahmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:53:09