本章把 MindSpore、MindSpore Lite、MindNLP 和 CANN 拆开讲,并分别保存 8T 与 20T 的证据。
先给出本讲路线图;后续每一段都对应这里的一行,最后回到路线收束。
先拆词再写代码。全量 MindSpore 与 Lite 是两个运行时;MindNLP 是上层模型与加载器,不是设备运行时。
从上向下看用户代码、MindSpore、MindIR/算子图、CANN、驱动固件和硬件。图编译失败与 ACL 初始化失败属于不同层。
Alarm 不单独构成失败。版本与导入路径决定实际加载的是哪个包,不能只看版本字符串。
这是全章的证据分栏规则。后续每张表都要注明来自哪一组,不能把 Qwen 模型状态和 Lite 错误混在一条结论里。
.asnumpy() 是设备到主机的同步点,也是算子实际执行的证据。只得到 shape 可能没有物化计算结果,不能判定通过。
Cell 相当于带参数的模块,construct 是图入口;ops 是不可训练函数。参数漏出 trainable_params() 会表现为梯度算了但权重不更新。
数据管道的错误归数据管道,不要归 NPU。固定随机源、dtype 和批次形状,才有可比较的训练曲线。
两种模式得到同一个结果,只能证明这段最小计算一致。图模式不等同于更快,本章没有做性能比较。
重点解释参数可见性和 dtype。训练结果必须包含 loss 数值和退出状态,不能只看脚本是否启动。
Health Alarm 只是诊断背景,不是自动失败原因。这里的耗时不能用于不同算法的性能比较,更不能包装成 benchmark。
CKPT 是参数字典,MindIR 带计算图和参数。导出成功不等于 Lite 可加载,下一步必须检查运行时版本和数值对齐。
CPU 后端先失败说明问题在格式版本检查,不能拿它证明 Ascend 后端不可用。双板 2026-10-17 环境还出现 Lite import undefined symbol,那是另一条版本问题记录。
这是第二组证据:同源基础子集。它只覆盖 03、04、05、06。2026-10-17 两板环境中的 Lite 导入另有 undefined symbol,不能与本章 8T 的 MindIR 格式阻断合并。
这是最新 20T 隔离复测,不混用旧 dirty-base 结论。早期 30 秒客户端超时与后续 TBE 清理日志存在因果混淆,不能直接把旧日志写成模型崩溃。experimental_isolated 仍需人工质量与准入签字;8T 对这些模型尚未独立复测。
Qwen3 检查发生在 8T,不属于上一页的 20T 模型表。它没有下载或加载权重,因此只能证明 loader 缺失,不能扩写成模型运行失败或硬件不支持。
要求学生按六类证据记录。失败与阻断必须保留;CPU 结果可以作数值参考,但不能填补 NPU 证据。
最后检查证据组标签。8T基础、双板基础子集、20T MindNLP三者不能共用性能数字,也不能互相替代通过结论。