关于 matlab-deploy-ai-model
这是一个从 PyTorch 和 LiteRT 模型生成 C/C++ 或 CUDA 代码的 MATLAB 技能,涵盖模型加载、数值检查、MEX 和生产代码生成。适用于推理部署,也包括 Simulink 集成和可选的硬件部署。
主要功能
- 01加载 PyTorch 和 LiteRT 模型
- 02生成并验证 CPU 或 CUDA MEX
- 03生成 C/C++ 库或可执行文件
- 04将支持的模型集成到 Simulink
- 05对照 MATLAB 验证模型输出
适用场景
- 01从 .pt2 模型生成可部署代码
- 02将 .tflite 模型转换为 C/C++ 输出
- 03代码生成前检查模型数值
- 04在 Simulink 中使用 PyTorch 推理
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-deploy-ai-model安装后在 Claude Code 中输入/matlab-deploy-ai-model确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.yamlreferences/codegen-workflow.mddnn-codegen-options.mdexport-pytorch-models.mdlitert-numeric-verification.mdlitert-workflow.mdpytorch-api-reference.mdpytorch-data-layout.mdpytorch-export-gotchas.mdpytorch-export-patterns.mdpytorch-numeric-verification.mdpytorch-supported-models.mdpytorch-workflow.mdsimulink-workflow.mdtensorflow-to-litert-conversion.md详细介绍
从 AI 模型生成 C/C++/CUDA 代码
使用 MATLAB Coder 或 GPU Coder 从 AI 模型生成可部署的 C/C++ 或 CUDA 代码。无论模型框架如何,工作流都遵循相同的常见模式:加载、检查、编写入口函数、生成 MEX、验证,然后生成生产代码。
适用场景
- 用户想从 AI 模型(PyTorch、LiteRT)生成 C/C++/CUDA 代码
- 用户有模型文件(.pt2、.tflite),想将其加载到 MATLAB 中
- 用户想为 AI 模型实现 MEX 加速
- 用户想从 AI 模型生成 CUDA 代码或 GPU 加速的 MEX
- 用户想将 AI 模型部署到硬件
- 用户想在 Simulink 中使用 PyTorch 或 LiteRT 模型(用于仿真或代码生成)
- 用户想验证源框架与 MATLAB 之间的 AI 模型数值结果
不适用场景
- 常规 MATLAB Coder 用法(codegen 语法、配置调整、编写适用于 codegen 的代码)
- 用于 Deep Learning Toolbox 工作流的可编辑 dlnetwork(量化、压缩、迁移学习)——使用
importNetworkFromPyTorch(PyTorch)、importNetworkFromTensorFlow(SavedModel)或importNetworkFromKeras(.keras/.h5),这些函数会返回dlnetwork。对于使用模型压缩(通过dlquantizer进行 INT8 量化、剪枝、投影)或exportNetworkToSimulink工作流部署可编辑dlnetwork的场景,请使用matlab-deploy-embedded-ai(模式 1)。 - 训练或微调——此技能仅用于推理代码生成
支持的框架
| 框架 | 模型格式 | 加载函数 | 状态 |
|---|---|---|---|
| PyTorch | .pt2 | loadPyTorchExportedProgram | 支持(R2026a+) |
| LiteRT / TFLite | .tflite | loadLiteRTModel | 支持(R2026a+) |
有关 PyTorch 特定详情(API 路由、入口函数模式、导出工作流、数据布局、常见错误),请参见 references/pytorch-workflow.md。
有关 LiteRT 特定详情(API 路由、入口函数模式、可变尺寸输入、Simulink 集成、惯例),请参见 references/litert-workflow.md。
有关将 TensorFlow/Keras/.h5 转换为 .tflite 的说明,请参见
references/tensorflow-to-litert-conversion.md。
通用工作流
任何框架的代码生成工作流都遵循相同的步骤:
1. 加载并检查
加载模型并检查其输入/输出规格,以确定预期的形状和类型。
2. 编写入口函数
创建一个兼容 codegen 的入口函数,该函数:
- 从文件路径加载模型
- 对输入运行推理
- 返回输出
模型文件路径必须使用 coder.Constant 封装,以便在编译时确定。
3. 验证数值结果
将 MATLAB 推理输出与源框架进行比较,以确认加载正确。在两个环境中使用相同的输入数据,并通过容差进行比较。
4. 生成 MEX(优先!)
始终先生成 MEX,再生成 lib/exe,以便在主机上进行验证:
CPU MEX:
cfg = coder.config("mex");
codegen -config cfg -args {coder.Constant("model_file"), input} entryPoint
CUDA MEX(GPU 加速):
cfg = coder.gpuConfig("mex");
codegen -config cfg -args {coder.Constant("model_file"), input} entryPoint
有关 CPU MEX SIMD 加速(Intel/AMD 上 AVX2 的 SIMDAcceleration = 'Full'),请参见 matlab-generate-code 技能。有关 DNN 推理专用 MEX 的 AVX2 上限,请参见 references/dnn-codegen-options.md。
5. 验证 MEX 输出
使用带容差的 matlab.unittest,将 MEX 输出与 MATLAB 参考结果进行比较:
refOut = entryPoint("model_file", input);
mexOut = entryPoint_mex("model_file", input);
testCase = matlab.unittest.TestCase.forInteractiveUse;
testCase.verifyThat(mexOut, matlab.unittest.constraints.IsEqualTo(refOut, ...
'Within', matlab.unittest.constraints.AbsoluteTolerance(single(1e-5))));
6. 生成库/可执行文件
验证 MEX 后,生成生产代码:
cfgLib = coder.config("lib");
cfgLib.TargetLang = "C++"; % set to "C++" for C++ output; default is "C"
codegen -config cfgLib -args {coder.Constant("model_file"), input} entryPoint
对于 DLL:coder.config("dll")。对于可执行文件:coder.config("exe")。
CUDA 变体: 将 coder.config 替换为 coder.gpuConfig。
性能调优:
- 通用选项(SIMD 指令集、归约循环向量化、多线程循环):请参阅
matlab-generate-code技能。 - MATLAB Coder 与 Simulink Coder 属性命名的对应关系,以及
slbuildset_param模式:请参阅matlab-deploy-embedded-code技能。 - DNN 推理专用选项(通过
DLTargetLibrary/DeepLearningConfig禁用第三方 DL 库,通过LargeConstantGeneration将权重序列化到数据文件):请参阅references/dnn-codegen-options.md。
7. 在 Simulink 中使用
如需与 Simulink 集成,请使用 dlosslib 中专用的 PyTorch ExportedProgram 模块——将 ModelFilePath 设置为 .pt2 文件,它会自动检测输入/输出形状。无需入口函数或 coder.Constant。
可以使用专用模块周围的 Simulink 模块进行预处理和后处理。如需将所有内容放在单个模块中,请使用 MATLAB Function 模块,并搭配 loadPyTorchExportedProgram + invoke(与入口函数采用相同模式,但模型路径是字符串字面量——无需 coder.Constant)。
两种方式都支持通过 slbuild 生成代码(需要固定步长求解器和 ERT 或 GRT 目标)。完整详情请参阅 references/simulink-workflow.md。
8. 部署到硬件(可选——需要 Embedded Coder)
对于嵌入式部署,请使用相同的入口函数,并配置 Embedded Coder。有关 ERT 配置、硬件设置、PIL/SIL 验证和特定目标选项,请参阅 matlab-deploy-embedded-code 技能。如果未安装该技能,请让用户安装。
关键函数
| 函数 | 用途 | 包 | 起始版本 |
|---|---|---|---|
coder.Constant | 将参数设为编译时常量 | MATLAB Coder | R2011a |
coder.gpuConfig | 创建 GPU(CUDA)代码生成配置 | GPU Coder | R2017b |
codegen | 生成代码 | MATLAB Coder | R2011a |
loadPyTorchExportedProgram | 将 .pt2 加载到 MATLAB 中 | MATLAB Coder Support Package for PyTorch and LiteRT Models | R2026a |
loadLiteRTModel | 将 .tflite 加载到 MATLAB 中 | MATLAB Coder Support Package for PyTorch and LiteRT Models | R2026a |
约定
- 始终检查模型的输入规格,确保输入形状和类型正确
- 始终先生成 MEX 并验证,然后再继续生成库/可执行文件
- 始终对模型文件路径参数使用
coder.Constant - 输入数据通常为单精度(请检查模型输入规格以确认)
- 在此技能中不要使用
importNetworkFromPyTorch、importNetworkFromTensorFlow或importNetworkFromKeras——它们会通过不同路径返回dlnetwork。如果用户需要在代码生成前使用dlnetwork进行量化、投影、剪枝或调用exportNetworkToSimulink,请转到matlab-deploy-embedded-ai
参考资料
references/pytorch-workflow.md— 完整的 PyTorch 专用工作流:API 路由、入口点模式、导出指南、常见错误和约定。处理任何 PyTorch/.pt2 模型代码生成任务时,请参阅此文档。 其中还链接了更深入的 PyTorch 参考资料(API 签名、数据布局、数值验证、支持的模型)。references/export-pytorch-models.md— 使用torch.export将 eager 模式的 PyTorch 模型导出为.pt2(加载前的步骤)。如果用户有 PyTorch 模型但还没有.pt2文件,或遇到torch.exportSerializeError/ kwarg 不匹配错误,请参阅此文档。 其中还链接了pytorch-export-patterns.md(按来源分类的模板)和pytorch-export-gotchas.md(torch 2.11 序列化修复)。references/simulink-workflow.md— Simulink 集成:专用的 PyTorch ExportedProgram 模块(路径 A)与 MATLAB Function 模块(路径 B)、模块掩码参数、代码生成配置,以及与命令行代码生成的主要差异。references/litert-workflow.md— 完整的 LiteRT 专用工作流:API 路由(loadLiteRTModel→inputSpecifications→invoke)、入口点模式、可变大小输入处理、Simulink 集成和约定。处理任何 LiteRT/.tflite 模型代码生成任务时,请参阅此文档。references/tensorflow-to-litert-conversion.md— 通过 Pythontf.lite.TFLiteConverterAPI 将 TensorFlow SavedModel/Keras/.h5 转换为.tflite。如果用户有 TensorFlow 模型但还没有.tflite文件,请参阅此文档。references/litert-numeric-verification.md— 针对 LiteRT 模型,将 MEX 数值结果与 MATLAB 参考结果进行验证(容差指南、常见不匹配情况)。references/codegen-workflow.md— PyTorch 和 LiteRT 通用的代码生成步骤:MEX 生成、MEX 验证、库/可执行文件目标、coder.Constant用法,以及coder.DeepLearningConfig说明。references/dnn-codegen-options.md— DNN 推理专用的代码生成选项:用于纯 C DL 路径的DLTargetLibrary/DeepLearningConfig('none')、用于将大型 DNN 权重序列化为数据文件的LargeConstantGeneration,以及 DNN 推理场景下的 MEX SIMD 上限。当通用文件中的选项需要结合 DNN 特定背景来说明时(例如,“MEX SIMD 上限之所以重要,是因为目标是推理”),请阅读此文档。
另请参阅
matlab-generate-code— 通用 MATLAB Coder 调优(SIMD 指令集、OpenMP 多线程、归约循环向量化)。对于非 DNN 推理专用的性能选项,请参阅此文档。matlab-deploy-embedded-ai— 基于dlnetwork的代码生成,包含模型压缩(量化、剪枝、投影)和exportNetworkToSimulink工作流(模式 1)。如果源模型是 MATLAB 中可编辑的dlnetwork,而不是.pt2/.tflite文件,请使用此工具。matlab-optimize-gpu-codegen— 当部署目标为 NVIDIA GPU,而非 CPU 或嵌入式硬件时,用于 CUDA 目标代码生成调优(coder.gpuConfig、内核融合、内存层级选项)。
版权所有 2026 The MathWorks, Inc.