Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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の技術スタックを統合、最適化(ができるポテンシャル) - 未成熟だが技術的には面白い まとめ