工具链与开源资产
核心要点:
- 四层级工具栈:搜索算法 (pymoo) + 拓扑表达 (NetworkX) + 集合通信调度 (ForestColl 自实现) + 网络仿真 (Astra-Sim / htsim / SimAI)
- 学术代码不可直接复用:TopoOpt 2024-09 停更;ForestColl / ATOP 未开源代码
- License 安全:核心栈用 Apache 2.0 / MIT / BSD;避开 GPL 传染性
- 真正瓶颈不在算法:pymoo 5 行代码搞定 NSGA-II, 70% 工作在 evaluator + 拓扑表达的胶水
- 关键基础设施:Astra-Sim 2.0 (Stage 2 精仿) + SimAI (workload generator) + ForestColl 自实现
实现 ATOP-mini 类拓扑寻优系统需要哪些开源资产?本文按四层级 (搜索算法 / 拓扑表达 / 集合通信调度 / 网络仿真) 梳理工具栈,各组件的活跃度 / license / 集成难度。
工具栈是什么结构
核心问题:ATOP-mini 实现要哪些层级?各层有哪些备选?
| 层级 | 必需 | 备选 1 | 备选 2 |
|---|---|---|---|
| 搜索算法 | pymoo[1] | DEAP[2] | pygmo[3] |
| 拓扑表达 | 项目 NetworkGraph | NetworkX[4] | igraph[5] |
| 集合通信下界 | 自实现 ForestColl Phase 1 | MSCCL-tools (SCCL)[6] | TACCL[7] |
| 网络仿真 (粗筛) | 项目 math evaluator | SimGrid[8] | LogGOPSim[9] |
| 网络仿真 (精筛) | 项目 g5 | Astra-Sim 2.0[10] | SimAI[11] |
| 真实成本模型 | 自维护报价表 | FS API | Colfax Direct |
@tbl-toposearch-tools-layers ATOP-mini 实现的工具链分层
搜索算法库怎么选
核心问题:pymoo / DEAP / pygmo 在工程集成上的差异?
详细算法对比见 8.4 多目标搜索算法对比。本节聚焦工程集成。
pymoo (推荐)
| 项目 | 数据 |
|---|---|
| 主页 | https://pymoo.org |
| GitHub | https://github.com/anyoptimization/pymoo |
| License | Apache 2.0 |
| 语言 | Python |
| 安装 | pip install pymoo |
| 文档质量 | 高 (含教程 + API + 示例代码) |
| 适合场景 | 工程首选;与 numpy / scipy 集成 |
@tbl-toposearch-tools-pymoo pymoo 概况
最小可用代码示例:
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.core.problem import Problem
from pymoo.optimize import minimize
import numpy as np
class TopologyProblem(Problem):
def __init__(self):
# 11 类超参数, 11 个目标
super().__init__(n_var=11, n_obj=11, xl=0, xu=10)
def _evaluate(self, X, out, *args, **kwargs):
# X: (pop_size, 11)
# 调用项目 evaluator 返回 11 个目标值
out["F"] = self.evaluator.evaluate_batch(X)
algorithm = NSGA2(pop_size=200)
res = minimize(TopologyProblem(), algorithm, ('n_gen', 500), verbose=True)
DEAP
- URL: https://deap.readthedocs.io
- 灵活性极高,但需要自己拼装算法循环
- 适合定制非标准算法
pygmo
- URL: https://esa.github.io/pygmo2/
- C++ 内核 + Python 绑定
- 岛屿模型异步并行,适合 HPC
拓扑表达用什么
核心问题:项目 NetworkGraph / NetworkX / igraph 各自优势?
项目自有 NetworkGraph (推荐)
项目已有 perfmodel/arch/topo_routing/graph.py 的 NetworkGraph 实现,含:
- NodeSpec / EdgeSpec / 端口管理
- 路由策略对接 (DOR / UGAL / ECMP / SP)
- 物理层级分组 (chip → board → rack → pod)
集成方式:实现 ATOP 11 类超参数 generator,输出 NetworkGraph 实例。
NetworkX (备选)
- URL: https://networkx.org
- 学术界事实标准
- 大规模性能差 (pure Python)
igraph
- URL: https://igraph.org
- C 实现,速度快
- API 比 NetworkX 略复杂
集合通信调度合成有哪些工具
核心问题:ForestColl / SCCL / TACCL 各自的可用性和集成难度?
ForestColl
| 项目 | 数据 |
|---|---|
| 论文 | arXiv 2402.06787 |
| 开源代码 | 未公开 (截至 2026-05) |
| 实现方式 | 用 MSCCL runtime[12] 部署 |
| 复杂度 | strongly polynomial |
@tbl-toposearch-tools-forestcoll ForestColl 现状
关键问题:ForestColl 论文给出算法但没有公开代码。要在项目里用,必须根据论文自实现 Phase 1 (forest decomposition)。算法相对简单 — 几百行 Python 代码可实现。
SCCL / MSCCL-tools
- URL: https://github.com/microsoft/msccl-tools
- License: MIT
- 用 SMT 合成最优算法
- 拓扑寻优内循环不适用 (SMT 小时级),仅适合离线最优算法生成
TACCL
- URL: https://github.com/microsoft/taccl
- License: MIT
- MILP-based + communication sketches
- 同 SCCL,离线工具
网络仿真集成怎么做
核心问题:Astra-Sim / SimAI / htsim / NS-3 / SimGrid / LogGOPSim 各自的适用场景?
Astra-Sim 2.0 (推荐用作 Stage 2)
| 项目 | 数据 |
|---|---|
| GitHub | https://github.com/astra-sim/astra-sim |
| 论文 | Won et al., ISPASS 2023, arXiv:2303.14006 |
| License | MIT |
| 语言 | C++ + Python |
| 三层抽象 | workload / system / network |
| Network backends | analytical / Garnet / NS-3 |
| Workload 输入 | Chakra trace / SimAI |
@tbl-toposearch-tools-astrasim Astra-Sim 2.0 概况
集成难度:中。需要写 workload trace + 配置 network backend + 接拓扑配置。Microsoft / Meta / Georgia Tech 联合维护,活跃。
SimAI (推荐用作 workload generator)
- URL: https://github.com/aliyun/SimAI
- License: Apache 2.0
- 阿里开源
- LLM workload generator + NCCL ring/tree/NVLS 仿真
- 与真实硬件实测对比 98.1% 精度
htsim (推荐用作 Stage 2 精仿)
| 项目 | 数据 |
|---|---|
| GitHub | https://github.com/Broadcom/csg-htsim |
| Fork | https://github.com/spcl/HTSIM (SPCL 维护版) |
| License | BSD-3-Clause |
| 语言 | C++ |
| 特点 | 比 NS-3 快得多,DC congestion control 专门 |
| 协议覆盖 | RoCE / PFC / Swift / HPCC / EQDS / NDP |
@tbl-toposearch-tools-htsim htsim 概况
ATOP 论文 testbed 验证 (Appendix H) 用的是 htsim + DLB packet spraying。
NS-3 (验证基线)
- URL: https://www.nsnam.org
- License: GPL v2
- 学术界事实标准
- 极慢 (LLM 训练 40h/case) — 不适合放进搜索内循环,仅用作最终验证
SimGrid
- URL: https://simgrid.org
- License: LGPL
- 流级仿真
- 通用分布式系统,不针对 DC
LogGOPSim
- URL: https://github.com/spcl/LogGOPSim
- License: BSD
- ETH Zurich SPCL 实现
- 极快 (> 1M events/sec)
- 专攻 MPI 集合通信
- 适合粗筛 + 算法假设评估
评估器辅助工具
核心问题:拓扑可视化 / Pareto 前沿可视化用什么?
Network Topology 可视化
- Cytoscape.js — 浏览器拓扑可视化
- Gephi — 桌面端图形分析
- 项目已有 3D 拓扑可视化 (
frontend/src/components/Scene3D/)
多目标 Pareto 前沿可视化
- pymoo 自带可视化 (
pymoo.visualization) - pareto.py — 命令行 Pareto 工具
学术开源代码现状怎么样
核心问题:TopoOpt / ATOP 代码可以直接用吗?
TopoOpt 代码
| 项目 | 数据 |
|---|---|
| GitHub | https://github.com/hipersys-team/TopoOpt |
| Stars | 40 |
| Forks | 16 |
| 最后 push | 2024-09-10 (约 20 个月无更新) |
| License | Apache 2.0 |
| 语言 | Jupyter Notebook 50.6% + Shell 49.4% |
| 主 README | 只列目录,无可直接复现的 end-to-end 命令 |
@tbl-toposearch-tools-topoopt-repo TopoOpt 代码现状
结论:TopoOpt 代码可作参考,不可直接 import 使用。
ATOP 代码
截至 2026-05, ATOP / ZCube 没有公开开源代码。仅有论文 + Algorithm 1/2 伪代码。
License 怎么兼容
核心问题:商用场景下哪些库要避开?
| 库 | License | 商用友好 |
|---|---|---|
| pymoo | Apache 2.0 | [OK] |
| DEAP | LGPL 3.0 | [WARN] (动态链接 OK,静态需开源) |
| pygmo | GPL-3.0-or-later OR LGPL-3.0-or-later | [WARN] (双 license) |
| Astra-Sim 2.0 | MIT | [OK] |
| SimAI | Apache 2.0 | [OK] |
| htsim (Broadcom) | BSD-3-Clause | [OK] |
| NS-3 | GPL v2 | [WARN] (GPL 传染性) |
| SimGrid | LGPL | [WARN] (同 DEAP) |
| LogGOPSim | BSD | [OK] |
| MSCCL-tools | MIT | [OK] |
@tbl-toposearch-tools-licenses 关键依赖的 License
建议:核心搜索栈用 Apache 2.0 / MIT / BSD 库,避免 GPL 传染性 (NS-3 仅用作验证 baseline,不嵌入主代码)。
真正瓶颈在哪
核心问题:工程难度集中在算法还是胶水?
拓扑寻优的工程瓶颈不在算法 (pymoo 5 行代码搞定 NSGA-II),而在评估器 + 拓扑表达的胶水。
具体说:
- pymoo + DEAP 都很成熟,算法 API 标准化
- NetworkX / 项目 NetworkGraph 都能表达拓扑
- 但把"11 类超参数实例 → NetworkGraph → 评估器输入"的胶水代码 (pipeline) 写出来才是真正工作
ATOP 论文的代码贡献 (即使未公开) 很可能 70% 是 pipeline 代码 + 30% 是评估器优化。
学术开源代码的可复用度低:TopoOpt 代码停更 (2024-09) / ForestColl 未开源 / ATOP 未开源 — 这是学术工作的常态。含义:项目要做拓扑寻优,不能依赖学术开源直接复用,必须按论文重新实现关键算法。算法不难 (多项式时间),但复现 + 调试需要时间。
Astra-Sim 2.0 是关键基础设施:如果项目要做 Stage 2 精仿,Astra-Sim 2.0 是最值得集成的基础设施 — Microsoft / Meta / Georgia Tech 联合维护、活跃、文档完善、可插拔 backend。但 Astra-Sim 与项目 g5 的关系需要明确:
- g5 是项目自研,针对 SG2262 等特定芯片优化
- Astra-Sim 是通用仿真器
- 两者可共存:g5 作 Stage 2 默认;需要发表 / 对外发布时用 Astra-Sim 作 cross-validation
SimAI 是 workload 生成的标准:SimAI 阿里开源,与真实硬件实测 98.1% 精度 — 这是目前 LLM workload generator 的事实标准。如果项目要复现 ATOP 评估流程,SimAI 应该是 workload 生成首选,不要自己写。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 四层级工具栈 | 搜索算法 + 拓扑表达 + 集合通信调度 + 网络仿真 |
| 推荐组合 | pymoo + 项目 NetworkGraph + 自实现 ForestColl + Astra-Sim 2.0 + SimAI |
| 学术代码可复用度低 | TopoOpt 停更,ForestColl / ATOP 未开源,必须按论文重实现 |
| License 安全 | 核心栈用 Apache 2.0 / MIT / BSD; NS-3 (GPL) 仅作 baseline |
| 真正瓶颈 | 70% 工作在 evaluator + 拓扑表达的胶水,30% 在算法 |
| Astra-Sim 价值 | 三层抽象 (workload / system / network),可插拔 backend,活跃维护 |
| SimAI 价值 | 与真实硬件 98.1% 精度,workload 生成事实标准,不要自己写 |
参考资料
- pymoo. https://pymoo.org
- DEAP. https://deap.readthedocs.io
- pygmo. https://esa.github.io/pygmo2/
- NetworkX. https://networkx.org
- igraph. https://igraph.org
- MSCCL-tools. https://github.com/microsoft/msccl-tools
- TACCL. https://github.com/microsoft/taccl
- SimGrid. https://simgrid.org
- LogGOPSim. https://github.com/spcl/LogGOPSim
- Astra-Sim 2.0. https://github.com/astra-sim/astra-sim
- SimAI. https://github.com/aliyun/SimAI
- MSCCL runtime. https://github.com/microsoft/msccl