Profiling Large Language Model Trainings on the Grace Hopper Superchip using Nsight Systems

Karin Sevegnani, Senior Solutions Architect, NVAITC UK | GTC2025
Giuseppe Fiameni, Senior Solutions Architect, NVAITC EMEA

目录

  1. 作者简介
  2. 引言
  3. 用于 LLM 训练的 Grace Hopper 超级芯片
  4. NeMo 框架与 Nsight Systems
  5. 使用 Nsight Systems 对 LLM 进行性能分析
  6. 优化的最佳实践
  7. 结论
  8. 参考文献

作者简介

关于作者 (Giuseppe Fiameni)

关于作者 (Karin Sevegnani)

引言

现代应用集成了顺序计算和并行计算

CPU 和 GPU 对于加速计算都至关重要。现代应用程序的工作流通常在串行处理和并行处理之间交替进行。CPU 擅长串行处理,而 GPU 擅长并行处理。为了进一步加速计算并使其适用于各种工作负载,需要解决 CPU 瓶颈问题。

Page 4 - 现代应用工作流示意图,展示了串行和并行处理的结合,以及CPU和GPU的架构差异。
Page 4 - 现代应用工作流示意图,展示了串行和并行处理的结合,以及CPU和GPU的架构差异。

传统加速系统的挑战

传统的加速系统通过 PCIe 总线连接 CPU 和 GPU,存在以下挑战:
* PCIe 瓶颈:限制了 CPU-GPU 之间的通信。
* 内存访问:GPU 无法直接访问 CPU 内存。
* 编程复杂性:编程模型较为复杂。
* 能效比低:CPU 每瓦性能较低。

为了解决这些问题,需要一种新的芯片架构,旨在:
* 加速 CPU-GPU 数据传输。
* 实现 CPU 和 GPU 缓存的内存一致性。
* 简化编程模型。
* 提供更高的每瓦性能。

Page 5 - 传统PCIe架构与统一CPU/GPU内存架构的对比。
Page 5 - 传统PCIe架构与统一CPU/GPU内存架构的对比。

用于 LLM 训练的 Grace Hopper 超级芯片

NVIDIA GH200 Grace Hopper 超级芯片

GH200 专为加速计算和生成式 AI 的新时代而构建。
* 功能最全面的计算:在 CPU、GPU 或内存密集型应用中均能提供最佳性能。
* 易于部署和扩展:1 个 CPU : 1 个 GPU 的节点设计,易于为 HPC、企业和云环境进行管理和调度。
* 最佳性能功耗比/总拥有成本:针对不同工作负载最大化数据中心利用率和电源效率。

主要规格
* 900GB/s NVLink-C2C
* 624GB 高速内存
* 4 PF AI 性能
* 72 个 Arm 核心

Page 6 - NVIDIA GH200 Grace Hopper 超级芯片照片及其主要特性。
Page 6 - NVIDIA GH200 Grace Hopper 超级芯片照片及其主要特性。

全局访问所有数据

通过 NVLink C2C (Chip-to-Chip) 实现缓存一致性的访问,允许任一处理器访问任一物理内存。

Page 7 - Grace和Hopper之间通过NVLink C2C进行内存交互的示意图。
Page 7 - Grace和Hopper之间通过NVLink C2C进行内存交互的示意图。

为高达 175B 参数的模型提供最佳性能

下图比较了 GH200 NVL2 与 H200 NVL4 在不同大语言模型上的性能表现(以每秒输出 Token 数衡量)。
* LLAMA 70B: 性能提升 1.5 倍
* GPT3 175B: 性能提升 1.4 倍
* NVLLM 340B: 性能提升 1.1 倍

Page 8 - GH200 NVL2 和 H200 NVL4 在 LLAMA 70B, GPT3 175B, 和 NVLLM 340B 模型上的性能对比图。
Page 8 - GH200 NVL2 和 H200 NVL4 在 LLAMA 70B, GPT3 175B, 和 NVLLM 340B 模型上的性能对比图。

NeMo 框架与 Nsight Systems

NeMo 框架

NeMo 是一个端到端的框架,用于开发、定制和部署生成式 AI 模型。其主要组件包括:
* 数据准备 (Data Prep): NeMo Curator
* 训练和定制 (Training and Customization): NeMo Customizer, NeMo Evaluator
* 部署 (Deployment): NeMo Retriever, NeMo Guardrails, NVIDIA NIM

所有组件通过一个 API 网关进行访问。

Page 9 - NeMo框架的架构图,展示了从数据准备到训练和部署的完整流程。
Page 9 - NeMo框架的架构图,展示了从数据准备到训练和部署的完整流程。

Nsight Systems 系统性能分析器

Nsight Systems 是一个用于系统级应用程序算法调优的工具。

主要特性:
* 系统范围的应用程序算法调优。
* 支持多进程树。
* 定位优化机会。
* 在快速的 GUI 时间线上可视化数百万个事件。
* 发现 CPU 和 GPU 的空闲时间间隙。
* 在多个 CPU 和 GPU 之间平衡工作负载。
* 分析 CPU 算法、利用率、线程状态、GPU 流、内核、内存传输等。
* 支持命令行、独立应用和 IDE 集成。

支持平台:
* 操作系统: Linux (x86, Power, Arm SBSA, Tegra), Windows, MacOSX (host)
* GPU: Pascal+
* 产品文档: https://developer.nvidia.com/nsight-systems

使用 Nsight Systems 对 LLM 进行性能分析

Nsight CLI 性能分析开关

实验设置

机器设置

环境设置

性能分析任务:使用 LoRA 进行监督微调

nsys profile -y 360 -d 720 --trace=cuda,cudnn,cublas,osrt,nvtx --event-sample=system-wide -w true -c CudaProfilerApi -o sft_llama2_7B python ...

Nsight Systems 性能分析结果解读

初步分析:识别瓶颈

首先,将 .nsys-rep 文件导入 Nsight Systems 进行分析。

Nsight Systems 时间线视图,展示了CPU、CUDA硬件、内核、线程等活动的概览。
Nsight Systems 时间线视图,展示了CPU、CUDA硬件、内核、线程等活动的概览。

放大时间线后,我们可以观察到以下几点:
* 99.5% 内核 vs 0.5% 内存: 训练工作流是计算密集型 (compute-bound) 而非内存密集型 (memory-bound)
* 计算密集型: 当一个进程的性能主要受限于处理器(CPU或GPU)的速度时,该进程被认为是计算密集型。
* 内存密集型: 当一个进程的性能主要受限于内存访问(读取和写入数据)的速度而非计算时,该进程被认为是内存密集型。

Nsight Systems 放大视图,突出显示内核和内存活动。
Nsight Systems 放大视图,突出显示内核和内存活动。

进一步分析 CPU 和 GPU 的活动细节:

Nsight Systems 时间线中的 CPU 和 GPU 活动细节。
Nsight Systems 时间线中的 CPU 和 GPU 活动细节。

查看 OS 运行时库和 CUDA API 活动,可以发现 PyTorch Autograd 引擎的行为:

Nsight Systems 视图,展示了 OS 运行时库和 CUDA API 活动。
Nsight Systems 视图,展示了 OS 运行时库和 CUDA API 活动。

优化一:设置 num_workers=4 (之前为0)

设置 num_workers=4 后的 Nsight Systems 时间线视图。
设置 num_workers=4 后的 Nsight Systems 时间线视图。

优化二:分析卸载 (Offloading) 的影响

启用卸载后的 Nsight Systems 时间线视图及对比表格。
启用卸载后的 Nsight Systems 时间线视图及对比表格。

对比表格:

方面 不使用卸载 (Without Offloading) 使用卸载 (With Offloading)
GPU 内存使用 显著降低
GPU 内核利用率 更一致 由于同步而出现更多间隙
CPU 利用率 较低 由于激活管理而更高
同步开销 最小 增加

对比:PEFT (LoRA) vs. 未使用 PEFT

此页面比较了 LoRA 微调和未使用 PEFT (参数高效微调) 时的性能分析结果。左图为 LoRA 微调,右图为 未使用 PEFT

LoRA 微调与未使用 PEFT 的 Nsight Systems 时间线对比图。
LoRA 微调与未使用 PEFT 的 Nsight Systems 时间线对比图。

优化的最佳实践

混合精度训练 (Mixed Precision Training)

混合精度训练流程图。
混合精度训练流程图。

FP8 训练

FP8 数据格式 E5M2 和 E4M3 的图示。
FP8 数据格式 E5M2 和 E4M3 的图示。

结论

总结

感谢

参考文献