Appearance
我刪掉了 AI 影片製作工作流裡最貴的那一步
MiniMax H3 的 Ref2VA、一次記憶體爆炸,和一個我看了兩小時的錯儀表
作者:Ray 日期:2026 年 8 月 14 日
H3 不是「唸咒語」的 AI。
它比較像一個聽話但完全不會發問的實習劇組。你交一張工作單給他們,他們一口氣把片子拍完,連現場收音和配樂都錄好,中途一句「你這裡是想要⋯⋯嗎?」都不會問。
所以重點不是你的句子寫得多漂亮,是工作單有沒有填完整。
上一篇我寫的是怎麼花 $2 租到一台能跑它的機器。這一篇是我拿那台機器去問一個具體的問題:
能不能不要畫關鍵幀。
為什麼是這一步
做上一支片的時候,我的流程是這樣的:
先用圖像模型生關鍵幀——每個鏡頭的第一格長什麼樣。生完篩,篩完修,修完再生。43 張圖,其中 18 張是重做的,某一張改了 3 次。
然後才把那些圖丟給影片模型,讓它動起來。
那 43 張圖花了我 4 到 5 個小時。 影片生成的部分反而快,因為那時候我人已經不在電腦前了。
所以「換一個更快的影片模型」對我來說一直是個假議題。真正貴的不是動起來那一步,是為了讓它動起來而先畫的那些圖。
Ref2VA 是選角,不是動畫
H3 有 5 種模式,字母是縮寫:T 是文字、I 是圖、FL 是首尾幀、Ref 是參考、VA 是影像加聲音。
前面 4 種都在回答同一個問題:這一格畫面長什麼樣,然後往下演。 你得先有那一格。
Ref2VA 問的是另一個問題:這個人長什麼樣,讓他出現在一個還不存在的鏡頭裡。
差別是:前者是動畫,後者是選角。
如果選角這條路走得通,那 43 張關鍵幀就不用畫了——你只要有角色的照片。
第一支就成了
我拿了 2 張圖進去。一張是主角的正面棚拍,一張是那隻發光公仔的白底商品照。
沒有給場景圖,沒有給首幀。房間、床、床頭櫃、窗外的黑,全部只用文字描述。連她身上那件家居服都是文字寫的——參考照裡她穿的是完全不同的衣服。
5.88 秒的片,415.27 秒跑完。
出來的東西我可以直接用。
不是「當草稿可以」,是眼鏡的金屬細框、髮絲、木紋、床單的皺褶都撐得住。而且那隻公仔的融化底座、左耳的橘色、右耳的深灰、粉色肉球、肚子的暖光,全部對。
那一刻我知道,4 到 5 個小時可以不用花了。
然後我把它拉長,機器就爆了
一支 5 秒的片證明不了什麼。真正的片段有 13 秒,中間要切 3 次鏡頭。
我把長度改成 328 格,按下去,走開。
回來的時候 ComfyUI 已經死了,系統日誌一路刷著同一行:
WARN: container is unhealthy: triggered memory limits (OOM)記憶體不足。 但奇怪的是,機器上明明還有空間。
我看了兩小時錯的儀表
在 Linux 上看記憶體用 free。我從早上就掛著一個監控,每 10 秒印一次:
09:45:22 used=83GB avail=40GB83 GB 用掉,還剩 40 GB。看起來很安全。
它死的時候,RunPod 自己的日誌印出這一行:
INFO: high memory utilization - 52.96GiB / 55.88GiB (94 %)55.88。
我的容器上限根本不是 123 GB,是 55.88。
原因是容器裡的 free 顯示的是整台實體機的記憶體——那台機器同時跑著別人的東西。我一整個上午都在讀鄰居的儀表。
正確的數字要去別的地方拿:
bash
cat /sys/fs/cgroup/memory/memory.limit_in_bytes這件事讓我損失的不是錢,是判斷。 我根據那些數字寫了 3 次分析,每一次的前提都是錯的。
上一篇我寫「$2 買到的不是算力,是看得見內部」。這一篇要補一句:看得見內部,前提是你讀的是自己的那一格。
為什麼 13 秒會塞不下
搞清楚上限之後,帳就好算了。
H3 的權重不放在顯示卡裡,是整份留在系統記憶體,需要的部分才搬進去。Ref2VA 這條路要載兩份大的:模型本體 21 GB,理解文字的那顆 25 GB。
46 GB,還沒開始算畫面。
55.88 減 46,剩不到 10 GB 給影片本身。
而 328 格、每格 100 萬像素的畫面,需要 30 GB。
差了 20 GB。而且降解析度也救不了——降到 0.5MP 仍然要 61 GB,還是超過。這台機器對這件事就是不夠,沒有轉圜。
換一台,跑得動,但沒有比較快
我關掉那台 $0.99/hr 的 RTX 5090,在 RunPod 上另開了一台 $2.89/hr 的 H100 PCIe。
容器上限 267.3 GB。同樣的工作跑起來峰值 75.8 GB,只用了 28%。
跑完了。3 段連著排隊,中間沒有再出事。
但有個數字我沒料到。
同樣的工作,H100 只比 5090 快 10% 到 30%。
不是快 1 倍,不是快 3 倍。以每支影片的成本算:
RTX 5090 $0.99/hr (跑不動)
H100 PCIe $2.89/hr 18 分 22 秒 → $0.88 一支貴 2.6 倍,換來的是「跑得動」,不是「跑得快」。
這條要記住:大機器買的是記憶體,不是速度。 塞得進小機器的工作,留在小機器上做。
那 13 秒裡發生了什麼
現在講結果。
一次生成,13.67 秒,裡面切了 2 次鏡頭:中景側面 → 高角度俯視近景 → 公仔的極特寫。
我在工作單上寫「第 5.5 秒切」,它就在第 5.5 秒切。
我寫「第 12.5 秒,那 2 顆圓點眼睛慢慢閉一次再張開」,它就在第 12.5 秒閉了一次眼。
3 個鏡位的光線條件完全不同——第一鏡只有床頭燈,第二鏡陡俯角,第三鏡整個畫面只剩公仔的肚子在發光。那張臉從頭到尾是同一個人,金框圓眼鏡、鬆掉的丸子頭、幾根落在臉頰前的碎髮,全部沒有跑掉。
而這些東西,我一張關鍵幀都沒有畫。
那一天稍後我又跑了另一段。那段更難:全暗的房間、手機螢幕的冷藍光從下方硬打上臉、最後只剩公仔的暖光。3 種截然不同的打光,臉還是沒漂。
這就是我要的答案。
唯一的失敗,差一句話
最後 1 秒崩了。
12.5 秒的畫面是完好的。13.33 秒,整格變成無法辨識的色塊——不是變糊,是變成一團噪訊。
原因很蠢,而且完全是我的錯:我的工作單只寫到 12.5 秒。
片子有 14.37 秒。剩下那 1.87 秒沒有人交代要拍什麼,實習劇組就自己發揮了。
前一天我跑過一支 15 秒的片,完好到最後一格。回去比對,差別只有一句話——那支的結尾我寫了:
Hold to the end.撐到最後。
4 個字。
那張工作單,最後長這樣
跑了兩天之後,我對這個東西的理解變成這樣:
它不會問問題,所以每一格都要填。 你沒寫的東西它不會空著,它會自己填一個。
否定句是無效的。 你寫「不要出現第二個人」,它腦子裡就裝進了「第二個人」。想像你不希望弟弟吃餅乾——一直喊「不要吃餅乾」沒用,把餅乾收起來才有用。
長度是離散的。 它只吃特定的格數,你填別的它會無聲地跳到最近的一格。這就是為什麼我的片長總是 5.16667 秒這種怪數字——那不是編碼誤差,那是一塊樂高磚的真實長度。
長度會被當成速度讀。 給的時間比動作需要的長,它不會幫你留白,它會放慢。分配 1.5 秒給一次跌倒,你得到的是 1.5 秒的慢動作跌倒。重量來自「停」,不是「掉」。
身分要放對格子。 「這一格畫面長這樣」和「這個人長這樣」是兩個不同的欄位。放錯了,臉就會在兩個人之間閃爍。
省下來的是什麼
回到最開頭那個問題。
43 張關鍵幀、18 次重做、4 到 5 個小時——那一段不是變快了,是不存在了。
換來的成本是:一台大一點的機器,每支片多花 $0.5。
我不覺得這是「AI 讓影片變便宜」的故事。GPU 的錢從頭到尾都不是重點,兩天下來我一共花了不到 $10。
真正被換掉的是那 4、5 個小時我坐在螢幕前,一張一張看圖、一張一張決定要不要重做。
那些小時不會出現在任何一張帳單上。它們只出現在你晚上幾點能離開電腦。
想自己試一個下午:RunPod。
本文的實測環境為 RunPod 租用之 RTX 5090($0.99/hr)與 H100 PCIe($2.89/hr),模型為 MiniMax H3 開源權重,於 ComfyUI 本地部署。
本文的 RunPod 連結為推薦連結,透過它註冊我會獲得少量回饋,不影響你的價格。