把中间张量限制在 target_size 内

从未切片路径出发,使用 fixed 或 dynamic slicing 控制中间张量规模。

本页目录

固定路径切片

固定内部指标 c 的五个取值,分别计算 T₀ 至 T₄,再将五个结果相加,得到原网络的收缩结果。
python
report = arctn_schedule(
    inputs, output, size_dict,
    preset="heavy", seed=0,
    target_size=2**24,
    slicing_mode="fixed",
    use_ssa=True,
)
print(report["sliced_legs"])
print(report["sliced_log2_max_size"])

fixed 是默认模式。它先得到普通未切片 Auto 路径,然后保持这条路径不变,只选择 sliced legs。

切片与局部路径重构交替

python
report = arctn_schedule(
    inputs, output, size_dict,
    preset="heavy", seed=0,
    target_size=2**24,
    slicing_mode="dynamic",
)
print(report["slicing_report"]["path_changed"])

fixeddynamic 都先运行未切片的 Auto 规划;dynamic 允许在切片后进行有限的局部路径调整。最终路径可能改变,也可能与 fixed 相同,应比较报告中的实际工作量和路径;内部调整次数和局部问题大小不属于接口契约。

公开参数

公开 slicing_mode 只接受 fixeddynamic

理解代价交换

改变 直接结果 需要额外检查
降低 target_size 要求更低的单片结果上限;实际最大结果可能保持不变 slice 数和总 FLOPs 可能增加
fixed → dynamic 切片后允许局部调整路径 增加局部调整工作;最终路径可能改变,也可能不变
增加并发 slices 可能提高吞吐 多个 slice 同时驻留会增加实际内存

target_size 只约束单个 slice 的二元收缩结果元素数;单张量网络则检查最终输出。它不限制一元处理的全部临时张量,也不是整个进程的 RSS、VRAM 或 workspace 上限。