Pocket Guide

この実践ガイドでは、MATLAB と Python® ベースのモデルを組み合わせて、AI ワークフローに統合する方法をご紹介します。まずは、Deep Learning Toolbox を使用した MATLAB、PyTorch®、TensorFlow™ 間のモデル変換について解説します。

MATLAB に PyTorch と TensorFlow を統合することで、以下が可能になります。

  •   プラットフォームやチームをまたいだ連携の促進
  •   モデルの性能評価やシステム統合のテスト
  •   エンジニアード システムの設計における MATLAB と Simulink ツールの活用
変換フローの図。

MATLAB、PyTorch、TensorFlow 間のモデル変換

Deep Learning Toolbox と MATLAB を使用すると、事前学習済みのモデルを活用して、あらゆるタイプのディープ ニューラル ネットワークを設計できます。しかし、AI に携わるすべての技術者が MATLAB で作業しているとは限りません。AI 対応システムを設計する際に異なるプラットフォームやチーム間の連携を円滑に進めるために、Deep Learning Toolbox は PyTorch  や TensorFlow と連携します。

PyTorch/TensorFlow モデルを MATLAB にインポートする理由

PyTorch や TensorFlow のモデルを MATLAB のネットワークモデルに変換すると、関数やアプリを含む MATLAB の組み込み AI ツールと一緒に使用できます。これにより、転移学習、説明可能な AI やモデルの検証、システムレベルのシミュレーションとテスト、ネットワーク圧縮、ターゲット環境への展開に向けた自動コード生成などが可能になります。

インポートに向けた PyTorch/TensorFlow モデルの準備

PyTorch や TensorFlow のモデルを MATLAB にインポートする前に、正しい形式でモデルを準備して保存する必要があります。Python では、以下のコードを用いてモデルを準備できます。

PyTorch インポーターでは、トレース済みの PyTorch モデルが必要です。トレース後は、PyTorch モデルを保存します。PyTorch モデルのトレース方法については、Torch のドキュメンテーション「Tracing a function」を参照してください。

X = torch.rand(1,3,224,224)
traced_model = torch.jit.trace(model.forward,X)
traced_model.save("torch_model.pt")

TensorFlow モデルは SavedModel 形式で保存する必要があります。

model.save("myModelTF")

PyTorch/TensorFlow モデルのインポート方法

MATLAB への PyTorch と TensorFlow の統合を示す図。

PyTorch や TensorFlow のモデルは、わずか 1 行のコードで MATLAB にインポートして、MATLAB のネットワークモデルに変換することができます。

importNetworkFromPyTorch 関数を使用し、対象の PyTorch モデルに合わせた正しい入力サイズを PyTorchInputSizes に指定します。PyTorch モデルにはもともと入力層が含まれていないため、この指定により、インポート時に画像入力層がネットワークモデルに作成されます。詳細については、「PyTorch や TensorFlow からモデルをインポートするためのヒント」を参照してください。

net = importNetworkFromPyTorch("mnasnet1_0.pt",PyTorchInputSizes=[NaN,3,224,224])

TensorFlow からネットワークモデルをインポートするには、importNetworkFromTensorFlow 関数を使用します。

PyTorch/TensorFlow モデルの対話的なインポート

ディープ ネットワーク デザイナー アプリを使用して、PyTorch モデルを対話的にインポートすることができます。インポートしたネットワークモデルは、アプリ上で表示、編集、解析が可能です。Simulink に直接エクスポートすることもできます。

MATLAB から PyTorch/TensorFlow へのモデルのエクスポート方法

MATLAB のモデルを PyTorch、ONNX、TensorFlow などにエクスポートする方法を示す図。

MATLAB のネットワークモデルは TensorFlow や PyTorch にエクスポートして共有できます。TensorFlow には exportNetworkToTensorFlow 関数を使用して直接エクスポートし、PyTorch には exportONNXNetwork 関数を用いて ONNX™ 経由でエクスポートします。

exportNetworkToTensorFlow(net,"myModel")

ブラウザーで試す

TensorFlow モデルをインポートして予測結果を説明してみましょう。

LIME (peacock)。

MATLAB と Simulink 内での Python ベースのモデルの同時実行

Python ベースの AI モデルを MATLAB  のワークフローまたは Simulink  システム内で直接使用して、モデルの性能評価やシステム統合のテストを行います。

同時実行とモデル変換の比較

まず、目的のタスクに最も適したワークフローを選択できるように、PyTorch または TensorFlow モデルを MATLAB 環境で同時実行する場合と、外部プラットフォームのモデルを MATLAB のネットワークモデルに変換する場合を比較します。

 

同時実行

モデル変換

PyTorch / TensorFlow モデルに対応

はい

いいえ

Simulink でのモデルのシミュレーション

はい

はい

コードの自動生成

いいえ

はい

説明可能性の手法の適用

物体検出モデルのみ対応

はい

堅牢性・信頼性の検証

いいえ

はい

ローコード AI アプリの使用

いいえ

はい

ネットワークの圧縮

いいえ

はい

MATLAB での Python ベースのモデルの同時実行

PyTorch や TensorFlow のモデル、または任意の Python コードを MATLAB から直接呼び出すことができます。これにより、たとえば、最も正確な予測を行うモデルを見つけたい場合などに、MATLAB で構築した AI ワークフロー内で Python ベースのモデルを比較できるようになります。

PyTorch や TensorFlow のモデル、または Python コードを MATLAB から直接呼び出す方法を示す図。

Simulink での Python ベースのモデルの同時実行

Simulink の同時実行ブロックを使用し、PyTorch、TensorFlow、ONNX、カスタム Python モデルをシステム内でシミュレーションしてテストします。これにより、設計の反復、モデルの動作評価、システム性能のテストが可能になります。

Simulink の同時実行ブロックを使用し、PyTorch、TensorFlow、ONNX、カスタム Python モデルをシステム内でシミュレーションしてテストする方法を示す図。

AI モデルに Simulink を使用する理由

AI とモデルベースデザインを組み合わせることにより、ディープラーニング モデルを大規模システムに統合する際のテストだけでなく、バーチャルセンサーの設計などの用途において、複雑なシステムの設計をより迅速かつ高度に進めることができます。

ディープラーニングを使用した Simulink による車線および車両の検出

Python からの MATLAB の呼び出し

Python からの MATLAB の呼び出しを示す図。

AI ワークフローにおいて MATLAB と Python を組み合わせるもう1つの方法は、Python 環境から MATLAB を呼び出すことです。この方法を利用すれば、MATLAB の分野別ツールを用いて Python モデルに入力するためのデータを準備したり、Python ベースの AI モデルの判断を可視化して解釈するために MATLAB の AI ツールを呼び出したりすることができます。

MATLAB Online でリポジトリを開く

MATLAB Online で、LLM と連携できます。MATLAB コードを含む File Exchange や  GitHub® のリポジトリには、[MATLAB Online で開く] というボタンがあります。このボタンをクリックすると、リポジトリが直接 MATLAB Online で開きます。


MATLAB から LLM へのアクセス

MATLAB では、gpt-4、llama3、mixtral などの一般的な大規模言語モデル (LLM) に API 経由またはローカルにモデルをインストールすることでアクセスできます。その後は、任意のモデルを使用してテキストを生成できます。また、MATLAB に組み込まれている事前学習済み BERT モデルを利用することもできます。

自然言語処理 (NLP) のための LLM

LLM は単語間の複雑な関係性や人間の言語に含まれる微妙な意味の違いを捉えることができるため、自然言語処理 (NLP) に変革をもたらしました。MATLAB から LLM を利用することは、NLP パイプラインの一部の機能にすぎません (MATLAB の NLP 向け AIを参照)。MATLAB のツールを活用することで、NLP パイプライン全体を構築できます。たとえば、Text Analytics Toolbox の関数を使ってテキストデータへのアクセスや前処理を行うことができます。

自然言語処理ワークフローの図。

自然言語処理パイプライン。

リポジトリ: MATLAB を使用した LLM

MATLAB を OpenAI® Chat Completions API (ChatGPT™ の基盤)、Ollama™ (ローカル LLM 向け)、Azure® OpenAI サービスと連携させるために、「MATLAB を使用した LLM」リポジトリを利用することができます。

OpenAI API 経由で LLM にアクセス

このリポジトリ内のコードを使用することで、MATLAB 環境から OpenAI API に接続し、GPT-4 や GPT-4 Turbo などのモデルを使って、チャットボットの構築や感情分析など、さまざまな自然言語処理 (NLP) タスクを実行できます。OpenAI API と連携させるには、OpenAI API キーを取得する必要があります。API キーと料金の詳細については、「OpenAI API」を参照してください。

ユーザーからの問い合わせがチャットボットを経由して応答を生成する流れを示す図。

チャットボットの構築。

Azure OpenAI Service 経由で LLM にアクセス

Azure OpenAI Service を利用するには、まず Azure アカウントにモデルを展開し、そのモデルに対するアクセスキーを取得する必要があります。Azure OpenAI には、OpenAI 社と共同で開発された API が採用されており、Microsoft® Azure のセキュリティ機能が組み込まれています。「MATLAB を使用した LLM」リポジトリでは、MATLAB から Azure OpenAI Service に接続するためのコードが提供されています。

Ollama 経由でローカル LLM にアクセス

リポジトリ内のコードを使用して、MATLAB からローカルの Ollama サーバーに接続することで、llama3、mistral、gemma などの広く利用されているローカル LLM にアクセスできます。ローカル LLM は、手持ちのデータを活用して LLM の精度を高めることができる検索拡張生成 (Retrieval-Augmented Generation:RAG) などの自然言語処理タスクに利用できます。

検索拡張生成のワークフローの図。

検索拡張生成のワークフロー。

ブラウザーで試す

MATLAB と OpenAI API を使って簡単なチャットボットを作成してみましょう。