UnslothはHugging Faceのunsloth/MiniMax-H3-FP8リポジトリで、動画と音声を同時生成するMiniMaxAI/MiniMax-H3のFP8およびINT8事前量子化済みPyTorchチェックポイントを公開しました。40.23GBのpruned bf16ソースに対してチェックポイントは20.25GBに収まり、エンドツーエンドのレンダリングピークは57.11GBから36.97GBに下がります。
MiniMaxは文章、音声、画像、動画、音楽を扱うマルチモーダルモデルを開発するAI企業です。MiniMax-H3は最大15秒・24 FPSの動画と32 kHzステレオ音声を同時に生成し、音声は後付けではなくモデル出力に含まれます。
何を量子化したか
対象は2系統です。fl2va_prunedは画像0〜2枚とテキストを入力とするキーフレーム(先頭・末尾フレーム)版、ref2va_prunedはプロンプトと画像・動画・音声の参照を最大12件受け取るオムニリファレンス版です。どちらも同じ200個のメインブロックmatmul(パラメータの95.8%)を量子化し、1-D gain、bias、modulation path全体はビット単位で変更していません。INT8は対称量子化、FP8はe4m3で、いずれも出力チャネルごとのabsmaxスケールを使います。量子化元はComfy-Org/MiniMax-H3のminimax_h3_fl2va_pruned_bf16.safetensorsとminimax_h3_ref2va_pruned_bf16.safetensorsです。
Ref2VA版では313個のLinearを量子化し、55個をスキップ、adaLNは全精度のままです。INT8側には全313個にグループサイズ256のConvRot Hadamard回転をかけています。
ファイル構成
| ワークフロー | ファイル | サイズ |
|---|---|---|
fl2va(transformer/) |
MiniMax-H3-INT8.pt |
18.86 GiB |
fl2va(transformer/) |
MiniMax-H3-INT8-ConvRot.pt |
18.86 GiB |
fl2va(transformer/) |
MiniMax-H3-FP8.pt |
18.87 GiB |
ref2va(transformer_ref/) |
MiniMax-H3-Ref2VA-INT8-ConvRot.pt |
18.86 GiB |
ref2va(transformer_ref/) |
MiniMax-H3-Ref2VA-FP8.pt |
18.87 GiB |
テキストのみの生成もfl2vaで扱います。2つのパーティションは重みが別で相互交換できません。クラス、config、635キーのstate dictが同じため、取り違えてもエラーにならず誤った重みで生成されます。区別できるのはファイル名のRef2VAだけです。INT8とINT8-ConvRotの両方がある場合はConvRot版が新しいビルドです。
使い方と要件
- Diffusersとtorchaoで利用します。
- INT8は
torch.compileと併用、FP8はtorch.compileなしが推奨です。 -ConvRot形式はHadamard回転済みの重みを格納しており、活性値を回転させる対応ローダーが必要です。古いローダーはフォーマットタグで読み込みを拒否します。- stable-diffusion.cppは外部のチャネル別スケールを読むint8 linearパスがないため読み込めません。sd.cppでは
unsloth/MiniMax-H3-GGUFを使います。 - ライセンスはMiniMax H3 Community License Agreementで、Applicable Territoryの定義と一部法域の除外があります。
サンプルは960x544、124 frames、24 FPS、8 steps、guidance 1.0、seed 11で単一カード上で生成しています。
検証結果
Ref2VA版について、同一プロンプト・seed・形状(20 steps、2プロンプト、画像参照1件)でbfloat16版と比較したSSIMは、INT8が0.92と0.82、FP8が0.88と0.78でした。bfloat16同士の再レンダリングでは1.00です。原文はこれらを品質スコアではなく発散の指標と位置づけ、構図は同じで細部が再配分されると説明しています。

まだコメントはありません。