使用 Heavy 规划路径

从一个显式 seed 开始,读取最终路径与公开指标,并正确比较多次独立运行。

本页目录

运行 Heavy 并保留报告

python
from arctn import arctn_schedule

report = arctn_schedule(
    inputs, output, size_dict,
    preset="heavy", seed=17,
    use_ssa=True,
)

path = report["path"]
print(report["log10_flops"])
print(report["log2_read_write"])
print(report["planner_objective_score_log2"])

Heavy 的接口定位是允许投入更多规划工作以寻找更好的路径。它仍是启发式搜索:返回的是本次运行已完成候选中的最佳结果,不保证严格局部最优、全局最优,也不保证每个 seed 都优于 Light。

阅读路径质量

字段 表示 不等同于
log10_flops 路径模型中标量乘法总数的以 10 为底对数 硬件计数器或真实运行时间
log2_max_size 最大结果张量元素数的以 2 为底对数 RSS 或 GPU 显存
log2_read_write 所有步骤逻辑 A+B+C 总和的以 2 为底对数;原始叶张量按原输入大小计数 实测内存带宽
log2_peak_size 按执行顺序模拟的存活元素数峰值的以 2 为底对数 进程峰值 RSS

按同一目标比较

默认 objective 是 FLOPs + 64 × read/write complexity。若只比较 log10_flops,可能忽略规划器有意换取的读写量改善。

做独立重复

python
reports = [
    arctn_schedule(
        inputs, output, size_dict,
        preset="heavy", seed=seed, use_ssa=True,
    )
    for seed in (0, 1, 2, 3)
]
best = min(reports, key=lambda item: item["planner_objective_score_log2"])

不同 seed 是独立搜索起点,不是同一路径的重复计时。若要报告稳定性,应保留每个 seed 的完整结果与分母;只展示 best-of-four 会改变预算和比较问题。