MLOps Academy · レッスン

移植性のためにONNXへエクスポートする

フレームワークやランタイムをまたいでモデルを移行します。

レッスン 3/413 ステップ

「移植性のために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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. PickleとJoblibでシリアライズする
  2. MLflow Model Flavor
  3. 移植性のためにONNXへエクスポートする
  4. モデルのシグネチャとスキーマを定義する
← MLOps Academyに戻る