跳到主要内容

工具链与开源资产

核心要点

  • 四层级工具栈:搜索算法 (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]
拓扑表达项目 NetworkGraphNetworkX[4]igraph[5]
集合通信下界自实现 ForestColl Phase 1MSCCL-tools (SCCL)[6]TACCL[7]
网络仿真 (粗筛)项目 math evaluatorSimGrid[8]LogGOPSim[9]
网络仿真 (精筛)项目 g5Astra-Sim 2.0[10]SimAI[11]
真实成本模型自维护报价表FS APIColfax Direct

@tbl-toposearch-tools-layers ATOP-mini 实现的工具链分层

搜索算法库怎么选

核心问题:pymoo / DEAP / pygmo 在工程集成上的差异?

详细算法对比见 8.4 多目标搜索算法对比。本节聚焦工程集成。

pymoo (推荐)

项目数据
主页https://pymoo.org
GitHubhttps://github.com/anyoptimization/pymoo
LicenseApache 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

pygmo

拓扑表达用什么

核心问题:项目 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 (备选)

igraph

集合通信调度合成有哪些工具

核心问题: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

TACCL

网络仿真集成怎么做

核心问题:Astra-Sim / SimAI / htsim / NS-3 / SimGrid / LogGOPSim 各自的适用场景?

Astra-Sim 2.0 (推荐用作 Stage 2)

项目数据
GitHubhttps://github.com/astra-sim/astra-sim
论文Won et al., ISPASS 2023, arXiv:2303.14006
LicenseMIT
语言C++ + Python
三层抽象workload / system / network
Network backendsanalytical / 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 精仿)

项目数据
GitHubhttps://github.com/Broadcom/csg-htsim
Forkhttps://github.com/spcl/HTSIM (SPCL 维护版)
LicenseBSD-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

LogGOPSim

评估器辅助工具

核心问题:拓扑可视化 / Pareto 前沿可视化用什么?

Network Topology 可视化

  • Cytoscape.js — 浏览器拓扑可视化
  • Gephi — 桌面端图形分析
  • 项目已有 3D 拓扑可视化 (frontend/src/components/Scene3D/)

多目标 Pareto 前沿可视化

  • pymoo 自带可视化 (pymoo.visualization)
  • pareto.py — 命令行 Pareto 工具

学术开源代码现状怎么样

核心问题:TopoOpt / ATOP 代码可以直接用吗?

TopoOpt 代码

项目数据
GitHubhttps://github.com/hipersys-team/TopoOpt
Stars40
Forks16
最后 push2024-09-10 (约 20 个月无更新)
LicenseApache 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商用友好
pymooApache 2.0[OK]
DEAPLGPL 3.0[WARN] (动态链接 OK,静态需开源)
pygmoGPL-3.0-or-later OR LGPL-3.0-or-later[WARN] (双 license)
Astra-Sim 2.0MIT[OK]
SimAIApache 2.0[OK]
htsim (Broadcom)BSD-3-Clause[OK]
NS-3GPL v2[WARN] (GPL 传染性)
SimGridLGPL[WARN] (同 DEAP)
LogGOPSimBSD[OK]
MSCCL-toolsMIT[OK]

@tbl-toposearch-tools-licenses 关键依赖的 License

建议:核心搜索栈用 Apache 2.0 / MIT / BSD 库,避免 GPL 传染性 (NS-3 仅用作验证 baseline,不嵌入主代码)。

真正瓶颈在哪

核心问题:工程难度集中在算法还是胶水?

拓扑寻优的工程瓶颈不在算法 (pymoo 5 行代码搞定 NSGA-II),而在评估器 + 拓扑表达的胶水

具体说:

  1. pymoo + DEAP 都很成熟,算法 API 标准化
  2. NetworkX / 项目 NetworkGraph 都能表达拓扑
  3. 把"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 生成事实标准,不要自己写

参考资料

  1. pymoo. https://pymoo.org
  2. DEAP. https://deap.readthedocs.io
  3. pygmo. https://esa.github.io/pygmo2/
  4. NetworkX. https://networkx.org
  5. igraph. https://igraph.org
  6. MSCCL-tools. https://github.com/microsoft/msccl-tools
  7. TACCL. https://github.com/microsoft/taccl
  8. SimGrid. https://simgrid.org
  9. LogGOPSim. https://github.com/spcl/LogGOPSim
  10. Astra-Sim 2.0. https://github.com/astra-sim/astra-sim
  11. SimAI. https://github.com/aliyun/SimAI
  12. MSCCL runtime. https://github.com/microsoft/msccl