低VRAM用MiniMax H3 I2V T2V
◎簡単にMiniMax H3を使ってみたいと思い作ってみました、素人の制作したものなので高機能なもの搭載されていません。5070Ti で5秒動画3分~9分程度で生成できました
civitaiにはもっと高機能なもの沢山あります hohoho
----------------------------------------------------------------------------------------------------
5070Ti (16GB) 最適構成
Diffusion Model (UNET) - Blackwell NVFP4, 12.5GB
Text Encoder - INT4 ConvRot, 15.0GB (16GBカード向け安全マージン優先・最終推奨)
速度優先で試したい場合のみ: nvfp4 テキストエンコーダー: https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors?download=true (OOMする場合はint4_convrotに戻す)
VAE (公式、量子化なし)
4-step Turbo LoRA (公式lightx2v配布, ComfyUI変換版)
保存先
ComfyUI/models/
├── diffusion_models/minimaxH3/minimax_h3_fl2va_pruned_nvfp4.safetensors
├── text_encoders/qwen3vl_32b_minimax_h3_int4_convrot.safetensors
├── vae/minimax_h3_video_vae_fp16.safetensors
├── vae/minimax_h3_audio_vae_fp32.safetensors
└── loras/minimax_h3_fl2v_lightx2v_turbo_4step_v0.1_comfy.safetensors合計DL容量: 約33GB (12.5+15.0+4.85+0.56+約0.3[rank21 LoRA])
初回テスト設定: 736x1280, 124フレーム(約5.2秒), steps=4, res_multistep/simple, Turbo LoRA strength 0.8 慣れたら Ratio to Size / PrimitiveFloat(秒数) で解像度・尺を調整してください(17n+5フレーム数制約はComfyMathExpressionノードが自動計算)。
追加改善 (junzhisangcun氏のR2V検証記事を反映)
⚠️ 必須: H3 AdaLN LoRA Fix ノードを追加pruned系UNET + dense学習のTurbo LoRAの組み合わせは、LoRAの一部キー(adaln_proj等)が無警告でスキップされる既知の問題あり。
cd ComfyUI/custom_nodes
git clone https://github.com/PlagueKind/ComfyUI-PlagueKind-Nodesインストール後、Power Lora Loaderの出力とUNETの間(またはドキュメント記載の位置)に H3 AdaLN LoRA Fix ノードを挿入してください。
推奨: H3 SLA Attention ノードを追加(疎注意、VRAM増加なしで1.4-1.75倍速)
配置: チェーン最後、Scheduler と Guider の両方に接続(これが無いと効かない)
sparsity_ratio: 0.90
block_size: 64 (128だと音声が不自然になる)
protect_audio: ON
min_seq_len: 8192
Triton必須(sageattention導入済みなら大抵入っている)。非対応環境では自動でdenseにフォールバックするので安全に追加できます。
効いているか確認: stderrログに
SLA: ... kept (XX% sparse) ... displaced attention_sageと出ればOK。attention_pytorchと出たらsageattentionが無効。
Turbo LoRAをrank圧縮版に変更済みminimax_h3_fl2v_lightx2v_turbo_4step_v0.1_comfy_resized_avg_rank_21_bf16.safetensors(Kijai/MiniMax-H3_comfy) — フルランク版より軽量、動作は同等。
速い動きのカットに注意4step Turboは速い動き(武器を薙ぐ、ダンス等)で破綻しやすいとの報告。その場合は8step版LoRA(strength 1.0, sampler=res_multistep)に切り替えてください。
起動フラグ(最新版)
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --output-directory "G:\output" --enable-manager --enable-manager-legacy-ui --reserve-vram 1.5 --use-sage-attention --disable-pinned-memory
echo If you see this and ComfyUI did not start try updating your Nvidia Drivers to the latest. If you get a c10.dll error you need to install vc redist that you can find: https://aka.ms/vc14/vc_redist.x64.exe
pause変更履歴
--disable-pinned-memory: 無いとComfyUIがRAMの40%をページアウト不能に固定し、バッチ処理や設定変更を繰り返すと同一設定でも4倍遅くなる現象があるため追加(単発実行では約10%遅くなるだけ、GPU使用率100%のまま遅くなるので外形からは気づけない点に注意)。--reserve-vram: 1.0 → 1.5に増量。736x1280・5秒(124フレーム)構成でOOMが頻発したため。PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True: 断片化対策として追加。無害なので常時付けてよい。
OOMトラブルシューティング(実機で発生した事例)
症状: 736x1280・124フレーム(5秒)構成でサンプリング中にOOM。エラー箇所はcomfy_kitchenのquantize_nvfp4(MLPのswiglu活性化を推論時に動的にNVFP4量子化する処理)。
原因: UNET重みはNVFP4で圧縮済みでも、推論時の中間活性化(activation)を都度NVFP4化するための一時バッファは別途必要。124フレーム×736×1280という巨大テンソルを丸ごと量子化しようとするため、モデル+既存キャッシュで13.48GiB使用中のところにあと1.97GiB要求→デバイス上限15.92GiBを超えてOOM。16GBカードは解像度・秒数次第でこのマージンがギリギリになる。
対策(効果が大きい順)
秒数を減らす: PrimitiveFloat(Length in Seconds)を5→3程度に。フレーム数は
max(5, round(a*24))ベースの式で自動再計算される。活性化サイズはフレーム数にほぼ比例するので直撃で効く。解像度を落とす: Ratio to Sizeのメガピクセル値(現状1.0)を0.75程度に。
SageAttentionが実際に効いているか確認:
PathchSageAttentionKJノードがauto設定でも、Blackwell(sm_120)でビルドが通っていないと黙ってeager attentionにフォールバックしVRAM消費が跳ね上がる。起動ログにUsing sage attention系の行が出ているか確認(SLA Attentionノードのログでもattention_sageと出ていればOK、attention_pytorchならフォールバック中)。LoRAを一旦切って切り分け: Fast Groups Bypasser「Lora Loader」でLoRAをバイパスし、ベースモデル単体でOOMが出るか確認。
起動フラグ:
--reserve-vram 1.5+PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True(上記「起動フラグ」節に反映済み)。
T2V ⇔ I2V 切り替え(既存ワークフロー内で可能)
MiniMaxH3ImageToVideoノードのfirst_frame/last_frameは共にオプション入力。専用のT2V用ノードを追加する必要はなく、画像を渡さなければそのままT2Vとして動作する仕様。
このワークフローには切替の土台がすでにある:
グループ「I2V Mode」「Last Frame Mode」が存在
Fast Groups Bypasser (rgthree)ノード「Modes」がmatchTitle: "mode"設定済みで、この2グループを自動検出しON/OFFトグルとして表示する
⚠️ 要修正: 現状、ImageResizeKJv2ノード(first_frame用/last_frame用)がグループ枠から少しはみ出しており、正しく紐付いていない可能性がある。使用前に以下を確認:
「I2V Mode」の枠をドラッグで広げ、LoadImage(first_frame用)+ImageResizeKJv2(その後段)を完全に内側に収める
「Last Frame Mode」の枠も同様にLoadImage(last_frame用)+ImageResizeKJv2を完全に囲む
T2Vにする手順
「Modes」ノードのトグルで I2V Mode: OFF、Last Frame Mode: OFF の両方を切る(片方だけでは画像による構図拘束が残ってしまう)
プロンプトを画像なし前提で書き直す。被写体の外見・服装・背景・構図・カメラワークをすべてテキストで記述する(画像がある場合は構図を画像に任せられるが、T2Vでは全部言語化が必要)
I2Vに戻す時: 「I2V Mode」をONに戻す(last_frameも使うなら両方ON)。
Description
minimax_h3_i2v_t2v
