一般而言,机器学习团队理解GPU使用情况的常见度量标准是GPU利用率,通常通过在终端中运行nvidia-smi来查看。许多集成的可观测性工具也将GPU利用率作为其主要性能指标进行跟踪。
然而,AI Infra团队Trainy在实操中发现,GPU利用率并不总是理解GPU性能的最佳指标。实际上,在不做任何计算的情况下读取/写入内存,就可达到100%的GPU利用率!
本文作者Roanak Baviskar在本文中讲述了他们是如何发现这一点的,以及在这一过程中的其他发现。
(本文由OneFlow编译发布,转载请联系授权。来源:https://trainy.ai/blog/gpu-utilization-misleading)
作者|Roanak Baviskar
OneFlow编译
题图由SiliconCloud平台生成
在Trainy,我们致力于管理GPU集群的基础设施,因此花费了大量时间思考这些问题。去年,我们与一家基础模型公司合作,以扩展和提高他们LLM训练的效率。我们遵循了几乎所有关于PyTorch性能调优指南中提到的基本步骤,即:
-
通过更改数据加载器默认值(num_workers,batch_size,pin_memory,预取因子等)来充分利用GPU。
-
通过使用混合精度(fp16,bf16)最大化使用张量核心
-
使用来自apex/deepspeed(例如 FusedAdam、FusedAdamW 等)的融合优化器
-
使用专为训练(H100SXM、A100SXM)设计的实例/网络。同时,可能的话,使用更新的实例H100 > A100 > V100
这些简单的更改使我们达到了100%的GPU利用率,并具有出色功耗,这真是太好了!为了检查是否还有更多提升空间,我们计算了训练工作负载的MFU(模型算力利用率)。
MFU,即模型FLOPS利用率,是理解GPU性能的最佳指标之一,这是在