ワンクリックで
performance-optimization
MindSpore Lite(Ascend)模型性能优化总攻略。做基线/profiling、融合算子改写、推理免拷贝、PTQ int8 量化、精度对齐与归档时调用。本文为总览与索引,细化策略见 references/。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
MindSpore Lite(Ascend)模型性能优化总攻略。做基线/profiling、融合算子改写、推理免拷贝、PTQ int8 量化、精度对齐与归档时调用。本文为总览与索引,细化策略见 references/。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
MindSpore Lite云侧推理 Ascend 后端离线转换(ONNX → MindIR)与推理部署全流程。覆盖固定 shape、动态分档、纯动态 shape 的转换策略,以及 MindIR 推理验证与部署注意事项。
把开源算法模型适配到 MindSpore Lite 部署管线:按网络结构拆分导出 ONNX、ONNX Runtime 推理验证、ONNX→MindIR 转换、MindSpore Lite 推理实现,并交付文档与常见问题。用户想把某个开源模型迁移到 MSLite 部署时调用。
Build configuration, CMake options, cross-compilation and packaging. Use when building MindSpore Lite, configuring CMake, cross-compiling for ARM/iOS/MCU, packaging release archives, or troubleshooting build errors.
Model conversion pipeline, parser development, optimization passes and quantization. Use when converting models to .ms, writing parser code, implementing optimizer passes, or configuring quantization.
Debugging, unit testing, benchmarking and performance analysis. Use when running gtest, benchmark tools, profiling latency or accuracy, diagnosing operator precision issues, delegate fallback, or memory leaks.
Device-side inference with LiteRT, NNACL and hardware delegates. Use for mobile/IoT inference, Android/iOS integration, NPU/GPU/CoreML delegates, Micro codegen for MCU, on-device training, or C/C++/Java/Python API usage with .ms models.
| name | performance-optimization |
| description | MindSpore Lite(Ascend)模型性能优化总攻略。做基线/profiling、融合算子改写、推理免拷贝、PTQ int8 量化、精度对齐与归档时调用。本文为总览与索引,细化策略见 references/。 |
为任意模型提供可复用的性能优化落地路径:在不破坏精度的前提下,把端到端推理(Model execute time、Host↔Device 拷贝、显存占用)从基线优化到目标值,并保证性能可复现。
本文档是总览与索引:给出性能优化的总体策略与「答题方向」(先量、再定位、再改一处、再验证),各优化手段的细节落到
references/下独立文档,便于后续持续补充新手段。
Custom 节点)$Benchmark 参数(warmUp/loopCount)、固定精度对齐方式;不同口径之间不比较。MindSpore Lite(Ascend)的性能优化可以从两个角度切入,二者互补:
| # | 优化手段 | 切入角度 | 适用场景 | 预期收益 | 细节文档 |
|---|---|---|---|---|---|
| 1 | 融合算子 / Custom 改写 | 导出 / 图改写 | 后端(CANN)有更优融合算子(Attention/Norm/Add+Norm/激活/Rope 等),需让图出现 Custom 节点 | 减少算子数、走后端融合 kernel | references/custom_operator_fusion.md |
| 2 | 推理免拷贝 | 运行 / 调度 | 模型输出会被下一阶段继续使用:多模型流水线、自回归 decode、KV cache、多分支复用 | 降低 Host↔Device 拷贝与重复分配 | references/zero_copy_inference.md |
| 3 | PTQ Int8 量化导出 | 导出 / 图改写 | 访存密集型大线性层(LLM decode 等)需低比特推理减带宽/显存 | 减半带宽、降显存 | references/torch_ptq_int8.md |
| 4 | Profiling 驱动的运行时调优 | 运行 / Profiling | 已有可跑模型,需定位热点算子并尝试精度模式 / 融合开关 / 算子替换(PFA、QKV 合并、MatMul 选型、混合精度、解融合等) | 针对热点算子的定向加速 | references/other_opt_methods.md |
⚠️ 动手前必读(强制):上表就是「任务 → 细化文档」的匹配表。
references/不会随 skill 自动加载——确定要做哪类优化后,必须先用Read工具读对应的references/文档,再动手改代码/模型。Custom 属性规范、PTQ 校准流程、免拷贝 I/O 模板、profiling/精度对齐命令等关键细节只存在于细化文档中;只读本文件就动手,必然遗漏这些步骤、导致转换失败或返工。新增优化手段时,在
references/下新建一篇细化文档,并在上表追加一行即可,无需改动既有内容。
无论用哪种优化手段,都按下面这个闭环推进。具体的命令模板($Benchmark / msprof / 精度对齐脚本)见 references/other_opt_methods.md。
固定口径 ─► 跑基线 ─► profiling 定位热点 ─► 提假设、改一处 ◄────────┐
│ │
▼ │ 下一项
重新 benchmark(execute/H2D/D2H)─► 精度对齐 │
│ │
┌─ 达标+收益 → 归档(新基线) ─┘
└─ 否 → 回退改动 ───────────┘
「固定口径」是一次性设置;每轮回路回到「提假设、改一处」,而非重新设口径。
$Benchmark 参数、精度对齐基线(推荐 non-fuse ONNXRuntime CPU)。GLOG_v=1,从日志抓 Model execute in ... us 与 AclrtMemcpy [H2D]/[D2H] ... us。msprof 包裹 $Benchmark,导出 op_statistic_*.csv / op_summary_*.csv,找出热点算子与副作用(Transpose/TransData/Cast 是否暴涨)。Read 对应的 references/ 细化文档(严格按其中的属性规范 / 校准流程 / I/O 模板 / 命令执行),每次只改一个点。profiling 只用于解释“为什么”,不能替代 benchmark 的口径。
.mindir)input_index 合法(详见 custom_operator_fusion.md)细化策略文档(位于 references/):