上周五,DeepSeek 发推说本周将是开源周(OpenSourceWeek),并将连续开源五个软件库。
昨天,他们开源了第一个代码库 ——FlashMLA。这是一款用于 Hopper GPU 的高效型 MLA 解码核,仅用了 24 小时就达到了接近 8k 的 star 量。
今天 DeepSeek 继续开源底层架构的创新,今天开源的项目是首个用于 MoE 模型训练和推理的 EP 通信库 DeepEP。
在分布式系统中(如多 GPU 训练环境),所有处理单元之间需要高效地传递数据。在 MoE 中,这点尤为重要,因为不同「专家」需要频繁交换信息。并且 MoE 模型容易在「专家并行」中出现负载不均衡,导致每个「专家」分到的算力不均,不重要的「专家」难以发挥应有的性能。
此次开源的 DeepEP 做到了:
1. 高效优化的 All-to-All 通信
2. 支持 NVLink 和 RDMA 的节点内 / 跨节点通信
3. 训练及推理预填充阶段的高吞吐量计算核心
4. 推理解码阶段的低延迟计算核心
5. 原生支持 FP8 数据分发
6. 灵活控制 GPU 资源,实现计算与通信的高效重叠
高效通信减少了数据传输的瓶颈,计算核心的优化提升了处理速度,灵活的资源调度让计算和通信不互相等待。
MLA 和 MoE 架构改进可以说是 DeepSeek 的两大重要创新点。昨天是对 MLA 解码内核的优化,今天就公开了另一张王牌 MoE 如何高效通信和并行处理,DeepSeek 可真是太 Open 了!
项目链接:https://github.com/deepseek-ai/DeepEP
至于火到了什么程度?
机器之心文章还没写完,DeepEP 的 Star 量已超 1000 了:
该项目开源后,有人评价说:DeepSeek 为 MoE 模型所达到的优化水平令人印象深刻,这类模型因其规模和复杂性而充满挑战性。DeepEP 能够利用 NVLink 和 RDMA 等尖端硬件技术,并支持 fp8 精度,以如此精确的方式处理这些挑战,简直是突破性的成就。
还有人说,「NVLink 和 RDMA 支持对大规模 MoE 模型来说是革命性的突破。看来 DeepSeek 再次在 AI 基础设施的可能性方面推动了技术边界。」
之前,有人曾质疑 DeepSeek-R1 只是通过模型蒸馏来实现其性能,而非真正的技术创新。还有人怀疑 DeepSeek 低报了训练所需的 GPU 数量。开源周发布的这些内容可以从某些角度证明,DeepSeek 确实通过技术创新实现了真正的训练效率提升和成本降低。
DeepEP 是什么?
DeepEP 是一个专为混合专家系统(MoE)和专家并行(EP)定制的通信库。它提供高吞吐量和低延迟的 all-to-all GPU 内核, 这些内核也被称为 MoE 分发和合并。该库还支持低精度操作,包括 FP8。
为了与 DeepSeek-V3 论文中提出的 group-limited gating 算法保持一致,DeepEP 提供了一套针对非对称域带宽 forwarding 进行优化的内核,例如从 NVLink 域到 RDMA 域的数据 forwarding。这些内核提供高吞吐量,适用于训练和推理预填充(prefilling)任务。此外,它们还支持 SM(流式多处理器,Streaming Multiprocessors)数量控制。
对于对延迟敏感的推理解码,DeepEP 包含一套使用纯 RDMA 的低延迟内核,以最小化延迟。该库还引入了一种 hook-based 的通信 - 计算重叠方法,不占用任何 SM 资源。
注意:本库中的实现可能与 DeepSeek-V3 论文有一些细微差异。
DeepEP 性能如何?
具有 NVLink 和 RDMA forwarding 的常规内核
DeepSeek 在 H800 上测试常规内核(NVLink 最大带宽约 160 GB/s),每个 H800 连接到一个 CX7 InfiniBand 400 Gb/s RDMA 网卡(最大带宽约 50 GB/s)。他们遵循 DeepSeek-V3/R1 预训练设置(每批次 4096 个 token,7168 隐藏维度,top-4 组,top-8 专家,FP8 分发和 BF16 合并)。
具有纯 RDMA 的低延迟内核
DeepSeek 在 H800 上测试低延迟内核,每个 H800 连接到一个 CX7 InfiniBand 400 Gb/s RDMA 网卡(最大带宽约 50 GB/s)。他们遵循典型的 DeepSeek-V3/R1 生产设置(每批次 128 个 token,7168 隐藏维度,top-8 专家,FP8 分发和 BF16 合并)。
注意事项
-
为了极致性能,DeepSeek 发现并使用了一个未记录在文档中的 PTX 指令:ld.global.nc.L1::no_allocate.L2::256B。这个指令会导致一个未定义的行为:使用非一致性只读 PTX 修饰符「.nc」访问易变的 GPU 内存。但在 Hopper 架构上,通过「.L1::no_allocate」已测试确保了正确性,且性能会大幅提升。如果你发现内核在某些其他平台上不 work,你可以在 setup.py 中添加 DISABLE_AGGRESSIVE_PTX_INSTRS=1 来禁用此功能,或提交 issue。
-
为了在你的集群上获得更好的性能,DeepSeek 建议运行所有测试并使用最佳的自动调优配置。默认配置是针对 DeepSeek 内部集群优化的。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。