LoginSignup
44
34

More than 1 year has passed since last update.

ONNX 概要

Posted at

はじめに

Edge AIパイプラインツールのWeDXをGitHubに公開したら、ONNXモデルについて整理する必要があったので、この機会で整理しておきます。

ONNXとは

  • Open Neural Network eXchangeの略です。
  • ディープラーニングや機械学習モデルのような人工知能モデル(以下、AIモデル)を表現するためのフォーマットです。
  • Microsoftさんとパートナー コミュニティによって作成されました。(GitHub - onnx)
  • ONNXは日本語で「オニキス」と発音することが多いです。
  • ONNXフォーマットで作られたモデルのことをONNXモデルで呼ばれたりします。
    image.png

ONNXが必要な理由

一つのAIモデルだけで業務利用に達するレベルにはいかないので複数のAIモデルを組み合わせることで精度高く表現できます。ここで複数のAIモデルはPyTorch, TensorFlow, scikit-learnなどの各種フレームワークで学習したモデルのことです。

様々なフレームワークのAIモデルは該当するプラットフォームで推論するのが一般的であり、フレームワークとハードウェア(クラウドまたはエッジ)と組み合わせを最適化するのはハドル高くなりがちです。

ONNXを使うと異なるフレームワーク間で学習したモデルを運用できますし、ハードウェアのサポートによって最適化されます。
image.png

ONNXモデルの取得方法

ONNX Model Zoo

GitHubのONNX Model Zooで学習済みモデルのONNXモデルをApacheライセンス(無料?)でダウンロードできます。

とりあえず、ここで自分がほしいAIモデルをダウンロードして手軽くスタートしても良いと思います。
image.png

ONNXモデル変換

別の形式で作成された既存のAIモデルをONNXモデルに変換します。

変換するにはフレームワークでネイティブサポートされていると変換コマンドで変換できます。サポートしてないフレームワークについては関連変換ツールがほぼ用意されているのでそのツール経由で変換できます。
image.png

SaaSサービスによるONNXモデル作成

Azure Custom VisionのようなクラウドでAIモデルを作成できるSaaS(Software as a Service)サービスからONNXモデルを作成できます。自分のドメインに合わせてONNXモデルを作成できますし、無料でプランも用意されています。
image.png

PaaSサービスによるONNXモデル作成

本格的にAIモデルを作成することになるとAzure Machine LearningのようなPaaS(Platform as a service)サービスを使うことになります。好きなフレームワークを使ってONNXモデルを作成できます。
image.png

おまけ

ONNX Runtime

ONNXモデルの推論エンジンで公開されてどんどん機能とサポート領域が広がっています。

推論環境をONNX Runtimeで構築したら、異なるフレームワークで作成されたAIモデルをONNXモデルに変換しておけば、そのままONNX Runtimeで推論できます。

ONNX RuntimeはNvidia CUDAのようなハードウェアアクセラレーションの種類によってインストール方法が異なります。
image.png

ONNXモデルの視覚化ツール

Netronというツールを使用するとONNXモデルをグラフで表示することができますので必須ツールでも言えるでしょう。

image.png

44
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
34