機械学習サービスにおけるONNXの活用と応用 〜ONNXテキスト形式の拡張〜

  • ONNX(オニキス; Open Neural Network eXchange)
    • https://onnx.ai/
    • https://github.com/onnx/onnx
    • 機械学習モデルを表現する汎用的フォーマット。Protobufで計算グラフの構造とパラメタをシリアライズ。
      • 軽い!早い!
    • 推論を実行するためのONNX Runtimeは、CUDAなどの様々なアクセラレーターはもちろん、iOSやAndroid、Webブラウザまで対応。
      • どこでも実行できる!
    • 推論特化なのでパッケージ自体も軽い。Pytorch比較。
  • PytorchなりTensorflowなりのフレームワークで作成したモデルを、フレームワークのONNX変換機能を利用してONNXモデル表現に変換するわけだが、うまくいかない場合も。
  • 変換機能に頼らずとも時前で頑張れるよというお話し。
    • 「ONNXカスタムオペレーター」というのを使えば任意の計算が可能だが、その話は今回は触れない。
  • ONNX自体の表現力はけっこう豊富
    • モデル操作のAPIにはifやloop、画像のリサイズ、サブグラフをひとつのオペレーターとした関数呼び出しなど
    • テキスト形式でそれらを扱えたりも。
      • → ブログの内容的にはこのテキスト形式を拡張したというものを紹介
      •