h3-metal: Apple Silicon向けネイティブ MiniMax-H3 推論

h3-metal は、Apple Silicon 用のネイティブ MiniMax-H3 推論を提供します。決定論的なホスト/モデルメタデータ、ポータブルな Metal ブロックのパリティ、そして prompt-to-video/audio、first/last-frame conditioning、および ordered references へのエンドツーエンドのサポートを含む、最適化された垂直スライスの一連の実装を行っています。このプロジェクトは、M3 Max および M5 Max ハードウェア上でのパフォーマンスとメモリ効率の最大化に焦点を当てています。

高パフォーマンス推論プリセット

ユーザーは、いくつかの独立したコントロールを通じて、生成速度と出力品質のバランスを調整できます。デフォルトの設定は、50 個の transformer blocks と reuse factor が 1 の 20 回の denoising passes です。

スピードと品質のトレードオフ

Control Slow Reference Default Aggressive Main Impact
Denoising Passes --steps 50 --steps 20 --steps 4..7 実際の denoising passes の総数。
Whole Denoiser Reuse --reuse 1 --reuse 2 --reuse 3 新しい DiT 評価の回数を減らします (例: 20 steps $\to$ 11 または 8)。
Active DiT Blocks --layers 50 --layers 45 --layers 40 計算量と常駐する transformer weights を削減します。
Core Residual Reuse --core-reuse 1 --core-reuse 4 --core-reuse 6 各ステップで patch/head の作業を更新しますが、高コストな core を実行する頻度を下げます。
Token Reduction Off Optional --token-reduction 中央のブロックで水平方向のビデオトークンをペアにします。高速化されますが、構成に影響を与える可能性があります。
Internal Canvas Output Size 384x384 320x320 DiT/VAE をより小さく実行し、その後 vImage を介してアップスケールします。

パフォーマンス・ベンチマーク

M5 Max 上では、512-square、22-frame のテストにおいて、4 回の denoise が約 3.5 秒かかりました。これは、29 回の denoise を行う reference 設定と比較して 26.4 秒でした。512-square の canvas 上で token reduction を使用すると、denoise 時間が 16.69 秒から 12.60 秒に短縮されました。

高度な Conditioning とメディア・サポート

h3-metal は、単純なテキストプロンプトを超えてビデオ生成を制御するための、複数の conditioning パスをサポートしています。

Frame Anchoring と References

  • FL2VA Path: --first-frame--last-frame を使用して、ビデオシーケンスの開始と終了を固定します。
  • Ref2VA Path: --ref-image--ref-silent-video、および --ref-video を介した ordered references を使用して、被写体と設定の一貫性を維持します。
  • Audio Integration: --ref-audio を介したスタンドアロンのオーディオ・リファレンス、またはビデオ・リファレンス内の埋め込みオーディオをサポートします。オーディオ入力は、最大 3 つの入力全体で合計 15 秒までに制限されます。

解像度と期間

幅と高さは 32 の倍数である必要があり、最大積は $768 \times 1344$ ピクセルです。モデルは、フレーム要求を特定の時間的形状 ($5 + 17n$) に向かって上方修正して整列させます。例えば、22 フレームは 24 fps で約 0.917 秒のビデオになり、243 フレームは 10.125 秒になります。

技術的実装と Metal の最適化

h3-metal は、Apple Silicon 上でのメモリ使用量を抑え、スループットを向上させるために、いくつかの深いレベルの最適化を採用しています。

メモリと Weight 管理

M5 クラスの GPU では、transformer weights は safetensor shards から直接マップされ、37 GiB のモデルファイルをファイルバックアップとして保持し、再利用可能にします。Qwen テキストエンコーダーは、I/O ワーカーによって埋められる将来のレイヤー・バッファのリングを使用したストリーム方式を採用しており、エンコーディングと Metal 実行をオーバーラップさせます。

Metal 4 と TensorOps

M5 GPU は、DiT QKV および attention-output プロジェクションのために、ネイティブ BF16 Metal 4/TensorOps を利用します。実装では、コンパクトな Morton schedule を使用して Q/K/V を head-major attention 入力に直接ルーティングし、3 つの MPSGraph 入力トランスポーズを回避します。

Int8 量子化

デフォルトの M5 パスは、動的な活性化量子化と出力チャネルごとの weight scales を備えたネイティブ int8 MLP エンジンを使用します。これにより、ピーク・テンソル・ストレージが 36.4 GiB (BF16) から 25.9 GiB に大幅に削減されます。さらなる最適化には以下が含まれます:

  • Quantized QKV: M5 上での denoising 時間を 25.80 秒から 19.32 秒に短縮します。
  • Fused Kernels: QKV と MLP 活性化量子化を、直前の gated AdaLN カーネルに統合し、50 レイヤーのフォワードパスにおいて 99 個の独立した quantizer dispatch を削除します。

コミュニティの洞察と代替案

ユーザー間の議論では、ネイティブ Metal 実装と汎用フレームワークとの間の大きなパフォーマンス・ギャップが浮レ彫りになっています。

"On my 128GB M4 Max Mac Studio, generating a 15s 480p video with MiniMax H3 in ComfyUI takes an hour and a half."

ユーザーは、高いメモリ構成(例: 128GB)がピーク・パフォーマンスに理想的である一方、Mac ハードウェア上でこれらのモデルをローカルで実行できることは、ローカル・ファーストのワークフローにとって、たとえ専門的な CUDA ハードウェアがより高速であっても、重要な進歩であると指摘しています。

Sources

関連

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