Slide 1

Slide 1 text

AI 2024.07.18 Ryosuke Kamesawa GO株式会社 推論エンジンMAX by Modular

Slide 2

Slide 2 text

AI 2 Outline 01|推論エンジン MAX 02|Mojo言語 03|まとめ

Slide 3

Slide 3 text

AI 3 01 推論エンジン MAX

Slide 4

Slide 4 text

AI 4 Modularが開発している推論エンジン - ✅ 速い(らしい) - ✅ Python & C API - ✅ PyTorch & ONNXのモデルが実行可能 - ✅ 無償利用可(条件付きで商用利用含め) - ❌ CPU (x64, ARM) のみ(GPU対応版は未公開) - ❌ ソースコードは非公開 MAXとは

Slide 5

Slide 5 text

AI 5 - Chris LattnerがCEOしている会社 - LLVM (Clang), Swift を作ったげきつよ開発者 - GoogleではTensorFlowのディレクター - 今のところMAX, Mojo以外のプロダクトはなさそう - ビジネスモデルはよくわからない - 推論エンドポイントSaaS? ちなみにModularって?

Slide 6

Slide 6 text

AI 6 公式サイトでの記述 どれくらい速い・・? https://www.modular.com/max

Slide 7

Slide 7 text

AI 7 速そうだけどよくわからない(たぶんLLMでのベンチマーク) → 自分たちのユースケース(CV)で試してみる 1. MobileNetV2 2. MobileNetV3 (large) 3. EfficientNet Lite0 4. ResNet50 5. YOLOv8 segmentation どれくらい速い・・?

Slide 8

Slide 8 text

AI 8 ベンチマーク

Slide 9

Slide 9 text

AI 9 - AWS EC2 (c6i.4xlarge); Ubuntu22.04 - モデル実装 - Torchvision: MobileNetV2/MobileNetV3/ResNet50 - Timm: EfficientNet Lite0 - Ultralytics: YOLOv8 - 100回推論するのにかかった時間を測定 - MAX (ONNX/torchscript) - ONNX runtime - PyTorch ベンチマーク環境・条件 https://github.com/emakryo/max-benchmark

Slide 10

Slide 10 text

AI 10 - 軽量CVモデルではMAXは速くない - EfficientNet Lite/MobileNetV2, 3 - ターゲットとしていないので最適化されていない? - 比較的重いモデルでは同じくらいか多少速い - ResNet50/YOLOv8 - モデル入力はtorchscriptの方が多少速い場合が多い - MAXは初回のコンパイルが遅い ベンチマーク結果まとめ

Slide 11

Slide 11 text

AI 11 02 Mojo言語

Slide 12

Slide 12 text

AI 12 Modularが開発しているプログラミング言語 MAXがMojoで実装されている - Python風の文法 - 静的型(型推論、ジェネリクス、トレイト) - コンパイル時定数 - オーナーシップとライフタイム - Pythonとの相互呼び出し - 拡張可能な最適化パス、アクセラレータ固有型(MLIR) Mojo言語

Slide 13

Slide 13 text

AI 13 サンプルコード

Slide 14

Slide 14 text

AI 14 AI技術スタックの複雑さの軽減、全体最適化 モチベーション https://www.modular.com/blog/mojo-llvm-2023

Slide 15

Slide 15 text

AI 15 - 簡単な用途には使えるがエコシステムは未成熟 - パッケージマネージャーがない - 頑張れば、できないことは基本的にない - システムプログラミング言語(e.g. C++)として設計されている - 使いこなす(最適化)にはMLIR dialectの知識が必要 - MLIR (Multi-Level Intermediate Representation) - LLVM IRの一般化 - MLIR dialect - LLVM IRにおける命令セットを拡張したもの - 言語におけるライブラリに近い 使える?

Slide 16

Slide 16 text

AI 16 - Pythonの完全な置き換えにはならない - コンパイルが必要→遅いのでinteractiveな実行に不向き - CythonやC/C++での拡張モジュールの置き換えは可能 - Pythonに近い文法なのでとっつきやすいかも - CUDAの置き換えがOSSとしてできれば Nvidia以外のGPUメーカーが参戦してくるかも 流行る?

Slide 17

Slide 17 text

AI 17 MAX: ニューラルネットワーク推論エンジン - (今のところ)LLMでは速い、軽量モデルには不向き - ONNX, PyTorch (torchscript) を実行できる Mojo: コンパイル可能なPython風プログラミング言語 - AIの技術スタックを統合、最適化(ができるポテンシャル) - 未成熟だが技術的には面白い まとめ