Slide 1

Slide 1 text

0 ONNXハンズオン 2024-05-24 第91回NearMe技術勉強会 Takuma KAKINOUE

Slide 2

Slide 2 text

1 ONNXとは ● Open Neural Network eXchangeの略 ● ある機械学習フレームワークで訓練したモデルを、統⼀されたフォーマットに 出⼒し(.onnxファイル)、ONNXランタイムが含まれる任意の環境で推論を実 ⾏可能にしようというもの ● 例えば、Pythonで訓練したPytorchのNNモデルを使って、TypeScriptやC#上 でも推論(not 訓練)が実⾏可能になる ○ TypeScriptやC#の環境の中にはONNXランタイムさえインストールされて いれば良い ※ web: https://onnx.ai/ ※ github: https://github.com/onnx/onnx ※ .onnxファイルはProtocol Buffers形式

Slide 3

Slide 3 text

2 ONNX概略図 ONNXランタイム ONNX Model Zoo 訓練済みモデルをpull 自前で訓練して エクスポート .onnx ファイル 推論実行 ※ クラウドストレージ等でも可 実行ホストは、 マイコンやコンシューマー ゲーム機など無限の可能 性!! 訓練済みモデルを ダウンロードして 使用可! 今回のハンズオンではPytorchで自前で訓練

Slide 4

Slide 4 text

3 ONNXハンズオン ● Pythonで⼿書き⽂字を認識するモデルをPytorchで学習し、Javascriptのwebアプリ上 から推論を⾏う ○ サンプルのレポジトリ:[email protected]:kakky-hacker/sandbox.git ● ⼿順 ○ git clone [email protected]:kakky-hacker/sandbox.git ○ cd sandbox/onnx-test ○ pip install -r requirements.txt ○ python train.py ■ mnist.onnxが⽣成される ○ python -m http.server 8000 ○ ブラウザからhttp://localhost:8000にアクセス

Slide 5

Slide 5 text

4 ONNXハンズオン ● Canvasに適当な数字を書いてPredictボタンを押すと予測結果が表⽰される 正しく予測できた!

Slide 6

Slide 6 text

5 ONNXの注意点 ● opsetバージョンが存在し、モデルをエクスポートする時に注意しなければならない (https://github.com/onnx/onnx/blob/main/docs/Operators.md) ● 全ての演算オペレータが実装されているわけではない ○ ⼀応、カスタムオペレータという⼿段は存在する ● 当たり前だが、推論速度は推論を⾏うハードウェアに依存する ○ 訓練するハードウェアと推論するハードウェアのマシンスペック差はちゃんと考慮 しなければならない ■ ONNXランタイムはGPU対応 ■ ちなみにONNXランタイム⾃体もそこまで遅くなさそう (https://qiita.com/john-rocky/items/caa55453f40f5f444edf)

Slide 7

Slide 7 text

6 Thank you