Pull Request已成功合入, 合并人@CANN-robot
(感谢 ClarkXie 的贡献)变更摘要
该 PR 将 ACLNN 离线模型的全局确定性配置设置从 lowering 阶段迁移到 init 图 kernel:lowering 时不再调用 optiling::SetGlobalDeterministicConfig,改为在 CreateAclnnOriginalDeterministicConfig 中于 init 根图创建 SetAclnnGlobalDeterministicConfig void kernel 节点,模型加载阶段统一设置一次,避免每个 ACLNN 算子重复修改全局配置;同时保留 SingleStage/DualStage ACLNN FwkData 对原始确定性配置的引用以支持算子级配置恢复,并补充了 ATC --deterministic 与 --deterministic_level 的资料约束说明。
主要改动
- lowering 阶段移除全局确定性配置设置:
aclnn_node_converter.cc中BuildAclnnOriginalDeterministicConfig不再调用optiling::SetGlobalDeterministicConfig,改为直接返回ge::GRAPH_SUCCESS。 - init 图新增配置设置 kernel 节点:
CreateAclnnOriginalDeterministicConfig通过bg::ValueHolder::CreateVoid<bg::ValueHolder>创建"SetAclnnGlobalDeterministicConfig"节点并携带确定性配置常量,随 init 图在模型加载时执行。 - 新增
SetAclnnGlobalDeterministicConfigkernel 实现:aclnn_op_execute_kernel.cc/.h中实现并注册该 kernel,从输入读取AclnnOriginalDeterministicConfig后调用optiling::SetGlobalDeterministicConfig设置全局确定性配置。 - 测试适配与新增用例: lowering 相关单测/系统测试改为断言 init 图中恰好存在一个
SetAclnnGlobalDeterministicConfig节点且不再产生aclrtSetSysParamOpt记录;执行测试在 stub 中注册该 kernel 并断言模型加载时恰好调用一次;aclnn_op_execute_kernel_unittest.cc新增该 kernel 成功、运行时失败、空输入三种用例。 - 文档更新: 补充 ATC
--deterministic与--deterministic_level的资料约束,说明离线推理建议在模型转换阶段完成确定性配置,不建议通过 RTS 接口在运行时修改,以避免运行时配置与模型转换配置不一致。


Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-cann/ge | ✅ 张德鹏, yangyongqiang0606, kobemini (3/2) | ✅ 张德鹏 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
ClarkXie, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/lgtm


Pull Request
描述
修复 RT2 ACLNN 离线模型确定性配置的设置时机,避免在 lowering 阶段或 Init 图中修改全局状态。
DETERMINISTIC/DETERMINISTIC_LEVEL配置,不再产生全局配置副作用。ModelV2ExecutorBuilder从根图读取配置,由ModelV2Executor::Execute()在主执行图调度前设置全局确定性配置,确保设置发生在多线程执行器启动算子任务之前。SetAclnnGlobalDeterministicConfigkernel;ACLNN FwkData 仍保留原始配置,供算子级执行逻辑使用。变更类型
关联的Issue
无。
如何测试
CI
ut_fast_runtime2_test暴露的两个失败用例均为对 Init kernel 调用次数的过期断言;修正测试期望后,按单模型、非并发调用ModelV2Executor::Execute()的 RT2 ACLNN 场景进行验证。本次修改未重新编译或运行 UT/ST。
核对清单
其他信息
ModelV2Executor 不支持并发 Execute 调用;本方案假设单个 model executor 按既有串行调用约束使用。
确定性配置约束
当模型
deterministic=0且未携带deterministicLevel时,按默认关闭确定性处理,ModelV2Executor::Execute()不刷新全局确定性配置。本方案不覆盖用户先调用
torch_npu.npu.set_deterministic_level(),再调用torch.use_deterministic_algorithms()修改确定性状态的混用场景。torch_npu在set_deterministic_level()后已提示不要继续调用torch.use_deterministic_algorithms(),因此该组合不在支持范围内。若 deterministic 开启但 level 未设置,则按有效 level 1 处理。