SimAI 全栈通信仿真系统
SimAI 是阿里云基础设施团队开发的全栈 LLM 训练/推理仿真平台,论文发表于 NSDI'25。官方宣称与真实硬件 98.1% 对齐(1.9% 平均误差)。在 ASTRA-sim 基础上扩展开发,重点强化了集合通信建模和网络仿真精度。
GitHub: https://github.com/aliyun/SimAI
整体架构
SimAI 采用四层全栈架构,每层职责清晰且可独立替换:
AICB(AI Communication Benchmark,真实 GPU profiling)
↓ 生成 workload 文件(compute/comm 模式)
astra-sim-alibabacloud(事件驱动仿真引擎)
↓ 集合通信操作(由 SimCCL 分解为 P2P flows)
SimCCL(集合通信 → P2P 分解,572 行核心代码)
↓
[三选一网络后端]
├─ Analytical:busbw 公式计算,秒级,适合探索
├─ NS-3 (ns-3-alibabacloud):包级 RoCEv2/DCQCN,分钟级,高精度
└─ Physical(Beta):真实 RDMA 硬件流量生成
vidur-alibabacloud(SimAI 1.5):推理专用调度层,支持多请求动态 batching 和 Prefill/Decode 分离,是 ASTRA-sim 不具备的推理仿真能力。
SimCCL 集合通信库
SimCCL 是 SimAI 的核心差异点,572 行核心代码实现集合通信拦截分解。
核心思路:拦截集合通信操作,生成 P2P send/recv 序列,不做实际数据传输,只模拟通信流模式。每种算法都完整展开为逐步的 P2P 原语,仿真引擎据此驱动网络后端。
Ring AllReduce(带宽最优)
两阶段 N-1 步展开,以 4 个 rank 为例:
初始状态:每个 rank 持有 [A/B/C/D] 中自己的分片
ReduceScatter 阶段(3 步,每步每 rank 发送 chunk_size = M/4 数据):
步骤 1: rank0→rank1, rank1→rank2, rank2→rank3, rank3→rank0
步骤 2: rank0→rank1, rank1→rank2, ...(携带上一步 reduce 结果)
步骤 3: 同上
结果:每个 rank 持有一个完整 reduce 后的分片
AllGather 阶段(3 步,广播已 reduce 的分片):
步骤 1-3: 依次将 reduce 结果沿环传播
结果:每个 rank 持有全部 [A+B+C+D] 的完整结果
阶段 1 ReduceScatter(N-1 步):每步每个 rank 向下一个 rank 发送 chunk_size = message_size/N 数据,同时接收并 reduce。
阶段 2 AllGather(N-1 步):再 N-1 步,广播已 reduce 的 chunk。
总通信量(每 rank)= 2(N-1)/N × message_size,N 增大时带宽利用率趋近 100%。
Tree AllReduce(延迟最优)
Double Binary Tree 结构,O(log N) 步。步数少,适合小消息(延迟主导场景):
T_Tree = 2 × log₂(N) × (α + M / (N × β)) (小消息近似为 2·log₂(N)·α)
N=8 时 Tree 只需 6 步,Ring 需要 14 步。
NVLS(NVLink-Sharp,节点内专用)
通过 NVSwitch 硬件在交换时完成 in-network reduce,GPU 不参与中间 reduce 步骤:
GPU_0..7 → NVSwitch(硬件 reduce)→ 结果广播回所有 GPU
NVLS 总步数 = 2(vs Ring 的 2(N-1) = 14 步),消除了 Ring 的多步开销。H100 DGX(8 GPU)实测 busbw 可达 480+ GB/s,超过 Ring 的理论上限(450 × 7/8 ≈ 394 GB/s)。通过环境变量 AS_NVLS_ENABLE=1 开启。
PXN(PCIe × NVLink)
解决 GPU 向不同 Rail 对端发数据时的带宽瓶颈:
传统路径:GPU-0 → PCIe → CPU → QPI → CPU → PCIe → NIC-1(带宽受限于 PCIe)
PXN 路径:GPU-0 → NVLink → GPU-1 → PCIe → NIC-1(绕开 CPU,带宽 ≈ NVLink)
NCCL 2.12 引入 PXN,实测 AllToAll 性能提升超过 2×。
算法选择逻辑
| 并行维度 | 操作类型 | 默认算法 |
|---|---|---|
| TP(张量并行,节点内) | AllReduce | NVLS(NVLink-Sharp) |
| TP(张量并行,节点间) | AllReduce | Ring |
| DP(数据并行) | AllReduce/ReduceScatter | Ring |
| EP(专家并行) | AllToAll | Pairwise(节点间) |
| PP(流水线并行) | P2P send/recv | 无集合算法 |
SimCCL 共实现 13+ 算法变体,包含 NVLS、PXN、HalvingDoubling 等 ASTRA-sim 原版不具备的算法。
网络仿真三种模式
Analytical 模式
直接使用 busbw.yaml 配置每种并行维度 × 集合操作的等效带宽:
TP:
allreduce: 300 # GB/s,NVLink 节点内 AllReduce 等效带宽
allgather: 280
reducescatter: 280
alltoall: 230
DP:
allgather: 380 # RDMA 跨节点 AllGather
reducescatter: 380
EP:
allgather: 45 # MoE EP AllGather(跨节点,带宽更低)
alltoall: 80 # MoE 路由 AllToAll
计算公式:
comm_time = message_size / bus_bandwidth + latency_overhead
busbw 可从 nccl-tests 实测获取,或通过参数自动推算:
-nv [NVLink_bw] -nic [NIC_bw] -n_p_s [NICs_per_switch] -g_p_s [GPUs_per_switch]
执行时间:秒级。适合大规模参数空间扫描(数百种并行策略 × 拓扑配置组合)。
Simulation 模式(NS-3 集成)
SimCCL 产出的 P2P 流通过 AstraSimNetwork.cc 接口注入 ns-3-alibabacloud:
sim_send()— 生成 NS-3 网络包sim_recv()— 注册回调,包到达后唤醒仿真事件
支持的传输协议:RoCEv2、TCP
支持的拥塞控制算法:DCQCN、HPCC、HPCC-PINT、TIMELY、DCTCP、Swift
ns-3-alibabacloud 相比 ASTRA-sim 原版 NS-3 后端的核心增强:
| 维度 | ASTRA-sim NS-3 | SimAI ns-3-alibabacloud |
|---|---|---|
| CC 算法 | DCQCN, HPCC | DCQCN, HPCC, HPCC-PINT, TIMELY, DCTCP, Swift |
| QP 建模 | 基础 | 真实 RDMA QP 创建/销毁逻辑 |
| NIC 配置 | 统一 | perIP / perQP 灵活配置 |
| 调度 | 基础 | Max-Min 原则优化 |
| NVSwitch | 不支持 | 支持节点内 GPU 通信 |
| INT 支持 | HPCC 基础 | INT + PINT(头部压缩至 1-2 bytes) |
| CC 解耦 | 耦合 | 模块化可替换 |
执行时间:分钟到小时级。适合发表质量结果。
Physical 模式(Beta)
直接生成真实 RDMA 流量在实际硬件上运行,适合最终验证,非仿真。
精度验证结果
SimAI NSDI'25 提供了迄今最系统的精度验证数据:
| 指标 | 结果 |
|---|---|
| 整体对齐精度 | 平均 98.1%(与真实集群对比) |
| AllReduce | 与 AllGather 趋势一致 |
| ReduceScatter | 与 AllGather 趋势一致 |
| 测试规模 | 小规模实验室 -> 大规模工业环境(512–1024 GPU) |
对比参考:ASTRA-sim 原版 NS-3 后端在基础规模下误差 45.9%,扩展到 512 GPU 时误差飙升至 530.2%。SimAI 通过 ns-3-alibabacloud 将此改善到约 2% 误差。
误差改善的主要来源:
- 真实 QP 逻辑(发送/接收窗口、每 QP 独立速率控制)
- 完整拥塞控制闭环(CNP 回传 → 发送端 DCQCN 降速 → 速率恢复)
- CC 模块解耦,调度遵循 Max-Min 原则
拓扑配置系统
预设拓扑模板(通过 gen_Topo_Template.py 生成):
| 拓扑名 | 代表集群 | 特点 |
|---|---|---|
| Spectrum-X | NVIDIA RoCE fabric | 两层 RoCE 交换;8 NIC/节点;带宽密集 |
| AlibabaHPN | 阿里云 HPN 数据中心 | Rail-optimized;专为 LLM 训练设计 |
| DCN+ | 增强型胖树 | 多层胖树;-asn/-psn 参数控制交换层级 |
NVLink 建模策略:用单 NVSwitch 节点抽象全部节点内 GPU 互联(简化但工程实用):
GPU_0..7 → NVSwitch_Node(3600 Gbps 总带宽 × 利用率折扣因子)
与 ASTRA-sim 的差异
| 维度 | ASTRA-sim | SimAI |
|---|---|---|
| 网络后端 | Analytical + NS-3 + Garnet | Analytical + NS-3 + Physical |
| 集合通信 | 抽象层,无 NCCL 细节 | MockNCCL,Ring/Tree/NVLS/PXN 完整实现 |
| Workload 来源 | 手写或脚本生成 | AICB 真实 GPU profiling |
| MoE 支持 | 有限 | 完整 EP + AllToAll 建模 |
| 推理仿真 | 不支持 | SimAI 1.5 支持 Prefill/Decode 分离 |
| NVLink 建模 | 无专门支持 | NVLS(in-network reduce)+ PXN 路由优化 |
| 拓扑模板 | 通用参数化 | Spectrum-X / AlibabaHPN / DCN+ 生产拓扑 |
| 精度验证 | 5%(4–16 GPU,仅 AllReduce) | 1.9%(512–1024 GPU,多种操作) |
| 规模 | 学术原型 | 生产级,多线程加速 |
| 局限 | 无异构支持,计算通信重叠不完整 | 同构集群假设,计算通信重叠仍有缺口 |