2026/7/4 7:23:50

CANN科学模型NPU迁移可行性预判

CANN科学模型NPU迁移可行性预判 分册 2代码级迁移可行性预判【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills对应主流程§3。顺序基线part-01→ 本分册 → 门禁part-03→ 代码级迁移part-04。本阶段不执行NPU 训练/推理命令环境是否可跑由part-03 §4.0单独判定。定位与边界维度说明目标在改代码、上 NPU 之前把「改完仍跑不通 / 跑通但结果不对 / 精度性能大幅异常」的高概率根因先分类并给出从小到大的可执行验证计划本阶段做读代码与文档、选迁移链路、核对 IO 契约、列算子/框架风险、输出 Phase 验证计划与风险处置优先级本阶段不做不跑 NPU 测试不替用户装 CANN/驱动不做精度/性能结论属 part-05训练短测属代码迁移后的下游环节见§3.6与门禁区别可行性回答「工程上能不能改、改哪条路、先验证什么」**门禁part-03**回答「这台机器、这套依赖现在能不能跑 NPU」通过后输出完整预判结论 → 进入 part-03-environment.md§4.0不得因可行性看起来可行而跳过门禁输入来自 part-01缺则标注假设执行预判前agent 应已掌握或已假设框架/工程栈PyTorch / MindSpore / 混合、目标 Ascend 型号与精度目标训练/推理入口脚本、checkpoint 或权重路径成功标准与 baseline 来源项目训练日志优先 / 否则默认 GPU见 part-01 §2数据集与测试用途对照短测 / 冒烟 / 全量等见Mig_Readme§3.1 规划是否含自定义算子、CUDA 扩展、复杂后处理、动态 shape输出落盘与对话对话正文须结构化给出下列4 块顺序固定迁移链路— 选定路径与模块划分NPU / CPU 回退输入输出契约— 名称、顺序、shape、dtype、layout算子/框架风险— 分级表 建议验证方式最小验证计划— Phase 13 与每 Phase 成功条件、失败时调整顺序落盘写入或更新mig_docs/working/Mig_report.md§2.2上述 4 块的摘要表预判结论可继续/有条件继续列前提/建议先解决阻塞项阻塞项清单若有须在 part-04 前由用户确认或提供替代方案3.0 通过标准本阶段收口满足下列全部即可进入 part-03 门禁仍须单独过 §4.0二者不可互相替代迁移链路已选定且与框架/工程栈一致输入输出契约已列出多输入顺序与后处理接点已标注高风险项自定义算子、CUDA 残留、动态 shape 等已分级并有处置方向替换 / CPU 回退 / 待实测Phase 1 最小验证目标明确至少NPU 上一次前向或单 batch 训练 step 的成功判定无未标注的「未知阻塞」若有已写入Mig_report§2.2 并列为待确认项若存在硬阻塞例如核心算子无昇腾等价且无法 CPU 回退、工程与目标芯片文档明确不兼容且用户未确认变通方案预判结论应为「建议先解决阻塞项」仍可进入 part-03 做环境核查但不应在 part-04 大规模改代码前隐瞒阻塞项。3.1 迁移链路选择让 agent 明确并写出「本次代码级迁移走哪条链路」例如工程类型典型路径备注PyTorchtorch_npudevicenpu 入口脚本改造关注.cuda()、CUDA_VISIBLE_DEVICES、AMPMindSporeAscenddevice_target 动/静态图与算子对齐关注ms.jit、数据格式混合工程分模块说明哪些上 NPU、哪些暂留 CPU写清数据跨设备拷贝边界同时标注仅推理/含 NPU 训练影响后续 Phase 计划与 part-05 短测是否启用。3.2 输入输出契约对「迁移时必须一致」的信息做核对并列清单与 part-04 迁移后最小验证、Golden 可选对齐核对项说明输入 tensor名称与顺序多输入模型尤其重要输入shape固定 or 动态动态须标注敏感维度LayoutNCHW / NHWC 等与预处理一致输入dtypeFP32 / FP16 / BF16输出 tensor名称、shape、用途避免「能跑但后处理接错」预处理 / 后处理边界是否在模型外、是否建议外置 CPU契约摘要须同步到Mig_report§4.2代码迁移阶段可再细化。3.3 算子/框架风险预判在不具备完整离线工具链评估的前提下基于代码与模型结构做「高概率风险点」分类。建议用下表输出风险等级典型项agent 动作高自定义 CUDA 算子、无昇腾文档的第三方 GPU 库、硬编码cudadevice给出替换 / CPU 回退 / 官方等价算子调研方向Phase 1 必须覆盖中复杂后处理NMS、解码、重排、动态 shape 敏感模块、分布式/多卡逻辑标注是否建议外置 CPU 或固定 shape 先行低常规算子、标准 DataLoader、常见 loss记录即可Phase 2 扩展时关注常见扫描点按需逐项说明自定义算子/自研算子是否已有昇腾侧等价实现CUDA 专用 API、.cuda()、torch.cuda.*、仅 GPU 的第三方库动态 shape 相关路径哪些模块对 batch/序列长度敏感混合精度、梯度缩放、与 NPU AMP 行为可能不一致的路径3.4 最小验证计划Phase 1 → 3避免一次改完全部代码Phase 计划须写入对话与Mig_report§2.2。Phase范围成功条件至少 1 条失败时优先调整顺序Phase 1最小静态 shape、最小 batchNPU 上一次前向或单 batch 训练 step无崩溃输出 shape 正确无 NaN/Inf训练 step 时 loss 有限device 放置 → dtype/AMP → 数据管线 → 算子替换/CPU 回退Phase 2目标 batch、目标 shape 策略在 Phase 1 语义不变前提下扩展与 Phase 1 同口径的稳定性短测数据集可复现数据加载 → 内存/图优化 → 算子边界Phase 3可选优化AMP 深化、融合、分布式等按项目 KPI 或 part-05 约定见 part-05 §7不早于 Phase 1/2 稳定仅推理项目Phase 1 以最小前向 smoke 为主不强制训练 step。含训练项目Phase 1 至少包含单 batch 前向反向一步训练短测loss 30%50%不在本阶段执行见§3.6。3.5 风险处置与「有条件继续」当预判结论为「有条件继续」时须显式列出前提例如某自定义算子先走 CPU 回退接受性能损失动态 shape 先固定为训练常用 batch上线前再测动态路径用户确认可接受某精度口径仅 smoke 级验证前提未满足前part-04 实施范围应限制在 Phase 1避免扩大改动面。3.6 与后续环节的衔接非本阶段执行下列环节不属于可行性预判本身但须在规划中留口避免与 part-02 混淆环节分册时机环境与依赖门禁part-03 §4.0预判完成后、任何 NPU 命令之前代码级迁移part-04门禁 AUTO或 MANUAL_STOP 已人工补齐后刷新迁移后最小验证part-04Phase 1 在 NPU 上首次跑通训练短测loss 约 30%50%达标即停part-05 §8.1.1代码迁移 Phase 1 通过后勿同配置重复短测全量精度/性能part-05 §7§8短测/冒烟通过后训练短测的通过准则与「达标即停」全文见 part-05-performance-accuracy.md§8.1.1归档时在Summary.md§4.2 回填实测结果。关联索引上一环节part-01-scope-and-baseline.md §1§2下一环节part-03-environment.md §4.0 门禁实施part-04-code-migration.md交付与 Checklistpart-08-checklist-deliverables-output.md流程总览workflow.md 步 12【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考