matlab-deploy-ai-model について
PyTorchおよびLiteRTモデルからC/C++またはCUDAコードを生成するMATLABスキルです。モデルの読み込み、数値確認、MEX生成から製品コード生成までを扱い、Simulink連携や任意のハードウェア展開にも対応します。
主な機能
- 01PyTorchおよびLiteRTモデルの読み込み
- 02CPUまたはCUDA MEXの生成と検証
- 03C/C++ライブラリまたは実行ファイルの生成
- 04対応モデルのSimulink連携
- 05MATLABとのモデル出力比較
活用シーン
- 01.pt2モデルから展開可能なコードを生成
- 02.tfliteモデルをC/C++出力に変換
- 03コード生成前にモデルの数値を確認
- 04Simulinkで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(量子化、圧縮、転移学習)—
dlnetworkを返すimportNetworkFromPyTorch(PyTorch)、importNetworkFromTensorFlow(SavedModel)、またはimportNetworkFromKeras(.keras/.h5)を使用してください。モデル圧縮(dlquantizerによる INT8 量子化、プルーニング、射影)を使用した編集可能なdlnetworkのデプロイ、またはexportNetworkToSimulinkのワークフローには、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. エントリーポイント関数の作成
次の処理を行う、コード生成に対応したエントリーポイント関数を作成します。
- ファイルパスからモデルを読み込む
- 入力に対して推論を実行する
- 出力を返す
モデルのファイルパスは、コンパイル時に認識されるよう coder.Constant でラップする必要があります。
3. 数値の検証
MATLAB の推論出力とソースフレームワークの出力を比較し、モデルが正しく読み込まれていることを確認します。両方の環境で同じ入力データを使用し、許容誤差を指定して比較します。
4. MEX を最初に生成
ホストマシンで検証できるように、ライブラリや実行可能ファイルを生成する前に、必ず MEX を生成してください。
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 のプロパティ名の対応関係、および
slbuildのset_paramパターンについては、matlab-deploy-embedded-codeスキルを参照してください。 - DNN 推論固有の設定(サードパーティの DL ライブラリを無効にする
DLTargetLibrary/DeepLearningConfig、重みをデータファイルにシリアル化するLargeConstantGeneration)については、references/dnn-codegen-options.mdを参照してください。
7. Simulink で使用する
Simulink との統合には、dlosslib 専用の PyTorch ExportedProgram ブロックを使用します。ModelFilePath に .pt2 ファイルを設定すると、入力/出力の形状が自動検出されます。エントリーポイント関数や coder.Constant は不要です。
前処理や後処理は、専用ブロックの周囲に Simulink ブロックを配置して実行できます。すべてを単一のブロックにまとめる必要がある場合は、loadPyTorchExportedProgram と invoke を使う MATLAB Function ブロックを使用します(エントリーポイントと同じパターンですが、モデルパスは文字列リテラルであり、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を返します。コード生成の前に、量子化、射影、プルーニング、またはexportNetworkToSimulinkのためにdlnetworkが必要な場合は、代わりにmatlab-deploy-embedded-aiに案内してください
参考資料
references/pytorch-workflow.md— PyTorch 固有のワークフロー全体を説明しています。API の振り分け、エントリーポイントのパターン、エクスポートのガイダンス、よくある間違い、規約が含まれます。PyTorch/.pt2 モデルのコード生成タスクでは参照してください。さらに詳しい PyTorch の資料(API シグネチャ、データレイアウト、数値検証、サポート対象モデル)へのリンクがあります。references/export-pytorch-models.md—torch.exportを使って、イーガーモードの PyTorch モデルを.pt2にエクスポートする方法を説明しています(読み込みより前の手順です)。PyTorch モデルはあるものの.pt2ファイルがまだない場合や、torch.exportのSerializeError/キーワード引数の不一致エラーが発生した場合に参照してください。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— Python のtf.lite.TFLiteConverterAPI を使って、TensorFlow SavedModel/Keras/.h5 を.tfliteに変換する方法を説明しています。TensorFlow モデルはあるものの.tfliteファイルがまだない場合に参照してください。references/litert-numeric-verification.md— LiteRT モデルの MEX の数値結果を MATLAB の参照結果と照合する方法を説明しています(許容誤差のガイダンス、よくある不一致を含みます)。references/codegen-workflow.md— PyTorch と LiteRT の両方に共通するコード生成の手順を説明しています。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— SIMD 命令セット、OpenMP によるマルチスレッド化、リダクションループのベクトル化など、MATLAB Coder の一般的なチューニングを説明しています。DNN 推論に固有ではないパフォーマンスオプションについて参照してください。matlab-deploy-embedded-ai— モデル圧縮(量子化、プルーニング、射影)を伴うdlnetworkベースのコード生成と、exportNetworkToSimulinkワークフロー(パターン 1)を説明しています。ソースが.pt2/.tfliteファイルではなく、MATLAB で編集可能なdlnetworkの場合に使用してください。matlab-optimize-gpu-codegen— デプロイ先が CPU や組み込みハードウェアではなく NVIDIA GPU の場合に使用する、CUDA ターゲットのコード生成チューニング(coder.gpuConfig、カーネル融合、メモリ階層のオプション)を説明しています。
Copyright 2026 The MathWorks, Inc.