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/– コマンドラインエントリポイント(infer、eval、train)。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 コマンドで再生成可能。
一般的なワークフロー
- インストール – パッケージをインストール(
pip install -e .)し、必要なモデル固有のrequirements.txtをインストール。 - データ準備 – 多くのベンチマークデータセットは自動ダウンロード。一部(MME、MMBench など)は README に簡単な
wgetスクリプトあり。 - 推論実行 – 例:
python -m umm.cli.main infer --config configs/inference/modal_bagel_generation.yaml。 - 評価 – ベンチマーク設定を選択。例:
python -m umm.cli.main eval --config configs/eval/dpg_bench/dpg_bench_bagel.yaml。 - ポストトレーニング –
python -m umm.cli.main train --config configs/posttrain/bagel_sft.yamlでファインチューニング。 - スケーリング – 設定のプレフィックス(
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 エントリが提供されています(ここでは再掲しない)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト