使用 Heavy 规划路径
从一个显式 seed 开始,读取最终路径与公开指标,并正确比较多次独立运行。
本页目录
运行 Heavy 并保留报告
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,可能忽略规划器有意换取的读写量改善。
做独立重复
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 会改变预算和比较问题。