移植性のためにONNXへエクスポートする
フレームワークやランタイムをまたいでモデルを移行します。
「移植性のためにONNXへエクスポートする」はCoddyKit上の無料MLOps Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMLOps Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MLOps Academyコースには全4レッスンが含まれています。
移植性の問題
PyTorchで学習したモデルを、C++やブラウザーでサービングしたいとします。特定のフレームワークに固定されたファイルでは大変です。ONNXがこの問題を解決します。🌍
ONNXとは
ONNXは、オープンで共有可能なモデル形式です。計算をグラフとして記述するため、多くのフレームワークやランタイムで読み取れます。
演算子のグラフ
内部的には、ONNXモデルはMatMulやReluなどの標準operatorsと、学習済みの重みからなるグラフです。
一度学習してどこでも実行する
一度エクスポートすれば、同じファイルを異なるruntimesを通じてサーバー、モバイル、エッジデバイスで実行できます。再学習は必要ありません。
PyTorchからエクスポートする
PyTorchにはエクスポーターが組み込まれています。モデルとサンプル入力をtorch.onnx.exportに渡すと、グラフをトレースできます。
import torch
torch.onnx.export(model, sample, 'model.onnx')サンプル入力が必要な理由
エクスポーターはサンプル上でモデルを実行し、どの演算が実行されるかを記録します。そのトレース結果が、保存されるgraphになります。
sklearnから変換する
scikit-learnではskl2onnxライブラリを使います。モデルと入力形状を渡すと、ONNXグラフが生成されます。
from skl2onnx import to_onnx
onx = to_onnx(model, X[:1])ONNX Runtimeで実行する
ONNX Runtimeは、高速でクロスプラットフォームなエンジンです。.onnxファイルをセッションに読み込み、runを呼び出して予測を取得します。
import onnxruntime as ort
sess = ort.InferenceSession('model.onnx')速度とハードウェア
ONNX Runtimeは、CUDAやTensorRTなどのexecution providersを使って、異なるハードウェア上で同じモデルを高速化できます。⚡
Opsetのバージョン
各エクスポートでは、使用可能な演算子を定義するopsetバージョンを指定します。ランタイムがサポートするバージョンに合わせないと、読み込みに失敗します。
必ず出力を検証する
エクスポート後、両方のモデルに同じ入力を与えて比較します。提供前に、ONNXの結果が元のモデルとmatchesすることを確認してください。✅
理解度チェック
ONNXについてどれだけ理解できたか確認しましょう。
まとめ
モデルをONNXにエクスポートし、ONNX Runtimeでさまざまなハードウェア上で実行できるようになりました。opsetに注意し、出力が一致することを必ず検証しましょう。🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「移植性のためにONNXへエクスポートする」レッスンは無料ですか?
はい。「移植性のためにONNXへエクスポートする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MLOps Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MLOps Academyコースには全4レッスンが含まれています。
「移植性のためにONNXへエクスポートする」で何を学びますか?
フレームワークやランタイムをまたいでモデルを移行します。 ブラウザで直接実行するハンズオンコードでMLOps Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
MLOps Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのMLOps Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「移植性のためにONNXへエクスポートする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このMLOps Academyレッスンでコードを書いて実行できますか?
はい。すべてのMLOps Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- PickleとJoblibでシリアライズする
- MLflow Model Flavor
- 移植性のためにONNXへエクスポートする
- モデルのシグネチャとスキーマを定義する