跳到主要内容
AI 系统性能工程方法论

第4章:分布式通信与 I/O 优化

Magnum IO 全景、计算与通信 overlap 四种武器、RDMA + GPUDirect、NCCL 算法与环境变量手册、SHARP 在网计算、NIXL 推理时代新玩家、KV-Cache 卸载——把 goodput 第二大杀手按死

Magnum IO NCCL SHARP NIXL RDMA GPUDirect KV-Cache InfiniBand 通信优化

第 1 章我们说过 Goodput 的”四大杀手”:通信等待、数据饥饿、故障重启、算法低效。OS 层调优(第 3 章)已经把”数据饥饿”按下去了——通信就是下一个最值得攻的山头。在万卡集群里,AllReduce 占迭代时间 20-30% 是常态(第 2 章数据);把它压到 5% 以下,直接对应一个数量级的成本节省。本章把通信这条链路从最上层(NCCL 选什么算法)到最底层(IB HCA 中断绑核)拆开:Magnum IO 是什么、计算与通信怎么 overlap、RDMA 怎么绕过 CPU、NCCL 该调哪些环境变量、SHARP 在做什么、NIXL 为什么是推理时代的新玩家。读完这章,你能回答一个具体集群上”我的 AllReduce 慢,从哪查起”。

📑 目录


1. 通信:goodput 的第二大杀手

1.1 几个数据感受规模

  • 一个 70B 模型 BF16 训练,每步 AllReduce 约 140 GB 梯度,512 卡集群上每秒发生几次
  • 跨节点 IB 网络下,AllReduce 通常占迭代时间 20-30%(第 2 章 NVIDIA 实测)
  • 同样的 job 放进单 NVL72 机柜内 NVLink 全互联,AllReduce 占比降到 2-3%
  • PD 解耦推理(后面第 9 章会展开)需要在 prefill 和 decode 之间搬运几十 GB KV-Cache,对 P2P 跨节点带宽极度敏感

🌟 关键事实:训练侧通信主要是 collective(AllReduce / AllGather / ReduceScatter),推理侧通信主要是 P2P(KV-Cache 在不同 GPU 间搬运)。这两类需求决定了 NVIDIA 推出了两套通信库:NCCL(2017+) 给训练用,NIXL(2025) 给推理用。

1.2 性能工程师的核心命题

你不需要写自己的通信库——这事 NCCL 和 NIXL 已经做好。你的工作是:

工作内容需要懂什么
让通信和计算 overlapCUDA streams、PyTorch DDP bucketing
选对算法和路径NCCL 的 Ring/Tree/CollNet/PAT 各自适用场景
把硬件资源用满RDMA、GPUDirect、SHARP 的开关与诊断
跨集群规模时不撞墙NCCL 环境变量调参、NUMA-aware 中断绑定

互补:这一章侧重”通信层本身怎么调”。并行策略(数据并行、张量并行、流水线并行的选择)留给模块三和模块零第 8 章——通信层是底座,并行策略是上层建筑。


2. NVIDIA Magnum IO 全景

NVIDIA 把所有 I/O 加速技术统一在一个伞形品牌叫 Magnum IO。这是个总称,具体由四块拼起来:

┌─────────────────────────────────────────────────┐
│             CUDA / PyTorch / 用户应用             │
├─────────────────────────────────────────────────┤
│                  Magnum IO                       │
│ ┌─────────────┬─────────────┬──────────────┬──┐ │
│ │ Storage I/O │ Network I/O │ In-Network    │  │ │
│ │             │             │ Compute       │  │ │
│ │ GPUDirect   │ GPUDirect   │ SHARP         │I │ │
│ │ Storage     │ RDMA        │ BlueField DPU │/O│ │
│ │ BlueField   │ NCCL / NIXL │               │管│ │
│ │ SNAP        │ NVSHMEM/UCX │               │理│ │
│ │             │ HPC-X       │               │  │ │
│ └─────────────┴─────────────┴──────────────┴──┘ │
└─────────────────────────────────────────────────┘
        │              │             │
   ┌────▼───┐  ┌──────▼─────┐  ┌────▼──────┐
   │  NVMe  │  │ NVLink/IB  │  │ NVSwitch  │
   │  SSD   │  │ /Ethernet  │  │           │
   └────────┘  └────────────┘  └───────────┘
子模块主要技术解决什么问题
Storage I/OGPUDirect Storage (GDS)、BlueField SNAP数据从 NVMe / 远程存储直入 GPU 内存,不绕 CPU
Network I/OGPUDirect RDMA、NCCL、NIXL、NVSHMEM、UCXGPU 之间 / GPU 跨节点的高速通信
In-Network ComputeSHARP、BlueField DPU把 AllReduce 等集合操作下沉到交换芯片
I/O ManagementNetQ、UFM(Unified Fabric Manager)监控 + 故障诊断 + 拓扑管理

🧠 关键洞察:Magnum IO 的核心思想不是”造一个新通信库”,而是把 CPU 从所有数据搬运路径里赶出去——CPU 只负责发起,数据走 GPU↔GPU、GPU↔NVMe、GPU↔交换机的直连路径。


3. 计算与通信 overlap:四种武器

3.1 为什么 overlap 是生死线

不 overlap 的时间线(单步迭代):
[ Compute ──── ] [ Comm ──── ] [ Compute ──── ] [ Comm ──── ]
←────── 50% 时间在等通信 ──────→

overlap 的时间线:
[ Compute ──── ────────── ──── ────────── ──── ]
            [ Comm ────] [ Comm ────] [ Comm ──]
←──── 通信被藏在计算背后 ────→

🌟 结论:在通信密集型分布式训练里,通信能不能藏在计算后面,直接决定 goodput 上限。能 overlap 的两步并发跑接近”白送”50%。

3.2 武器一:CUDA Streams

CUDA stream 是 GPU 上的”独立工作队列”。两个不同 stream 的 kernel 只要不依赖,就真并发执行。NCCL/NIXL 就是把通信放在专用 stream 上,和计算 stream 并行跑。

# 概念示意 — 框架内部已经做好,你不用手写
compute_stream = torch.cuda.Stream()
comm_stream = torch.cuda.Stream()

with torch.cuda.stream(compute_stream):
    forward_pass()                    # GPU 计算
with torch.cuda.stream(comm_stream):
    dist.all_reduce_async(grad)       # 通信并行进行

3.3 武器二:Bucketing(梯度桶化)

PyTorch DDP 默认行为:把 N 个梯度 tensor 攒成一个 bucket 再发。原因有二:

  1. 小消息合并成大消息——RDMA 在大消息上吞吐高
  2. 能在反向传播过程中流式触发——梯度算出一桶就发一桶,不等整个反向结束
反向传播 layer N → ... → layer 2 → layer 1
       ↓ 梯度产生顺序
    bucket3 ↘
    bucket2 ↘  → AllReduce 流水线
    bucket1 ↘

📍 bucket size 调参:PyTorch DDP bucket_cap_mb 默认 25 MB。大模型可以调到 50-100 MB(更大消息更高带宽)。但太大会导致最后一个 bucket 等太久,反而失去 overlap 机会。

3.4 武器三:Gradient Accumulation(梯度累积)

每 K 步才同步一次,把通信频率降到 1/K。代价是 effective batch size 变成 K 倍——这通常是好事(大 batch 一般训练更稳)。

📍 使用建议:大模型训练 + 通信瓶颈 → 优先开 gradient accumulation,通信频次降下来后再考虑其它优化。

3.5 武器四:压缩(Gradient Compression)

把 fp32/fp16 梯度量化成 fp8、int8 甚至 1-bit,通信量减半到几十倍。

方法通信压缩比精度损失
FP16 → FP8可控,常用
1-bit Adam~32×需要算法配合
TopK + error feedback10-100×需要 careful tuning

互补:压缩不是免费——压缩/解压本身耗 GPU 时间。值不值得做要测,小集群可能反而变慢。

3.6 四种武器组合使用

实战中通常全部一起开:

DDP 默认行为:
  ✅ Streams overlap
  ✅ Bucketing(bucket_cap_mb=25)
  ⏸ Gradient accumulation(自己设)
  ⏸ Gradient compression(高级,需要 plugin)

🌟 典型收益:正确开启 overlap 通常能把”通信占比 30%“压到 “5-10%“——是分布式训练的最大单点优化机会。


4. RDMA + GPUDirect:绕过 CPU 的高速路

4.1 RDMA 是什么

Remote Direct Memory Access:远端机器内存↔本地内存,不经 CPU——网卡直接读写远端内存。

维度传统 TCP/IPRDMA
CPU 参与每包处理✅ 是❌ 不参与
系统调用开销极低(zero-copy)
典型延迟(小消息)50-100 μs< 10 μs
100 Gbps 链路实际吞吐~70-80 Gbps(CPU 瓶颈)接近线速

🌟 关键事实:在 100 Gbps 链路上,RDMA 延迟约为 TCP 的 1/5-1/10——这对小梯度同步、参数广播是生死线。

4.2 RDMA 的两种主流硬件

类型协议代表硬件
InfiniBand原生 RDMANVIDIA Quantum 系列 + ConnectX HCA
RoCE(RDMA over Converged Ethernet)RDMA-on-Ethernet主流 100/200 Gbps Ethernet HCA

选哪个:大集群训练首选 IB(更可控、专用网络);如果机房已有以太网生态,RoCE 是现实选择(配合 Spectrum-X 等优化交换机)。

4.3 GPUDirect RDMA

普通 RDMA 是”远端 CPU RAM ↔ 本地 CPU RAM”。GPUDirect RDMA 进一步:让 NIC 直接读写 GPU HBM。

没有 GPUDirect RDMA:
  远端 GPU HBM → 远端 CPU RAM(D2H copy)→ 网络 → 本地 CPU RAM → 本地 GPU HBM(H2D copy)

有 GPUDirect RDMA:
  远端 GPU HBM ───── NIC ───── 网络 ───── NIC ───── 本地 GPU HBM

🌟 影响:省两次 D2H/H2D copy。延迟和带宽都改善 1.5-2×。

4.4 没用 RDMA 怎么办:Ethernet 调优

如果只能跑普通以太网,把这些 sysctl 调好至少能拿到接近峰值带宽:

# /etc/sysctl.conf
net.core.rmem_max = 268435456           # 256 MB 接收 buffer 上限
net.core.wmem_max = 268435456           # 256 MB 发送 buffer 上限
net.ipv4.tcp_rmem = 4096 87380 268435456
net.ipv4.tcp_wmem = 4096 65536 268435456

加上 jumbo frame(MTU=9000)和合适的 congestion control(CUBIC 在管控网络下足够;高延迟跨 region 链路可考虑 BBR)。

📍 不要忘:RDMA 也好、TCP 也好,HCA 中断要绑到同 NUMA 的 CPU 核(第 3 章的 IRQ affinity 内容)——否则跨 NUMA 中断处理会让前面所有优化打折。


5. NCCL:分布式训练的”心脏”

5.1 NCCL 在做什么

NVIDIA Collective Communications Library(读作”nickel”)—— GPU 集合通信库。底层封装了 NVLink、NVSwitch、IB、RoCE 等所有传输方式,对上层暴露统一的 API:AllReduceAllGatherReduceScatterBroadcastSend/Recv

PyTorch、JAX、Megatron、DeepSpeed —— 全都走 NCCL。

5.2 NCCL 的拓扑感知

NCCL 启动时会自动探测 GPU 互联拓扑:

  • 同节点内 GPU → 走 NVLink/NVSwitch
  • 跨节点 → 走 IB/RoCE(如果支持 RDMA)
  • 没有 RDMA → 退回到 TCP socket

NCCL 还会自动选传输路径:同一个 AllReduce 在 NVL72 整柜内可能用一种算法,跨节点用另一种。作为用户你不用手动指定 NVLink 还是 IB——除非默认选择有问题。

5.3 NCCL 的四种 AllReduce 算法

不同消息大小、不同拓扑下最优算法不一样。NCCL 提供 4 种,可以用 NCCL_ALGO 强制选:

算法工作方式适合场景
RingGPU 排成圆环,每步只和左右邻居交换大消息、拓扑均匀(同代 GPU、对称带宽)
Tree二叉树聚合,每步合并一对小消息、跨节点延迟敏感
CollNet分多棵小树并行聚合 + 利用专用高速链路大集群、有 SHARP 支持
PAT(Parallel Aggregated Tree)多棵小树并发铺满带宽超大集群、负载均衡敏感

NCCL 默认会根据消息大小自动切换——通常不需要你手动指定。

🍎 直觉比喻:Ring 像”接力赛跑”(节奏稳但慢起);Tree 像”金字塔会议”(快速汇总);CollNet/PAT 像”多个小组同时开”(铺满带宽)。


6. NCCL 调优:环境变量速查表

NCCL 通过环境变量调参,不需要改代码。下面是性能工程师必背的 10 个:

变量作用何时调
NCCL_DEBUG=INFO打印 NCCL 启动信息(选了哪种算法、用什么传输)永远先开,看 NCCL 实际选择
NCCL_DEBUG_SUBSYS=ALL更详细的子系统日志排查路径选择问题
NCCL_ALGO=Ring,Tree,CollNet,PAT强制算法默认不优时手动指定
NCCL_PROTO=LL,LL128,Simple协议选择,LL 是低延迟,Simple 是高吞吐小消息选 LL,大消息选 Simple
NCCL_NTHREADS=N每 GPU 用几个 CPU 线程做网络处理CPU 不饱和时调高
NCCL_BUFFSIZE=N通信 buffer 大小大梯度场景可调大
NCCL_IB_HCA=mlx5_0,mlx5_1指定用哪些 IB HCA多卡多 NIC 时显式指定
NCCL_IB_TIMEOUTIB 超时阈值网络不稳时调大避免误判
NCCL_SOCKET_IFNAME=eth0退回到 TCP 时用哪个网卡多网卡机器必设
NCCL_LL_THRESHOLDLL 协议消息大小阈值微调小消息延迟

6.1 推荐排查流程

NCCL 慢了别瞎调,按这个顺序:

1. NCCL_DEBUG=INFO 看 NCCL 启动日志:
   ├─ 看到了 NVLink / IB?   → 路径正常
   ├─ 退回了 TCP/Sockets?    → 检查 RDMA 配置 / NCCL_IB_HCA
   └─ 算法是预期的吗?         → 调 NCCL_ALGO

2. nvidia-smi topo -m 看物理拓扑
   ├─ GPU/NIC 同 NUMA?      → 不是的话回到第 3 章查 K8s topology manager
   └─ 看到 NV12 / NV4?      → 确认 NVLink 工作

3. 用 nccl-tests 跑基准
   ├─ all_reduce_perf -b 8 -e 1G -f 2 -g 8
   └─ 对比理论带宽,差距 > 30% 找问题

4. 才轮到调 NCCL_NTHREADS / NCCL_BUFFSIZE 等"细参数"

📍 常见踩坑:很多团队 “NCCL 慢” 的根因 90% 在前 3 步就能定位——直接调环境变量是最后一步,不是第一步。

6.2 NCCL Profiler Plugin(2025+)

NCCL 新增了 profiler plugin API,可以把 NCCL 内部事件(每次 AllReduce 起止、bucket 拆分、传输调度)接入 PyTorch Kineto / Nsight。

NCCL_PROFILER_PLUGIN=/path/to/plugin.so

🧠 关键洞察:大集群 NCCL 性能问题(某张卡拖慢全 job)以前是黑盒——profiler plugin 让你能直接看到”是哪一卡哪一次 AllReduce 慢了”。


7. SHARP:在交换机里做 AllReduce

7.1 SHARP 的 idea

传统 AllReduce 流程:每个 GPU 发数据到邻居 → 邻居加和 → 再发下一跳 → 数据来回穿网络好几次。

SHARP(Scalable Hierarchical Aggregation and Reduction Protocol):在 NVSwitch / IB switch 芯片里直接做加法。GPU 各自发出数据,交换机算好和直接广播回所有 GPU——一次往返完事。

没有 SHARP:                       有 SHARP:
GPU0 → GPU1 → GPU2 → ... → 加和    GPU0,1,2,... → switch (在网内加和) → 广播回所有 GPU
└── 数据来回传 N 次 ──┘             └── 数据传 1.5 次 ──┘

🌟 NVIDIA 实测:大型 AllReduce 用 SHARP 2-5× 加速(消息越大、节点越多,加速越显著)。

7.2 怎么开启 / 验证

SHARP 不是软件库,是硬件特性 + 固件 + 驱动的组合。流程:

# 1. 检查硬件是否支持
ibv_devinfo -d <device>      # 看 SHARP 相关字段

# 2. NCCL 默认会自动探测并使用 SHARP,无需手动开启
NCCL_DEBUG=INFO 启动后看日志里是否提到 SHARP

# 3. 排障时可以禁用
NCCL_SHARP_ENABLE=0

📍 常见误区:“我集群 AllReduce 比预期慢” → 一查发现 SHARP 没启用(可能是 IB 子网配置问题、Quantum-2 fabric 没装 SHARP daemon 等)。SHARP 是免费的 2-5× 加速,丢了可惜。


8. NIXL:推理时代的 KV-Cache 搬运工

8.1 推理为什么需要新通信库

NCCL 是为 collective(N 张卡都参与)设计的——AllReduce、AllGather 这种。但推理服务的通信主导模式是 P2P(一张卡传给另一张卡):

推理场景通信特征
PD 解耦(prefill/decode 分离)prefill GPU → decode GPU 传 KV-Cache(几十 GB)
MoE expert routingrouter 把 token 发给特定 expert GPU
多机推理 KV 共享长对话 KV-Cache 跨节点缓存
KV-Cache 卸载到 NVMeGPU ↔ SSD 大消息

这些场景下 NCCL 用起来很别扭——它是为同步 collective 设计的,P2P 异步传输不是它的强项。

8.2 NIXL 是什么

NVIDIA Inference Xfer Library——2025 年推出的推理专用通信库:

  • 设计目标:任意 GPU 到任意 GPU、跨节点、跨 rack 的高速 P2P
  • 自动选最快路径:NVLink → NVSwitch → IB → RDMA → GPUDirect Storage(到 NVMe)
  • 零拷贝优先,避免任何不必要的 host bounce buffer
NIXL Core
  ├─ Metadata 管理(谁在哪、要去哪)
  ├─ Memory 管理(GPU HBM / DRAM / NVMe / S3)
  └─ Backend 适配(UCX / GDS / 自定义)

🧠 关键洞察:NIXL 不取代 NCCL——它是互补的。训练继续用 NCCL,推理引擎(NVIDIA Dynamo / vLLM 高级形态)开始用 NIXL。

8.3 NIXL 的底层依赖

组件作用
UCX(Unified Communication X)底层抽象层,适配 RDMA/IB/RoCE/TCP/NVLink
GPUDirect RDMA跨节点 GPU↔GPU 直传
InfiniBand GPUDirect Async (IBGDA)GPU 不等 CPU 就能直接发起传输,大幅降延迟
GPUDirect StorageGPU↔NVMe 直接 DMA

🌟 影响:NVIDIA 公布的 Dynamo + NIXL 实测,跨节点 LLM 推理吞吐最高 30× 提升——主要来自 KV-Cache 跨节点搬运变快。

8.4 性能工程师该知道的事

短期内你可能用不到 NIXL 的直接 API,但你需要知道:

  • 如果在用 Dynamo / vLLM 0.7+,KV-Cache 跨节点搬运多半已在走 NIXL
  • 如果你在做 PD 解耦推理,NIXL 是必须了解的(模块零第 9 章会展开)
  • 如果在做 长对话 / Agent / Memory 的多 turn 推理,KV-Cache 卸载到 NVMe 是 NIXL 的杀手用例

9. 存储 I/O:GPUDirect Storage 与 KV 卸载

9.1 GPUDirect Storage(GDS)

传统数据加载路径:NVMe → CPU RAM → GPU HBM(两次拷贝)。

GDS 把它压成:NVMe → GPU HBM(一次 DMA,CPU 不参与数据搬运)。

维度传统路径GDS
CPU RAM 占用高(buffer)极低
CPU 参与度数据 copy CPU 重负载几乎不参与
实测 NVMe 读~3-5 GB/s 单盘接近 7 GB/s 单盘(满速)

🍎 直觉比喻:GDS 像让快递员”直接送进你家”,而不是”先放门卫处再让你下楼搬”。

9.2 KV-Cache 卸载到 NVMe

长对话 / Agent 系统的痛点:GPU HBM 装不下所有 session 的 KV-Cache

NIXL + GDS 的组合让 KV-Cache 可以”溢出到 NVMe”——session 闲置时把 KV 写到 SSD,需要时再读回 GPU HBM。

🌟 影响:有效内存容量 = HBM + NVMe。一台机器能服务的并发对话数翻数倍,前提是 NVMe 带宽 + GDS 能 hide latency。

9.3 分布式文件系统的启示:DeepSeek 3FS

DeepSeek 在 2025 Open-Source Week 开源的 3FS(Fire-Flyer File System)——专为 AI 训练/推理设计的分布式文件系统。核心思想:

  • 充分利用 NVMe + RDMA——每个存储节点的 SSD 通过 RDMA 直接被 GPU 访问
  • 训练数据流KV-Cache 卸载 用同一个底座
  • 为大模型 IO 模式优化(顺序大块读、随机小写)

🧠 启示:存储不是”GPU 的远房亲戚”,在大集群里它和通信同等重要。性能工程师接触新集群时先看存储拓扑——本地 NVMe 还是远端 Lustre?有没有 GDS?这是早期决定 goodput 上限的因素。


10. 性能工程师的通信调优 5 步法

收到一个集群”AllReduce 慢”或”分布式训练效率低”的问题,按这个顺序:

Step 1. 看 NCCL_DEBUG=INFO 日志
  ├─ 路径正确吗?(NVLink / IB / Sockets)
  ├─ 算法默认对吗?
  └─ 有没有 fall-back 到 TCP?

Step 2. 看物理拓扑
  ├─ nvidia-smi topo -m: GPU/NIC NUMA 关系
  ├─ ibstat:IB 端口活跃 / 速率
  └─ 是否启用 GPUDirect RDMA / SHARP?

Step 3. 跑 nccl-tests 基线
  ├─ all_reduce_perf 对比理论带宽
  └─ 差距 > 30% 找路径 / 拓扑 / SHARP 问题

Step 4. 看 overlap 是否生效
  ├─ Nsight Systems:计算和通信 stream 是否重叠
  ├─ PyTorch Profiler:bucket size 是否合理
  └─ 大 batch 慢 → 调 bucket_cap_mb / gradient accumulation

Step 5. 才轮到细调
  ├─ NCCL_NTHREADS / NCCL_BUFFSIZE
  ├─ 压缩 / 1-bit Adam
  └─ 自定义 plugin

🌟 关键准则:80% 的问题在 Step 1-3 就能定位。直接跳到 Step 5 调 NCCL 细参数往往是徒劳——根本路径不对,调谁也没用。

互补:整套方法论的另一半是”会用 profiler 看到瓶颈位置”——下一章(第 5 章 CUDA 编程、Profiling 与 Debugging)接力。


✅ 自我检验清单

  • 训练 vs 推理通信差异:能解释为什么 NCCL 不能完美覆盖推理 P2P 场景,以及 NIXL 为什么 2025 年才出现
  • Magnum IO 四块:能默写 Storage I/O / Network I/O / In-Network Compute / I/O Management 各代表技术
  • Overlap 四种武器:能区分 CUDA streams / bucketing / gradient accumulation / compression,各举一个适用场景
  • RDMA vs TCP:能说出延迟 / CPU 参与度 / 实际吞吐三方面差异
  • GPUDirect RDMA 价值:能用一张图解释它省掉的两次 D2H/H2D copy
  • NCCL 四种算法:Ring / Tree / CollNet / PAT 各自适用场景
  • NCCL 排障 3 步:NCCL_DEBUG=INFO → topo -m → nccl-tests
  • SHARP 在做什么:能解释”在网计算”如何把 AllReduce 加速 2-5×
  • NIXL 与 NCCL 关系:互补不替代,推理 P2P 用 NIXL,训练 collective 用 NCCL
  • GPUDirect Storage:能解释为什么它能让单 NVMe 读取从 ~3-5 GB/s 提到接近线速
  • 5 步通信调优:能复述”日志 → 拓扑 → 基线 → overlap → 细参”的顺序

📚 参考资料

蓝本书籍

  • AI Systems Performance Engineering: Optimizing Hardware, Software, and Algorithms for Efficient Training and Inference —— Chris Fregly, O’Reilly Media, 2025 (Early Release):learning.oreilly.com —— 本章 Magnum IO / NCCL / NIXL / SHARP 框架来自此书 Ch4

官方文档

关键论文 / 报告

  • NCCL: NVIDIA Collective Communications Library(NVIDIA 多份白皮书) —— 算法和拓扑感知细节
  • PAT: Parallel Aggregated Tree(NVIDIA, 2024) —— 大规模 AllReduce 算法演进
  • DeepSeek 3FS Open-Source Week 2025:github.com/deepseek-ai/3FS
  • DeepSeek DeepEP:github.com/deepseek-ai/DeepEP —— MoE All-to-All 通信优化

工具

行业讨论

  • PyTorch DDP 内部机制详解:pytorch.org/docs/stable/notes/ddp.html
  • vLLM PD 解耦实战 —— 模块四第 6 章详细讨论
  • 方佳瑞:LLM 推理通信优化深度解析 —— 知乎专栏

下一章预告(第 5 章:CUDA 编程、Profiling 与 Debugging):OS 调好了、通信也按下来了——剩下的瓶颈通常在 kernel 层。下一章带你看到问题:Nsight Systems / Compute、cuda-gdb、compute-sanitizer 的实战手册。