MiniMax-H3 on RTX 5090 · part 1
[Benchmark] 一張 5090 跑會說話的 33B 影片模型:MiniMax-H3 從下載到生出第一支片
❯ cat --toc
- 白話版:一次就把畫面和聲音一起生出來
- 前言
- 你會拿到什麼
- 先算你的卡夠不夠:四個檔案,31.7 GiB
- FL2VA 還是 Ref2VA?新手選 FL2VA
- 下載:檔案放到哪個資料夾
- 第一次跑:把這三個值設對
- 提示詞才是這個模型真正的門檻
- 提示詞其實有兩部分,而純文字生成只用到第二部分
- 鏡頭與運鏡
- 對白:身分寫外面,台詞寫裡面
- 畫面上的文字
- 幾何優於詞彙:模型畫不出「不存在的東西」
- NVFP4 只在 Blackwell 上算數
- 換個量化格式,同一個 seed 不會生出同一支片
- 授權:台灣在範圍內,而且方向跟直覺相反
- 進階:兩個可以跳過的機制問題
- 為什麼「剪枝版」不是把模型變笨
- 為什麼 NVFP4 比 INT8 快 5%,而那 5% 不是算力
- 順帶一提:600W 降到 500W 反而更快
- 開始之前確認三件事
TL;DR
MiniMax-H3 是 33B 的影音同步生成模型:對白、環境音、配樂跟畫面出自同一次 forward pass,所以嘴型天生對得上。官方部署範例開四張 GPU,全精度權重合計 115 GiB。挑剪枝加量化的版本之後,四個檔案 31.7 GiB,一張 RTX 5090 就跑得動:864×480 的 10 秒有聲片 175 秒,VRAM 峰值 26,914 MiB。權重已上 HuggingFace。
🔊 這篇的每一支影片都請把聲音打開——瀏覽器規定自動播放必須靜音,但這個模型的重點有一半在聲音裡。畫面、對白、風聲、配樂全部出自同一次生成。
白話版:一次就把畫面和聲音一起生出來
以前要做一支有人講話的短片,流程是分開的:先讓一個模型生影像,再讓另一個模型配音,最後想辦法把嘴型跟聲音對上。對不上是常態,因為那兩個模型從頭到尾沒見過對方。
H3 換了個做法。你給它一段文字,它一次就吐出畫面和聲音——講的話、風吹的聲音、背景的配樂,全部是同一次計算的產物。嘴型會對,不是因為有人去對,是因為畫面和聲音本來就是同一個東西的兩個側面,中間沒有接縫可以歪掉。
代價是它很大。這篇要講的就是怎麼把它縮到一張消費級顯卡塞得下,然後生出第一支片。
前言
樂團錄音有兩種做法。一種是分軌:鼓先錄、貝斯再疊上去、人聲最後補,好處是每軌都能單獨修,壞處是修完要花很多工夫讓它們聽起來像同時發生的。另一種是全員進棚一次收,聲音天生就是同一個空間裡長出來的。
影音生成模型現在大多是第一種。MiniMax 在 2026 年 8 月 2 日放出來的 H3 是第二種。
這篇是新手向的完整流程:一張 RTX 5090,從要下載哪些檔開始,到生出第一支有聲片為止。 我另外跑的機器和中間繞的路都不在這篇裡。
你會拿到什麼
跑完這篇你會有一套本機的影音生成環境,能做到:
- 純文字生出 4 到 15 秒、24fps、帶 32 kHz 立體聲的影片
- 對白嘴型自動同步,支援 11 種語言的口說
- 一支提示詞裡寫多個鏡頭,切點自己指定
- 畫面裡的文字可以逐字指定
做不到的:2K 輸出。那要靠沒有開源的 H3-Regenerate-2K,本機只有 768p 這一段。
長什麼樣子,直接看比較快。這支 15 秒是本機生的,一次生成、沒有後製、沒有對嘴:
🔊 開聲音。注意嘴型跟中文對白是對上的——沒有人去對過,畫面和聲音是同一次前向傳播的兩個輸出。
先算你的卡夠不夠:四個檔案,31.7 GiB
新手最容易在這裡卡住,因為「33B 模型」這個說法會嚴重低估你要下載的東西。
H3 要四個檔案才跑得起來:
| 檔案 | 做什麼 | 全精度 | 我用的量化版 |
|---|---|---|---|
| Transformer | 生影音的本體 | 61.73 GiB | 11.67 GiB(NVFP4) |
| 文字編碼器 | 讀懂你的提示詞 | 47.97 GiB | 14.61 GiB(NVFP4-AWQ) |
| 影片 VAE | 把潛在向量還原成畫面 | 4.85 GiB | 同左 |
| 音訊 VAE | 把潛在向量還原成聲音 | 0.56 GiB | 同左 |
| 115 GiB | 31.69 GiB |
這張表看最後一列就好:全精度 115 GiB,量化後 31.7 GiB。
⚠️ 但這是磁碟的數字,不是 VRAM 的數字,別把兩個混在一起(我一開始就混了)。實際跑起來 VRAM 峰值是 26,914 MiB,因為同時待在卡上的只有 transformer 和文字編碼器:
11.67 GiB (transformer) + 14.61 GiB (文字編碼器) = 26.28 GiB = 26,911 MiB
實測峰值 26,914 MiB
兩顆 VAE 只在最後把潛在向量還原成畫面和聲音時才用到,不必全程佔著。所以「我的卡夠不夠」要看的是 transformer 加文字編碼器,不是四個檔的總和。
三件事第一次看到會愣一下:
文字編碼器比影片模型還大。 那顆編碼器是 Qwen3-VL-32B——一個 32B 的視覺語言模型,只是拿來讀你的提示詞。量化完 14.61 GiB,比 transformer 的 11.67 還多。所以「33B 模型」講的只是 transformer,你實際要餵的是兩顆大模型。
VAE 有兩顆,一顆管畫面一顆管聲音。 這剛好證明了聲音在這裡跟畫面是平起平坐的:影片走影片 VAE、音訊走音訊 VAE,兩條都從同一個 transformer 出來。
Transformer 有兩顆,但你一次只會用到一顆,下一節講怎麼選。

FL2VA 還是 Ref2VA?新手選 FL2VA
Transformer 有兩個版本。差別不在精度,在任務:
| checkpoint | 吃什麼輸入 | 什麼時候用 |
|---|---|---|
| FL2VA | 0 到 2 張圖 | 一般生成,含純文字生影片 |
| Ref2VA | ≤9 張圖、≤3 段影片、≤3 段音訊(總長 ≤15 秒,最多 12 個檔) | 要模型參考特定角色、場景或聲音時 |
這裡有個新手一定會混淆的地方:checkpoint 的名字和任務的名字不是同一套。 FL2VA 這顆 checkpoint 底下有四個任務,官方文件分成下面四種。
| 任務 | 你給幾張圖 |
|---|---|
| T2VA | 不給圖,純文字生影片 |
| I2VA | 給一張,當首幀往後長 |
| FL2VA | 給兩張,指定首尾 |
| L2VA | 給一張,當尾幀往回推 |
換句話說,你下載的是 FL2VA 那顆檔,但不給圖跑的時候,你跑的任務叫 T2VA。等一下提示詞那節會看到,這兩者的寫法差一整行。
新手從 FL2VA 這顆開始、跑 T2VA 任務。 不用準備任何素材,而且這篇後面所有數字都是這樣量的。
兩顆 transformer 不會同時載入——它們是兩條不同任務的路,要換任務就換檔案。所以兩顆都下載只是多吃 11.67 GiB 的磁碟,VRAM 峰值一點都不會變。硬碟有空間的話兩顆都留著沒差,先跑通一顆再說。
下載:檔案放到哪個資料夾
量化版分散在兩個 repo,這是目前唯一的麻煩處。
# 1. Transformer(NVFP4,我做的)
hf download coolthor/MiniMax-H3-pruned-NVFP4 \
--include "diffusion_models/minimax_h3_fl2va_pruned_nvfp4.safetensors" \
--local-dir ComfyUI/models
# 2. 文字編碼器 + 兩顆 VAE(Comfy-Org 官方 repo)
hf download Comfy-Org/MiniMax-H3 \
--include "text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors" \
"vae/minimax_h3_video_vae_fp16.safetensors" \
"vae/minimax_h3_audio_vae_fp32.safetensors" \
--local-dir ComfyUI/models
兩個 repo 的資料夾結構都對齊 ComfyUI 的 models/,所以 --local-dir ComfyUI/models 下去就會自己落到對的位置:
ComfyUI/models/
├── diffusion_models/minimax_h3_fl2va_pruned_nvfp4.safetensors 11.67 GiB
├── text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors 14.61 GiB
└── vae/
├── minimax_h3_video_vae_fp16.safetensors 4.85 GiB
└── minimax_h3_audio_vae_fp32.safetensors 0.56 GiB
⚠️ 我的 repo 是 gated,但設成自動核准——勾兩個確認框就會過,不用等人審。那兩個框是授權要求的,後面授權那節會講為什麼。
第一次跑:把這三個值設對
ComfyUI 的 H3 官方範本開起來就能跑,但有三個值建議先改。
① 步數改成 10,不要用範本的 20。
範本填 20。我照跑,一支片 324 秒。後來去翻官方附的那支 reproducible script reproducible-768p-t2va-request.sh,發現裡面根本沒有步數這個欄位——有的是 task、prompt、target{short_edge, aspect_ratio, duration_seconds}、seed、conditions,就是沒有步數。步數是 SGLang 服務端的內部預設值,官方從來沒公開過那個數字。
那個 20 是範本作者自己選的。實測 20 降到 10:324 秒 → 172 秒,省 47%,畫質看不出差別。 權重本身是 CFG-distilled 的,步數需求本來就低。
② 解析度先用 864×480。
H3 的預設短邊是 768。先用 864×480 跑通,確認整條鏈沒問題再往上加——解析度是這裡最貴的旋鈕。
③ 長度用秒數換算成幀,而且別留空。
H3 的幀數要落在 17k + 5 的格點上。10 秒就是 243 幀(10.125 秒 @ 24fps)。留空會安靜吃掉範本的預設值,不會報錯,你會拿到一支長度不對的片還想不通哪裡怪。
跑完一支的樣子:
| 數字 | |
|---|---|
| 解析度 × 長度 | 864×480,243 幀(10.125 秒) |
| 步數 | 10 |
| 時間 | 175 秒 |
| VRAM 峰值 | 26,914 MiB |
環境是 ComfyUI 0.30.1、torch 2.11.0+cu128、res_multistep + simple、功耗上限 500W、SageAttention 關掉。
提示詞才是這個模型真正的門檻
環境跑通之後,你會發現難的地方在寫提示詞。原因在架構上。
完整的 H3 系統有三個模組,而開源的只有中間那個:
| 模組 | 做什麼 | 開源? |
|---|---|---|
| H3-Context-IR | 把口語需求編譯成結構化脈絡 | ❌ |
| H3-Base | 生 768p 的影音 | ✅ 只有這個 |
| H3-Regenerate-2K | 連同原始脈絡餵回去重生成 2K | ❌ |
model card 講得很直白:
H3-Context-IR is critical to the quality of the final output, so we strongly recommend incorporating it into your generation pipeline or following the "Prompting Guidance" to build your own context-processing system.
換句話說,那份「提示詞寫作指南」其實就是那個沒開源模組的輸出格式,原廠等於在說第一段他們沒給你、你照規格自己補一個。

提示詞其實有兩部分,而純文字生成只用到第二部分
官方規格把提示詞分成兩段:第一段是對齊指令,第二段是三個核心欄位。
第一段只有在你給圖的時候才需要,格式如下——給了圖就必須寫明「哪張圖對到影片的第幾秒」,而且它必須是整份提示詞的第一行,後面空一行才接核心欄位。
For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.
純文字生成(T2VA)沒有這一行,直接從三個核心欄位開始。新手先走這條,少一個出錯的地方。
第二段的三個欄位:
integrated_multimodal_description: [Shot 1] <風格>, <構圖>, <發生什麼>…
[Shot 2] At 00:06.000, the camera cuts to …
overall_soundscape: <環境音、動作音、非語言人聲>
non_diegetic_music: <樂器、速度、節奏、強弱>
三個欄位每次都要寫,互斥的是「哪一種聲音該寫進哪一欄」,這是新手最常搞混的地方:
| 這種聲音 | 寫在哪 |
|---|---|
| 對白、唱歌、角色聽得到的音樂(收音機、電視、手機) | integrated_multimodal_description |
| 環境音、動作音、呼吸笑聲等非語言人聲 | overall_soundscape(1–4 句) |
| 只有觀眾聽得到的配樂 | non_diegetic_music(1–3 句) |
沒有的時候寫 N/A,不要自己造詞。 我第一次就寫成 No music.,那不在規格裡。⚠️ 兩欄的門檻不一樣:non_diegetic_music 沒配樂就可以寫 N/A,但 overall_soundscape 只有在你明確要求全片靜音時才寫 N/A。
鏡頭與運鏡
Shot 1 不帶時間戳。之後每個鏡頭編號遞增,切點時間嚴格遞增而且要落在片長內:
[Shot 2] At 00:03.500, the camera cuts to...
切換只能用這幾種寫法:the camera cuts to、the shot cuts to、the shot transitions to、the shot changes to、the shot switches to。溶接、淡入淡出、劃接只有在你明確要求時才用。
規格還給了一條判斷準則,很值得抄走:「一次切換要帶進新資訊——新的主體、空間、狀態、視角或時間。如果只是距離或角度要微調,改用運鏡而不是切鏡。」
下面這支就是拿來測切點準不準的,提示詞裡寫的是 [Shot 2] At 00:07.000。
🔊 開聲音。第 7 秒從屋頂遠景切到欄杆特寫,而那句話跨過切點沒有斷。我逐秒量了畫面差異,只有 7→8 秒那一格跳起來(45.5 對其他各秒的 2–7),切點確實落在提示詞寫的位置。
運鏡有三個維度:動作類型 + 幅度 + 速度。中等幅度和正常速度通常省略不寫。
| 維度 | 可用的寫法 |
|---|---|
| 動作類型 | Zoom In/Out、Push In / Pull Out、Pan Left/Right、Truck Left/Right、Tilt Up/Down、Pedestal Up/Down、Arc Shot、Tracking Shot、Static Shot、Shake Slightly/Strongly、POV、Roll Clockwise/Counterclockwise |
| 幅度 | with small amplitude / with large amplitude |
| 速度 | at slow speed / at fast speed |
而且要寫成句子裡的自然動作,不是在句尾疊標籤:
The camera pushes in with small amplitude at slow speed toward the folded letter in her hands.
The camera holds a static shot as the runner exits the frame.
對白:身分寫外面,台詞寫裡面
會說話、唱歌或發出畫外人聲的角色給一個固定編號 (S1)、(S2);兩個人一起講用 (S1,S2)。同一個角色跨鏡頭要用同一個編號,從不出聲的角色不給編號。
身分、語氣、音色、動作全部寫在 <d> 外面;<d> 裡面只有語言標籤和逐字台詞,標點都不准改,也不准翻譯。
The young woman with a quiet, breathy voice (S1) says: <d>[English] I get off at the next station.</d>
兩個容易漏的細節:
- 旁白要用一模一樣的片語
says in an off-screen voiceover,而且緊接在那個<d>後面要寫明畫面上那個角色嘴巴是閉著的(while his lips remain completely closed)。不寫,模型就會讓他張嘴。 - 同一句話跨過切點時,兩邊都要放
<scenetrans>,而且要明講聲音是連續的;句子被片尾截斷的話改用<cutoff>。
畫面上的文字
看板、招牌、標籤、字幕、霓虹燈——只要是畫面上真的看得到的字,一律用英文雙引號逐字包起來,原文照抄不翻譯:
A red neon sign reading "营业中" glows above the doorway.
這支是拿「本地跑得動」五個字去測的:
字是刻進石頭紋理裡的,不是疊上去的字幕——光影會跟著筆畫的凹槽走。
⚠️ 這支我重生過一次。第一版我把鏡頭寫成 extreme close-up 加 macro 推近,結果字被推到讀不出來——跟前面空袖子那條是同一個病,只是方向相反:一個太遠、一個太近。景別選錯,提示詞寫得再準都沒用。
最後那條最反直覺。你不能寫「哀傷的音樂」,只能寫樂器、速度、力度:
non_diegetic_music: A solo guqin plays widely spaced single notes at a very slow
tempo, each note allowed to decay almost to silence before the next. A sustained
erhu line enters beneath it at low volume midway through and holds a single pitch
without vibrato, then decreases in volume and stops before the final second.
裡面沒有一個情緒詞。哀傷是這些事實加起來的結果,不是輸入。你要描述的是聲音本身,不是它應該讓人有什麼感覺。
幾何優於詞彙:模型畫不出「不存在的東西」
這是整趟最值錢的一條,而且我是踩到才學會的。
示範片我選了楊過在絕情谷。這角色有個特徵:右臂被砍了。
第一版我寫 His left hand enters the frame。模型畫成右手。
直覺上會想把形容詞加重,寫得更用力、多強調幾次「左」。沒有用。真正有效的做法是把抽象屬性翻譯成畫面上看得到的事實:
| 我要的 | ❌ 沒用 | ✅ 有用 |
|---|---|---|
| 左手 | his left hand | enters from the left edge of the frame |
| 斷臂 | his right sleeve hangs empty | 讓空袖子入鏡:flat and collapsed with no arm inside it |
差別在哪?「左手」是一個需要模型理解身體結構才能執行的詞;「從畫面左緣進來」是一個座標。對擴散模型來說,給座標比給左右方位可靠得多。
這支的提示詞只寫了 A bare human hand enters slowly from the left edge of the frame,沒有提「左手」也沒有提「右手」:
手從畫面左緣進來,一次就對。給座標比給左右詞可靠。
斷臂那條同理。你沒辦法叫它畫一條不存在的手臂,不存在的東西沒有像素。你只能叫它畫一個存在的東西:一條扁的、塌的、裡面沒東西的袖子。
還有一條我沒解決:遠景鏡頭裡空袖子還是讀不出來。那是景別的問題,提示詞救不了。要在遠景讓人看出「其中一條袖子是空的」本來就不合理,該改分鏡給中景,不是繼續疊形容詞。
NVFP4 只在 Blackwell 上算數
這條會咬人,而且咬得無聲。ComfyUI 啟動時會逐字印出這幾行:
Native ops: ...
emulated ops: mxfp8, nvfp4, float8_e5m2, float8_e4m3fn ← 在非 Blackwell 上
emulated 的意思是:檔案照載、照跑,但權重在做矩陣乘法之前會被轉回高精度。 你拿到 11.67 GiB 的小檔案,速度一點都沒有。
所以量化格式不是「壓多小」的排行榜,是「你的卡認不認得」的相容表。挑格式之前先看那一行 Native ops 裡面有什麼。不是 Blackwell 的話,改用 Comfy-Org 的 pruned_int8_convrot(19.53 GiB)比較實在。
換個量化格式,同一個 seed 不會生出同一支片
這件事幾乎沒有量化的 repo 會講,但它決定你換完格式會不會以為自己弄壞了什麼。
同 seed、同提示詞,NVFP4 和 INT8 生出來不是同一支片。 構圖不一樣、神鵰站的位置不一樣、石刻上讀得出來的字數也不一樣。
兩邊都成立,沒有誰壞掉。量化改的是數值,去噪的軌跡就會發散,固定種子只是讓你從同一個起點出發,走著走著還是落到別的地方。
我把並排對照片放進 repo,就是為了這個。換格式之後第一件事別急著懷疑自己裝錯,先接受你在跟一個新的模型講話。
授權:台灣在範圍內,而且方向跟直覺相反
這條會嚇到人,所以要講清楚。
MiniMax H3 Community License 有地域限制,而且是「排除」不是「限定」。條文原文:
"Applicable Territory" means worldwide, excluding the Excluded Territories.
"Excluded Territories" means the European Union, the United Kingdom,
the Republic of Korea and the United States of America.
台灣在授權範圍內。 被排除的反而是法規最嚴的那四個地方。
⚠️ 這裡有個讀反的陷阱:官方 QA 頁的措辭是「limited to the EU, UK, South Korea, and the US」,看起來像「只限這四個地方」,實際意思是「對這四個地方受限」。條文跟摘要不一致的時候信條文。
要散布的話 §III 有幾條硬規定:附授權副本、改過的檔案要顯著標示、附一份固定文字的 NOTICE。§V.2 還要求你散布前讓每個接收者受到「至少跟第五節與 Exhibit A 的使用限制同等嚴格」的可執行條款約束,並且告知對方那些限制適用。注意範圍是「至少同等嚴格的使用限制」,不是「整份合約原封不動照搬」。這就是為什麼我的 repo 是 gated,不是為了擺架子。
有趣的是 §III.3 的鼓勵事項第三條寫著:
publish at least one technical blog post or a public statement describing your experience using MiniMax H3 Works
授權條文本身在鼓勵你寫這篇文章。
進階:兩個可以跳過的機制問題
這節不讀不影響使用。 想直接開始生片的,上面的東西夠了。
為什麼「剪枝版」不是把模型變笨
Comfy-Org 出的 pruned 版不是有損剪枝,而且這件事是原廠自己講的,不是社群發現的。model card 寫著:
H3-Omni-Transformer is a 33B-parameter dense, single-stream Transformer, with approximately 13B parameters residing in AdaLN-related branches. Because the AdaLN modulation outputs can be precomputed and cached, these parameters do not need to be loaded for inference-only deployment.
翻成白話:那 13B 的參數負責算「每一層要怎麼做 modulation」,而 modulation 只跟 timestep 有關。既然只跟 timestep 有關,那就先算好存成一張查表就行,推論時根本不用把那 13B 載進來。
Comfy-Org 的 pruned 就是把這件事做成檔案:adaln_proj 那 13.04B 絕大部分換成一張 8 維的 timestep 查表 adaln_t_table [1025, 8]——13,039,369,728 個參數降到 43,642,368 個,約 299 倍(縮減後的 adaln_proj 張量仍有殘留,不是整個拿掉),總參數 33.12B → 20.11B。數學上等價,不是砍品質。
而這也決定了量化該從哪裡下手。AdaLN 發出的 scale 和 shift 會乘進每一條 residual,誤差一路穿過 50 個 block,每個採樣步再累積一次,滾起來像複利。原版要嘛保護那 39% 的參數(保護完檔案比 INT8 還大)、要嘛一起量化下去碰運氣。剪枝版讓這個兩難直接消失,因為那個投影已經不在推論路徑上了。
檔案實際長這樣(從 NVFP4 檔標頭讀的):
200 個線性層量化,每層四個張量:
weight U8 [5376, 3584] 打包 FP4
weight_scale F8_E4M3 [5376, 448] 每區塊縮放
weight_scale_2 F32 [] 每張量全域縮放
comfy_quant U8 [19] 格式標記
沒動的:BF16 219 · F16 51 · F32 4(norm / embedding / bias / adaln_t_table)
沒動的那些正是不該動的:normalization、embedding、bias,還有剛剛那張查表。
為什麼 NVFP4 比 INT8 快 5%,而那 5% 不是算力
同一組條件下兩種量化的對照:
| NVFP4 | INT8-ConvRot | |
|---|---|---|
| 檔案 | 11.67 GiB | 19.53 GiB |
| 時間 | 175 s | 185 s |
| VRAM 峰值 | 26,914 MiB | 28,581 MiB |
| SM 時脈均 | 2,696 MHz | 2,585 MHz |
| 溫度峰 | 82 °C | 80 °C |
時間那一列容易讀成「NVFP4 算得比較快」。它不是。
我們自己在 DGX Spark 上量過同一件事:NVFP4 把影片模型砍小三分之一,速度一點沒快,因為影片 diffusion 的瓶頸在算力,不在頻寬。weight-only 的量化只把權重變小,該做的乘法一次都沒少。
把兩個比值擺在一起就清楚了:
- 時間 185 → 175 秒 = 少花 5.4%(換算成吞吐量比則是快 5.7%)
- 時脈比 2,696 / 2,585 = 高 4.3%
時脈就解釋掉了絕大部分。 兩趟都被熱和功耗綁著跑,NVFP4 那趟只是時脈守得比較高。合理的解釋是權重小了 40%,搬資料吃掉的功耗少,同一個 500W 預算裡分給運算單元的就多——所以它跑得比較燙(82 對 80 °C),也比較快。

順帶一提:600W 降到 500W 反而更快
把功耗上限從 600W 拉到 500W,時間 185 → 175 秒。降 17% 的功率,快 5%。哪有這種事?
第一個念頭當然是量錯了。重跑,一樣。
監控數據講得很清楚:500W 下溫度峰值 82 °C,而 5090 大約 84 °C 就開始 thermal throttle;時脈只跑到 clocks.max.sm(3,090 MHz)的 84–87%。卡住它的不是功率預算,是溫度。 給更多功率只會更快撞上那道牆,然後在降頻的來回震盪裡賠更多。
⚠️ 這段有一個必須標明的前提:當時房間 35 °C。溫度真正該看的是 ΔT:82 − 35 = 47 °C。換算到 25 °C 的室溫,同樣的 ΔT 是 72 °C,離熱牆的距離從 2 °C 變成 12 °C,整個結論可能就不成立。
所以絕對秒數是「這台機器那一天」的數字,可以搬走的是比值。 你的房間比我涼,這條可能對你不適用;但「先確認自己是不是被熱卡住,再決定要不要加功率」這個順序,到哪裡都適用。
開始之前確認三件事
- 你的卡是 Blackwell(不是的話改用
pruned_int8_convrot,NVFP4 只會幫你省磁碟) - ComfyUI 啟動訊息裡
Native ops有nvfp4 - 步數改成 10,別用範本的 20
如果只能記一條,我會留幾何那條。「左手」是一個要模型懂身體才能執行的詞,「從畫面左緣進來」是一個座標;空的袖子畫得出來,不存在的手臂畫不出來。
寫提示詞卡住的時候,先問自己一句:我要的東西,在畫面上是什麼形狀。
常見問題
- MiniMax-H3 一張顯卡跑得動嗎?
- 跑得動,但要挑量化版本。官方的部署範例開四張 GPU,而全精度那套光是權重就 115 GiB。換成剪枝加量化的版本,四個檔案合計 31.7 GiB,一張 32GB 的 RTX 5090 生 864×480、10 秒的有聲片約 175 秒。
- MiniMax-H3 要下載哪些檔案?
- 四個:一顆 transformer(FL2VA 或 Ref2VA 挑一個)、一個 Qwen3-VL-32B 文字編碼器、一顆影片 VAE、一顆音訊 VAE。音訊和影片各有自己的 VAE,因為它們是兩條獨立的輸出。
- FL2VA 和 Ref2VA 差在哪、該選哪個?
- FL2VA 是首尾幀模式,吃 0 到 2 張圖:不給圖就是純文字生影片,給一張是首幀或尾幀,給兩張是首尾都指定。Ref2VA 是全參考模式,可以吃最多 9 張圖、3 段影片、3 段音訊。新手從 FL2VA 開始就好。
- NVFP4 在非 Blackwell 顯卡上有用嗎?
- 只省磁碟,不省時間。ComfyUI 啟動時會把 nvfp4 列在 emulated ops 底下,意思是權重在做矩陣乘法前會被展開回高精度。檔案照樣小,速度一點都沒有。
接著讀
- 2026-05-04[實戰] Z-Image Turbo 教戰守則:6 種配置怎麼選,1.37× 加速 + 44% 省 RAM
DGX Spark GB10 上 Z-Image Turbo 6 種量化組合(BF16 / FP8 cast 標準 / FP8 cast fast / FP8 scaled Kijai / NVFP4 / NVFP4+FP8 encoder)實測。N=10 隔離 GPU 測,NVFP4 5.50s warm 比 BF16 7.55s 快 1.37×,FP8 三條 path 全比 BF16 慢。模型工作集 RSS 從 BF16 20.6 GB 降到 NVFP4+FP8 11.5 GB(省 44%)。
- 2026-06-01[Benchmark] NVFP4 把影片模型砍小三分之一,速度卻一點沒快——因為 diffusion 是 compute-bound
NVFP4 把蒸餾版 Sulphur 2(LTX-2.3)影片模型從 29 砍到 19.5 GB,在 GB10 DGX Spark 上畫質速度都沒掉。影片 diffusion 是 compute-bound,跟 LLM decode 剛好相反。
- 2026-05-30[Benchmark] NVFP4 在 DGX Spark 比 FP8 快 1.5 倍——但贏在壓縮,不是那顆 FP4 運算單元
GB10 DGX Spark 上,純 dense 模型單流 decode,NVFP4 比 FP8 快約 1.5 倍。但快的是頻寬(權重檔變小),不是 FP4 tensor core——最快那條路根本沒碰它。
- 2026-05-04[實戰] Z-Image Turbo 教戰守則:換配置會崩品質嗎?LPIPS + CLIPScore 雙軸驗證
Z-Image Turbo 量化版會不會崩品質?LPIPS(perceptual 距離 vs BF16)+ CLIPScore(image-text 對齊)雙軸跑 6 prompt × 4 config × 3 seed = 72 sample。結論:NVFP4 跟 BF16 圖長得不一樣,但這個 N=72 sample 沒測到任何量化 config 的 prompt fidelity regression — 4 個 config CLIPScore 都在 ±std 0.04 內,差距比 noise 小一個數量級。
不想錯過新文章?
訂閱我確保不漏接!
隨時一鍵退訂。