Skip to content

分布式计算 — 练习

练习 1:并行策略选择

为以下模型和硬件配置选择最佳并行策略:

  1. LLaMA-70B,4× A100-80GB,在线服务
  2. LLaMA-405B,2 节点 × 8× H100,在线服务
  3. DeepSeek-V3 (671B MoE),8 节点 × 8× H100
  4. LLaMA-7B,8× A100-40GB,高并发批量推理
参考答案
  1. TP=4:70B FP16 约 140GB,4×80GB = 320GB,足够。TP=4 在单节点内 NVLink 通信效率高。

  2. TP=8 + PP=2:405B FP16 约 810GB。TP=8 在节点内,PP=2 跨节点。每节点需存储约 405GB(一半模型),8×80GB=640GB 够用。

  3. TP=8 + EP=64(或其他组合):DeepSeek-V3 是 MoE 模型,256 个路由专家。EP 将专家分布到所有 GPU。TP=8 处理共享参数。

  4. DP=8:7B 模型单卡可运行。DP=8 可以同时处理 8 倍的请求,最大化吞吐。

练习 2:通信量分析

分析 TP=4 的通信量:

  • 模型 hidden_size = 8192
  • 32 层 Transformer
  • FP16
  1. 每层的 All-Reduce 通信量是多少?
  2. 单步推理的总通信量?
  3. 如果使用 NVLink(600 GB/s),通信延迟是多少?
参考答案
  1. 每个 All-Reduce:hidden_size × 2 bytes (FP16) = 16384 bytes。Ring All-Reduce 需要 2 × (N-1)/N × data_size ≈ 2 × 3/4 × 16384 = 24576 bytes ≈ 24 KB。每层 2 次 All-Reduce ≈ 48 KB。

  2. 32 层 × 48 KB = 1536 KB ≈ 1.5 MB per step。

  3. 1.5 MB / 600 GB/s ≈ 2.5 μs。实际延迟还包括 kernel launch 和同步开销,约 10-50 μs。

拓展挑战

  • 阅读 vllm/distributed/parallel_state.py,理解进程组管理
  • 分析 kv_transfer/ 目录的 KV 缓存传输实现
  • 研究 Elastic EP(弹性专家并行)的动态负载均衡