LLM学习记录(三)--如何评估你的显卡利用率
发布网友
发布时间:2024-09-30 18:28
我来回答
共1个回答
热心网友
时间:2024-10-25 23:57
本文旨在介绍几种评估显卡利用率的方法,以帮助理解零级训练(zero3)在无NVLink情况下多卡训练的性能影响。通过实测与理论对比,我们能更直观地评估GPU在训练过程中的性能发挥情况。
首先,我们探讨了FLOPS比值法。利用工具如deepspeed,结合NVIDIA提供的显卡FP16峰值计算速度(tensor core)进行计算。例如,实测flops为100TFlops,与A100卡的理论峰值312TFlops相比,得出GPU利用率仅为32.05%。需要注意的是,开启gradient checkpointing时,每token的计算量为8倍模型参数量,可能使FLOPS计算上升但throughout下降。
其次,引入了throughout估计法。通过手动估算或利用deepspeed,参考论文中的训练速度或吞吐量数据。计算公式为:吞吐量 = example数量/秒/GPU * max_length。以Llama论文为例,单机A800在训练7B模型时的吞吐速度约为3300 token/s/gpu,实测结果与理论值相比,计算GPU利用率。
再者,torch profiler分析法提供了更直观的性能分析。通过记录各个函数时间并在tensorboard展示,我们能在gpu kenel视图下观察到tensor core的利用率,如30%。此方法准确性高,但实现相对复杂。
在评估方法的优劣,方案三(torch profiler分析法)在准确性上优于方案一(FLOPS比值法)和方案二(throughout估计法)。在易用性上,方案二(throughout估计法)易于实现,方案三(torch profiler分析法)则需更多技术投入。
实现时,需注意以下细节:使用nload或iftop命令监控系统负载,查看NVLINK拓扑结构,确认显卡型号,测量训练时的flops,以及验证deepspeed环境配置。理解FLOPS与throughout的差异,关注通信开销,通过profiler分析训练瓶颈。