DeepSeek开源周第四弹之三!Profiling Data:训练V3/R1时计算与通信重叠策略的性能分析数据

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: DeepSeek开源的Profiling Data是基于PyTorch Profiler捕获的性能分析数据,帮助开发者优化深度学习模型的训练和推理过程,提升系统整体效率。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🎧 “深度学习性能优化利器!DeepSeek开源Profiling Data,一键定位性能瓶颈”

大家好,我是蚝油菜花。你是否也遇到过——

  • 👉 模型训练时间过长,却不知道哪里出了问题?
  • 👉 硬件资源利用率低,GPU和CPU闲置浪费?
  • 👉 分布式系统中通信开销大,影响整体效率?

今天要介绍的 DeepSeek Profiling Data,正是为解决这些问题而生!这个基于PyTorch Profiler的开源工具,能够捕获程序运行过程中的详细信息,帮助开发者快速定位性能瓶颈、优化资源分配,并提升分布式系统的通信效率。通过本文,你将了解如何下载、可视化和分析 DeepSeek Infra 提供的性能分析数据。

🚀 快速阅读

Profiling Data是DeepSeek开源的性能分析工具,基于PyTorch Profiler捕获程序运行过程中的详细信息。

  1. 核心功能:帮助开发者定位性能瓶颈、分析资源利用、优化通信模式。
  2. 技术原理:通过记录时间消耗、资源利用率、通信模式等关键指标,提供数据支持以优化代码实现和并行策略。

Profiling Data 是什么

Profile Data-cover

Profiling Data是DeepSeek开源的训练和推理框架的性能分析数据,基于PyTorch Profiler捕获的程序运行过程中的详细信息,用于分析和优化软件性能。下载后可以直接在Chrome或Edge浏览器中通过chrome://tracingedge://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. 可视化示例

以下是训练阶段的性能分析截图,展示了通信与计算的重叠情况:

profile-data-train

推理阶段的性能分析

推理阶段分为两个部分: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 可视化示例

以下是预填充阶段的性能分析截图:

profile-data-prefill

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 可视化示例

以下是解码阶段的性能分析截图:

profile-data-decode

注意: 解码阶段的性能分析数据尚未发布,预计将在近期提供。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 算法 编译器
【霍罗维兹数据结构】数据抽象化 | 时间复杂度 | 性能分析与性能度量
【霍罗维兹数据结构】数据抽象化 | 时间复杂度 | 性能分析与性能度量
89 0
|
机器学习/深度学习 传感器 算法
【直扩通信】直扩通信系统信号捕获性能分析附matlab代码
【直扩通信】直扩通信系统信号捕获性能分析附matlab代码
|
存储 大数据
【数据蒋堂】第41期:文件的性能分析
我们以前讲过硬盘的性能特征,主要是针对硬件层面进行分析的,现在我们来考虑软件层面的差异。 理论上讲,软件可以穿过操作系统直接进行磁盘扇区的访问,但实在太过于麻烦而几乎不会实践机会,这里就不考虑了,我们只讨论操作系统下的存储形式,而文件就是其中重要的存储形式。
2535 0
|
关系型数据库 MySQL 供应链
数据切分——Mysql分区表的建立及性能分析
        Mysql的安装方法可以参考:         http://blog.csdn.net/jhq0113/article/details/43812895                 Mysql分区表的介绍可以参考:         http://blog.
1153 0
|
5月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
365 1
|
5月前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
240 1
|
11月前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
280 0
|
7月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
6月前
|
Web App开发 监控 JavaScript
一些常用的 Vue 性能分析工具
【10月更文挑战第2天】
377 1

热门文章

最新文章