0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ONNX:モデルの相互運用

ONNXとは

image.png
モデルの学習ができるフレームワーク(Tensorflow・Pytorch・Scikit-Learnなど)が増えたことで、複数の異なるハードウェア(携帯・パソコン・工場のロボット等)にモデルを持ち込んで推論するのが難しくなってきました。理由は、フレームワーク及び使用するハードウェアによって用意されているリソース、必要なリソース、必要な作業が異なるからです。

以前までは、Pickleみたいに学習したモデルをバイトストリームに保存し、どこからでも使用することは可能でしたが、自由度がかなり縛られてしまいます。

そこで生まれたのがONNX (Open Neural Network eXchange)。

ONNXは共通した「オペレータ」と「ファイル形式」を定義するオープンソーススタンダードで、異なるフレームワークだろうがモデルの開発をしやすくしてくれます。横文字がたくさん並んでいますが、とりあえず、↑画像のような中間ファイル的なものです。

また、ONNX独自のRUNTIMEもあるため、ONNX形式のモデルで推論することもできます。

Use Case

[例1]
何かしらのフレームワークで学習したモデルをJetsonなどのエッジ端末で推論したいときに、エッジ端末のGPUはそこまで性能が高くないのでモデルを高速化する必要があります。ONNXがあることで、どんなフレームワークを使ってようが、高速化するための変換作業がスムーズになります。

[例2]
Pythonで学習を終えたモデルをPythonを用いて推論するのが遅いから、c++を用いて早く推論がしたいケースがあったとします。ONNXはC++のAPIも用意されているため、モデルをONNX形式に変換するだけで、簡単にC++でも推論することができます。


Writed by F.K(20代・入社3年目)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?