AOT 编译
概述
AOT(Ahead-of-Time)编译将导出的模型进一步优化为可部署产物,由 TorchEasyRec 导出管线自动触发(ENABLE_AOT=2 → 统一 AOTI 路径)。
编译流程
训练模型 → torch.export.export() → ExportedProgram
→ torch._inductor.aoti_compile_and_package()
→ aoti/aoti_model.pt2
核心调用在 aot_utils.py:437 export_unified_model_aot()。
编译前准备
_pad_empty_sparse_values()— 将 0 元素非序列稀疏.values张量膨胀为 2 元素,防止torch.export特化在 size-0 哨兵上_build_dynamic_shapes()— 利用特征和特征组的结构知识分配动态 shape:序列特征共享 Dim、非序列稀疏独立 Dim、稠密特征 batch dimCudaAutocastWrapper— 绑定 device 和混合精度
编译配置
{
"scalar_asserts": False,
"unsafe_ignore_unsupported_triton_autotune_args": True,
"_use_fp64_for_unbacked_floats": False,
}
产物
export_dir/
├── model_acc.json # 记录 ENABLE_AOT=2 供 predict 端读取
└── aoti/
└── aoti_model.pt2 # AOTI Package(含编译后 .so 和元信息)
predict 时 UnifiedAOTIModelWrapper 用 torch._inductor.aoti_load_package() 加载。
与 TorchEasyRec 导出管线
AOTI 编译的完整触发链路(决策树、split_model、旧版两阶段 vs 统一路径)见 09-导出与 RTP 管线 ⇒ AOTI 后端。