❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎧 “深度学习性能优化利器!DeepSeek开源Profiling Data,一键定位性能瓶颈”
大家好,我是蚝油菜花。你是否也遇到过——
- 👉 模型训练时间过长,却不知道哪里出了问题?
- 👉 硬件资源利用率低,GPU和CPU闲置浪费?
- 👉 分布式系统中通信开销大,影响整体效率?
今天要介绍的 DeepSeek Profiling Data,正是为解决这些问题而生!这个基于PyTorch Profiler的开源工具,能够捕获程序运行过程中的详细信息,帮助开发者快速定位性能瓶颈、优化资源分配,并提升分布式系统的通信效率。通过本文,你将了解如何下载、可视化和分析 DeepSeek Infra 提供的性能分析数据。
🚀 快速阅读
Profiling Data是DeepSeek开源的性能分析工具,基于PyTorch Profiler捕获程序运行过程中的详细信息。
- 核心功能:帮助开发者定位性能瓶颈、分析资源利用、优化通信模式。
- 技术原理:通过记录时间消耗、资源利用率、通信模式等关键指标,提供数据支持以优化代码实现和并行策略。
Profiling Data 是什么
Profiling Data是DeepSeek开源的训练和推理框架的性能分析数据,基于PyTorch Profiler捕获的程序运行过程中的详细信息,用于分析和优化软件性能。下载后可以直接在Chrome或Edge浏览器中通过chrome://tracing
或edge://tracing
打开,进行可视化分析。
Profiling Data记录了程序在执行过程中的时间消耗、资源利用率、通信模式等关键指标。在深度学习框架中,Profiling Data帮助开发者了解模型训练和推理过程中的计算与通信重叠策略、不同硬件资源的使用情况及潜在的性能瓶颈。基于对数据的分析,开发者可以优化代码实现、调整并行策略,提高系统的整体效率。
Profiling Data 的主要功能
- 性能瓶颈定位:基于记录程序运行过程中的时间消耗、资源使用情况等,帮助开发者快速定位性能瓶颈,例如哪些函数或模块占用过多时间或资源。
- 资源利用分析:分析CPU、GPU、内存等硬件资源的使用情况,帮助优化资源分配,避免资源浪费。
- 通信模式分析:在分布式系统中,分析节点之间的通信模式和延迟,优化通信策略,减少通信开销。
- 优化指导:为代码优化提供数据支持,帮助开发者选择合适的优化策略,例如并行化、缓存优化等。
Profiling Data 的技术原理
- 预填充(Prefilling):基于EP32和TP1(与DeepSeek V3/R1的实际在线部署一致),提示长度为4K,每个GPU的批次大小为16K个token。用两个微批次来重叠计算和全连接通信,确保两个微批次之间的注意力计算负载平衡。
- 解码(Decoding):基于EP128、TP1,提示长度为4K,每个GPU的批次大小为128个请求。类似于预填充,解码也使用两个微批次重叠计算和全连接通信。与预填充不同的是,解码阶段的全连接通信不会占用GPU SMs(Streaming Multiprocessors,流式多处理器)。在RDMA(Remote Direct Memory Access,远程直接内存访问)消息发出后,所有GPU SMs都会被释放,系统会计算完成后等待全连接通信完成。
如何运行 Profiling Data
性能分析数据 Profiling Data 是通过 PyTorch Profiler 捕获的,这些数据不仅展示了训练和推理阶段的通信与计算重叠策略,还提供了实际在线部署的配置参考,能够帮助你更好地理解框架的实现细节,并为你的开发工作提供有价值的参考。
性能分析数据的可视化
1. 下载性能分析数据
性能分析数据可以通过提供的链接下载,包含训练和推理阶段的 JSON 文件。
2. 使用 Chrome 或 Edge 浏览器进行可视化
下载完成后,您可以使用 Chrome 浏览器访问 chrome://tracing
或使用 Edge 浏览器访问 edge://tracing
,将 JSON 文件拖入页面即可查看详细的性能分析结果。
训练阶段的性能分析
1. 数据说明
训练阶段的性能分析数据展示了 DualPipe
中单个前向和后向计算块的通信与计算重叠策略。每个计算块包含 4 层 MoE(Mixture of Experts)。
2. 配置参数
- EP(专家并行度): 64
- TP(张量并行度): 1
- 序列长度: 4K
- PP(管道并行)通信: 为简化分析,未包含在性能分析中。
3. 可视化示例
以下是训练阶段的性能分析截图,展示了通信与计算的重叠情况:
推理阶段的性能分析
推理阶段分为两个部分:Prefilling(预填充)和 Decoding(解码)。以下是各部分的详细说明。
1. Prefilling(预填充)
1.1 数据说明
预填充阶段的性能分析数据展示了在实际在线部署中的配置,重点分析了计算与通信的重叠策略。
1.2 配置参数
- EP(专家并行度): 32
- TP(张量并行度): 1
- 提示长度: 4K
- 每 GPU 批量大小: 16K tokens
1.3 重叠策略
在预填充阶段,使用两个微批次(micro-batches)来重叠计算和全对全通信(all-to-all communication),同时确保注意力计算的负载在两个微批次之间保持平衡。
1.4 可视化示例
以下是预填充阶段的性能分析截图:
2. Decoding(解码)
2.1 数据说明
解码阶段的性能分析数据展示了在实际在线部署中的配置,重点分析了全对全通信的实现细节。
2.2 配置参数
- EP(专家并行度): 128
- TP(张量并行度): 1
- 提示长度: 4K
- 每 GPU 批量大小: 128 请求
2.3 重叠策略
解码阶段同样使用两个微批次来重叠计算和全对全通信。与预填充阶段不同的是,解码阶段的全对全通信不会占用 GPU 的流式多处理器(SMs)。在 RDMA 消息发出后,所有 GPU 的 SMs 都会被释放,系统会在计算完成后等待通信完成。
2.4 全对全通信实现
有关全对全通信的实现细节,请参考 DeepEP
。
2.5 可视化示例
以下是解码阶段的性能分析截图:
注意: 解码阶段的性能分析数据尚未发布,预计将在近期提供。
资源
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦