AIFrontierLab/TorchUMM

A unified multimodal model toolkit

TorchUMM – 統合的マルチモーダルモデルツールキット

何であるか – TorchUMM は、一貫した設定駆動インターフェースを通じて、幅広い現代のマルチモーダルモデル(テキストから画像生成、画像理解、画像編集など)を実行・評価・ファインチューニングできる Python ライブラリです。14種類のバックボーン用アダプターをバンドルし、10以上の標準ベンチマーク用の準備済みスクリプトを提供し、SFT(教師付きファインチューニング)やIRG(指示追従強化学習)などのポストトレーニング手法もサポートします。コードはローカル、AMD-ROC-m クラスタ、または Modal クラウドで実行可能です。

なぜ重要か – マルチモーダル研究は分散化しています:新しいモデルごとに独自の推論スクリプト、データローダー、評価コードが付属することが多いです。TorchUMM はその障壁を解消します。

  • API の標準化 – 任意の対応モデルに使える単一の InferencePipeline クラス。
  • 再現性の確保 – すべての実験は YAML 設定ファイルで駆動。モデルやベンチマークを切り替えるには設定ファイルの編集だけで、コードの変更は不要。
  • 公正な比較の促進 – すべてのモデルに同じデータ前処理、メトリクス実装、評価スクリプトが適用される。
  • スケーラビリティの容易さ – 内蔵の Modal サポートにより、CUDA/Flash-Attention ホイールを含むコンテナイメージが自動生成され、手動設定なしにクラウド GPU で大規模実行が可能。

主なコンポーネント

  • src/umm/backbones/ – モデルのネイティブ API を TorchUMM の統一インターフェースに変換する薄いラッパー。
  • src/umm/cli/ – コマンドラインエントリポイント(inferevaltrain)。
  • src/umm/post_training/ – SFT、IRG、recA、UniCot など実装済み。
  • configs/ – どのモデル、どのベンチマーク、どのハイパーパラメータを使うかを記述する YAML ファイル。推論、評価、ポストトレーニング用に別フォルダ。
  • modal/ – Modal 用の Docker 風定義。同じコードをマネージド GPU クラスタで実行可能。
  • eval/ – ベンチマーク実行をオーケストレーションするスクリプト(例:DPG-Bench、MME、MMMU、WISE)とスコア集計。

対応モデル(各モデルに対応するアダプターを提供;モデル固有の依存関係はリンクされたガイドを参照)

  • Bagel、DeepGen、OmniGen2、Emu3 / Emu3.5、MMaDA、Janus ファミリー、Show-o ファミリー、BLIP3-o、TokenFlow、Ovis-U1。
  • 多くのモデルは Flash-Attention を必要とするが、Emu3.5 は vLLM でも高速推論が可能。

カバーされるベンチマーク – 生成(DPG-Bench、GenEval、WISE)、理解(MME、MMMU、MMBench、MM-Vet、MathVista)、編集(GEdit-Bench、ImgEdit-Bench)。各モデルの結果はリポジトリで再現済みで、1つの CLI コマンドで再生成可能。

一般的なワークフロー

  1. インストール – パッケージをインストール(pip install -e .)し、必要なモデル固有の requirements.txt をインストール。
  2. データ準備 – 多くのベンチマークデータセットは自動ダウンロード。一部(MME、MMBench など)は README に簡単な wget スクリプトあり。
  3. 推論実行 – 例:python -m umm.cli.main infer --config configs/inference/modal_bagel_generation.yaml
  4. 評価 – ベンチマーク設定を選択。例:python -m umm.cli.main eval --config configs/eval/dpg_bench/dpg_bench_bagel.yaml
  5. ポストトレーニングpython -m umm.cli.main train --config configs/posttrain/bagel_sft.yaml でファインチューニング。
  6. スケーリング – 設定のプレフィックス(modal_amd_、またはなし)を変更して Modal や AMD HPC クラスタで実行。

Python での使用例

from umm.inference.pipeline import InferencePipeline
from umm.inference.multimodal_inputs import InferenceRequest

pipeline = InferencePipeline(
    backbone_name="bagel",
    backbone_cfg={"model_path": "/path/to/BAGEL-7B-MoT", "max_mem_per_gpu": "80GiB"},
)

# テキストから画像生成
gen = pipeline.run(InferenceRequest(
    backbone="bagel",
    task="generation",
    prompt="A cat sitting on a rainbow",
    params={"num_timesteps": 50},
))

# 画像理解
understand = pipeline.run(InferenceRequest(
    backbone="bagel",
    task="understanding",
    prompt="Describe this image in detail.",
    images=["/tmp/cat.jpg"],
))

再現性に関する注意点 – リポジトリのテーブルには、同じ評価スクリプトと同じスコアリング VLM(例:WISE 用に Qwen2.5-VL-72B-Instruct)で再現されたスコアが記載されています。README では、オリジナル論文との差異(異なるジャッジモデル、わずかに異なるパイプライン)について警告しています。

誰が使うべきか – マルチモーダルモデルを比較したい研究者、評価パイプラインを構築するエンジニア、またはカスタムラッパーを書かずに多数の最先端視覚言語モデルを即座に実行したい人。


引用 – README に関連論文(arXiv:2604.10784)の BibTeX エントリが提供されています(ここでは再掲しない)。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト