在今年一月發布 Linum v2 後,我們便全力投入於開發下一款開源權重的生成式影片模型。針對 Linum v3,我們鎖定了三個關鍵的改進方向:提升提示遵循度、加速訓練與推論,以及確保物理一致性。在本系列部落格中,我們將深入剖析從零開始訓練文字到影片模型的工程工作與基礎研究。
過去幾年,影像與影片模型取得了長足的進步,儘管這些模型的內部架構自 Stable Diffusion 3 以來變化不大。當然,也出現了一些小幅度的變體,例如 GPT-Image 所推廣的自迴歸擴散模型。但總體而言,大多是基於 Transformer 主幹和 v-prediction 目標的流匹配(flow matching)。根據我們的經驗,大部分的進展直接歸因於三種數據改進:強化學習(RL)帶來了一些進步,但它在過去幾個月才真正開始在影像和影片領域發揮作用。
幾年前,所有生成式模型(無論是文字、影像或音訊)的普遍觀念是,在預訓練階段盡可能多地匯集數據。幸運的是,這個領域已經變得聰明多了。如果你將大量低品質數據(例如嚴重壓縮的 JPEG 圖像)投入預訓練,你的模型將會浪費大量算力來學習模仿這部分數據。如果你能妥善篩選你的數據集,你的模型將更容易學到你期望的內容。
我們知道這聽起來很明顯,但在實踐中卻難以實現。不過,所有好的建議回顧起來都應該顯得理所當然。
今天,我們將帶你了解自 2024 年以來,我們數據篩選方法的演變。希望也能為你未來訓練自己的生成式模型節省一些麻煩。
我們的數據篩選堆疊演進
最初,我們決定使用傳統的電腦視覺演算法來處理原始數據集。這樣我們就可以使用便宜的 CPU 實例叢集,而不是大量運行多模態 LLM 的 GPU,或花費數百萬美元的 GPT-4 token。
我們需要從數百億張圖像和影片中篩選出預訓練數據集。圖像不需要特別的預處理,但原始影片需要。當你訓練生成式影片模型時,你首先需要在圖像生成上進行預訓練。如果模型先學會名詞再學會動詞,它往往會收斂得更好(也更快)。
下次觀看電視節目或電影時,注意鏡頭切換的頻率。如果你看的是近二十年來的作品,很可能每 5 秒就會出現一次鏡頭切換。何時以及如何切換鏡頭是作者的決定,而不是生成式影片模型應該隨意做出的。因此,我們需要將影片按鏡頭邊界切片,分割成影片片段,然後才能進行篩選。
基於我們節省成本的純 CPU 策略,我們選用了 PySceneDetect。它大致上會維護一個 K 幀的滾動窗口,如果第 K+1 幀的圖像統計數據顯著不同,它就會將該幀歸類為一個鏡頭切換。它沒有底層的機器學習模型。它運行速度很快,但對於溶解、淡入淡出和抖動切換等常見轉場效果處理不佳(這實際上是一個巨大的問題)。
每當你獲得新數據時,都應該花幾天時間隨機抽樣檢查,列出你想保留和想丟棄的內容。理想情況下,你會花時間草擬一個「好」和「壞」的類別本體,並追蹤這些類別的相對大小。
在數據篩選過程中,你的工程師思維會接管,你會花費過多的時間調整啟發式規則(或 LLM)的參數,追逐那個「完美」的決策邊界。這些筆記將幫助你避免陷入這種情況。它們將提供你所需的資訊,讓你停止嘗試「再多一個想法」,當答案顯然是「否」的時候。
此外,理解數據分佈的形狀將有助於數據集的再平衡。在所有影片的自然分佈中,某些類別的代表性過高。我們需要對其進行抽樣和抑制,否則它將主導訓練,而我們的模型將難以學習我們生成任何內容所需的長尾的各種人物/地點/事物/動作。
生成式影片模型主要受限於我們能用文字正確且一致地描述的內容。更精確地說,是 LLM 能廉價地為我們註釋的內容。文字為理解視覺世界提供了相當好的框架,但它絕不是影片生成所有方面的正確條件機制。諸如時空中的攝影機軌跡和演員表演的細微差別等細節,在自然語言中根本無法描述。參考驅動的影片生成目前很流行。這是對影片這些難以言喻的屬性進行控制的首次闡述,但我們認為它本身並不是一個很好的控制方式。它足以用於自動生成和混音內容,如迷因和腦殘內容,但它不允許達到傳達作者意圖所需的精細控制水平。它無法讓我們創造這項技術應該帶來的引人入勝的故事。
目前,我們需要篩選掉影片片段中主要「有趣」的「事物」無法被標註的片段。沒有清晰的文字描述,對我們的文字到影片模型來說就只是雜訊。
例如,我們想篩選掉文字密集的影片。對於螢幕上不斷變化的動態圖形,LLM 仍然難以進行標註。閱讀螢幕上的文字並不是難點,難點在於清晰地描述螢幕上文字何時以及如何變化。我們不想在我們的 20 億參數模型中浪費算力來學習動態圖形,而是將其分配給學習動作。總體而言,我們的目標是為動畫創作工具。文字和動態圖形目前不是優先事項。
為此,我們從每個影片中採樣幀,並運行一個小型的 EAST Detector 來提取文字的邊界框。然後,我們根據包含文字的幀的百分比以及文字覆蓋每幀的百分比來篩選掉文字密集的影片。
使用 CNN 處理這項任務是個好主意,但具體的選擇是錯誤的。為了在 CPU 上處理數百億幀,我們不得不大幅度縮小幀的大小。因此,許多帶有小字體的文字密集樣本就這樣被忽略了。
當螢幕上沒有太多內容時(例如,特寫某人的臉),很難描述正在發生的具體動作。如果內容太多(例如,極度晃動的鏡頭,一個足球比賽中有許多人在球場上移動),LLM 就難以正確標註影片片段。我們將這些類別的影片歸類為「難以描述的動作」片段並將其丟棄。
影片通常以壓縮格式序列化在磁盤上。像 H.264 這樣的編解碼器通過儲存關鍵幀和描述關鍵幀如何隨時間變化的運動向量來減小文件大小,而不是隨時間變化的每個像素的 RGB 值。我們在這裡省略了一些細節。在 H.264 中,編碼器計算兩個幀之間的殘差(幀差異),然後對殘差應用 DCT(離散餘弦變換)。這樣我們得到一個高度量化的運動向量,它提供了有損的幀重建,以換取更小的磁盤文件大小。
我們使用 MP4 文件本身內部的運動向量來隔離和篩選掉「難以描述的動作」影片。在 2024 年,我們也嘗試在 CPU 上運行傳統的光流演算法,如 Lucas-Kanade。它們極其脆弱,並且在開放世界影片中的遷移效果不佳。具體來說,我們使用了 mv-extractor 並為每個片段計算了兩個啟發式指標:
這是一個廉價的初步篩選方法,但其召回率平庸(即,許多難以描述的動作片段被保留在數據集中)。
從我們對原始數據分佈的初步審查來看,很明顯,人們對著鏡頭說話的「talking head」片段的代表性過高。如果我們放任不管,數據集將會嚴重偏向這類片段。我們的模型將會異常擅長生成它們(很可能以犧牲其他內容為代價),因此我們需要找到它們並對其進行抽樣。
還記得 2025 年初病毒式傳播的 VEO-3 影片嗎?其中有大量是「街頭採訪」影片。它能生成這些影片的能力遠超其他風格的影片,這表明底層訓練數據集存在顯著偏差。
生活在傳統 CV 世界中,我們自然而然地深入研究工程領域,並引入了額外的啟發式規則。我們從每個影片片段中採樣幀,並運行 Haar 級聯人臉檢測器來提取人臉的邊界框,並計算兩個數字:Haar 特徵通常無法檢測到相對於相機傾斜的人臉。對我們來說,這是件好事。這樣我們就可以將真正的「talking head」影片與人們進行實際動作的影片區分開來。
然後,又一個決策樹:
我們開始勾勒一個相當複雜的決策樹。它充滿了僅僅「有點」有效的有損代理,並且非常不完整。我們省略了我們嘗試篩選的許多類別。例如,帶有 Ken Burns 效果的片段。此外,我們還沒有打開質量篩選的潘多拉魔盒(例如,識別並丟棄像素化內容)。
這種方法根本無法擴展。每次你有一個新的篩選器想法時,你都必須重新審視決策樹中的新節點如何影響所有其他分支。一切都相互交織,最終你會得到一個既難以理解又難以編輯的管道。
當我們在 2024 年開始時,我們面對的是數百億個樣本。考慮到我們有限的預算,我們的直覺是構建最便宜的篩選器。這是根本錯誤的。我們的影片模型在 2024 年數據集上訓練了數週後,仍然難以學習彈吉他這類基本動作,但在應用了 2025 年的篩選器後,僅用不到 24 小時的訓練就能學會這些動作。與其尋找最便宜的篩選器,不如優化你負擔得起的最佳篩選器。
這引出了我們的第二個體會:拋棄你「有原則」的電腦視覺技術,盡可能採用黑盒子神經網路。有些模式是人類無法很好地描述的,無論我們多麼努力。老式的 CV 方法是他們那個時代最好的手工近似。它們是真正令人印象深刻的工程壯舉,但在 99% 的情況下,一個訓練有素的神經網路將學會一個非線性函數,在精確度和召回率上獲勝。
一旦你重新定位自己以適應這種現實,你的工作應該從創建廉價的啟發式規則轉變為優化 GPU 通量的模型,並構建彈性、可並行化的工作負載,以便在跨提供商的 SPOT 實例上運行。在 Karpathy 2025 年夏季的 YC 演講中,他討論了他在 Tesla AutoPilot 工作中的類似認識。他將其描述為從「軟體 1.0」到「軟體 2.0」的轉變。
具體來說,我們用 AutoShot 和 TransNetV2 取代了 PySceneDetect 的啟發式規則,並通過自定義 CUDA 內核加速了推論。這些模型仍然難以 100% 捕捉所有鏡頭。例如,它們仍然會錯過幀抖動切換。目前來說足夠了。但未來我們必須用新數據訓練這些模型來填補這些空白。我們停止在 CPU 上運行古老的 EAST Detector。相反,我們將 PaddleOCR 與 TensorRT 部署在數千個 Nvidia A10G 和 L4 上。僅用了約 36 小時就處理了數百億個樣本,花費不到 1 萬美元,卻獲得了更快、更好的結果。我們還剔除了纏繞的電腦視覺演算法網絡(Haar 人臉檢測器、Lucas-Kanade、單眼深度估計器等),取而代之的是一套微調後的大型語言模型。我們仍然使用 H.264 運動向量作為廉價的初步篩選器,用於處理極低和極高運動的片段。
由於 Unsloth 的幫助,微調相當直接。服務這些模型稍微棘手一些。我們像其他人一樣使用 vLLM。但是,要保證 Unsloth 和 vLLM 之間完全的位元級兼容性幾乎是不可能的。每次我們不得不使用 vLLM 部署時,都需要花費一週左右的時間,追蹤 vLLM 代碼並修改圖像/影片 patchification 的確切操作(或修復 vLLM 中的小錯誤),以便我們能夠匹配 LoRA 或微調 LLM 開箱即用的結果準確性。這意味著標註工作是關鍵。
訓練 LLM 進行數據篩選的難點在於類別總是有些模糊。你將不得不回答諸如以下問題:
你最常遇到的問題之一是自我一致性。在標註數百個樣本的過程中,放寬標準、錯誤標記樣本、混淆數據集信號是很自然的。
數據集構建與 LLM 微調形成一個連續過程
編寫清晰的定義。盡可能具體。你應該已經從你的數據集研究中獲得了本體草稿。
從你的數據集中抽取隨機樣本並進行標記。根據需要修改類別。
保留一個驗證集。你將在最後一次使用它,以確保你的模型能夠泛化。不要用它來指導迭代標記。
使用 LoRA 或完全微調。我們在初始篩選器中使用了 Qwen-2-VL-2B;較小的模型對於這些任務已經足夠智能。
找出模型最掙扎的類別。要麼你需要更多該類別的數據,要麼更有可能的是,該類別構建不當,需要重新定義。對於美學評分,錯誤標記的樣本通常表明你自己的評級不一致。
添加、刪除或合併類別。然後再次標記。當你無法在 LLM 中誘導出更好的決策邊界時停止。
在 2025 年的一項 CMU 研究中,研究人員僱傭了電影攝影專家來註釋在線影片片段中的攝影機運動,並訓練其他非專業人士進行類似的註釋。即使有了標準,專家們在 24% 的時間裡也與「真實標籤」不一致。只有通過重複試驗,他們才達到了 96% 的一致性。花費數天時間標記和重新標記數據集是痛苦的,但這就是現實。至少,我們很幸運生活在一個只需要 2-3K 個樣本就能訓練出一個好篩選器的時代。而不是早期深度學習時代,那時你需要至少數萬個樣本才能從頭訓練一個 CNN。
如果你發現自己正在從事數據篩選工作,我們建議你快速搭建一個簡單的標記工具,就像我們下面展示的那樣。我們用 Supabase 儲存標籤,用 R2 儲存樣本,快速搭建了一個非常簡單的 React 應用。
我們的內部 Web 應用程序用於數據標記和 LLM 評估
在這裡,我們載入一個現有的數據集,並瀏覽幾個被評為「1」(我們美學評分中最醜陋的)的圖像範例。該工具需要便於你搜索現有標籤、版本控制標籤以及編輯它們,因為你將對數據集進行多次迭代。
最終,我們對 Qwen-2-VL-2B 進行了監督式微調(SFT)來標記:
醜陋的產品圖像:背景雜亂或非常平坦的灰色背景的產品圖像(想想糟糕的亞馬遜目錄圖像)。
我們只保留了我們的篩選器預測為「繪畫/插圖」或「保留」的圖像。對於影片,我們保留了「動畫」和「保留」的片段,同時對「視角鏡頭」進行了抽樣。
在數據標記過程開始時,我們試圖極其具體地描述將樣本劃分為醜陋與美麗的圖像和影片的屬性(例如,過度曝光的光線、柔和的色彩分級)。我們認為 LLM 學習我們認為圖像醜陋的精確原因比學習任意的「醜陋分數」更容易。
再一次,我們最初的直覺被證明是錯誤的。使特定樣本醜陋的屬性往往是相關的;你最終會為同一個樣本分配 K 個不同的美學標籤。這反過來又帶來了兩個重大挑戰:
美學評分的範例 — 1 到 4
請耐心聽我們講一段簡短的歷史課。
傳統上,人們微調 LLM 的主要方式是監督式微調(SFT)。你可以更新網絡中的所有參數,或者訓練一個 LoRA,在其中你在網絡中插入少量參數,並且只訓練這個新參數集。我們在訓練分類器時使用了這種方法。我們將 (圖像/影片幀, 提示「將其分類為 A、B 或 C」, 真實標籤) 的三元組餵給 Qwen-2-VL-2B,並使用與預訓練相同的目標(帶有交叉熵的下一個詞預測)來更新模型。通過 SFT,你本質上是在擴展預訓練,因此你的模型會學習你的新任務。
在 2025 年初,DeepSeek 在其 R1 論文中推廣了一種不同的微調技術,稱為「基於可驗證獎勵的強化學習」(RLVR)。他們沒有使用下一個詞預測,而是使用了強化學習(RL),其中模型的響應根據評分標準進行準確性評估。
事實證明,如果你的 LLM 即使只有 1/1000 的機率能解決一個問題,我們也可以引導網絡更穩定地找到這個解決方案。這些網絡更新比 SFT 期間提供的更新要小得多,因此 RLVR 使我們能夠對擴展 LLM 以執行我們的任務進行更精細的控制。坦率地說,SFT 就像用屠刀進行模型手術,而 RLVR 就像用手術刀進行模型手術。
美學評分的要素(RLVR)
請在 1 到 4 的範圍內對圖像進行評分,其中 1 是最低質量,4 是最高質量:
令人作嘔的圖像通常是模糊的(失焦)或像素化的(舊圖像,顆粒感)。細節難以看清。這些圖像通常曝光過度(光線太多,細節被沖淡)或曝光不足(太暗以至於看不清細節)。信息圖令人作嘔。
醜陋的圖像存在與令人作嘔的圖像相同問題,但質量上沒有那麼糟糕。它們對比度低,光線不足,或者主體看起來「扁平」,與背景區分不明顯。小的水印如果橫跨整個圖像(例如在中心)則顯得醜陋。
好的圖像光線充足,對比度清晰,主體清晰。
美麗的圖像具有高動態範圍(清晰、色彩鮮豔、對比度銳利或風格化)。它們通常是肖像或動作鏡頭。
到了我們準備好美學數據集時,RLVR 已經被各大實驗室採用;所以我們也嘗試了我們的美學評分器,它的表現遠超 SFT 版本。如果你看看過去 18 個月 LLM 在實際應用中取得的所有進展(Claude Code、網絡安全等),你可以直接將這些進展歸因於 RLVR。數學和編程嚴重依賴推理來有效地搜索解決方案空間,然後給出答案。以前,OpenAI 的 o 系列模型受到人類可收集數據量的限制。有了 RLVR,所需的人類數據就少得多。評分標準取代了數萬個人類編寫的推理過程。這是一種非常有效的方法,以至於一些模型能夠在零人類推理過程的情況下學會推理。我們的提示詳細說明了我們為何將樣本評為 1-4 的不同原因,而我們的評分標準則根據真實標籤和預測標籤之間的絕對差異進行懲罰。具體來說,我們在 Qwen-2.5-VL-3B 上使用了群組序列策略優化(GSPO)作為 RLVR 算法。這只是 DeepSeek 在其 R1 論文中提出的 GRPO(群組相對策略優化)算法的一個小調整。
當你向 LLM 引入推理時,通常的做法是先用人類編寫的推理過程對模型進行 SFT,使其了解如何在學習生成自己的推理之前使用邏輯。我們很難簡潔地解釋我們的美學評分。因此,我們完全取消了 SFT 階段,直接採用了 DeepSeek-R1-Zero 的技術,讓 LLM 在零人類推理過程的情況下進行學習。這也沒奏效。事實證明,用語言很難準確描述為什麼某個東西在美學上是 2 而不是 3。
在 RLVR 之後,我們採用了 WAFT(一種最先進的光流預測器)來進一步篩選掉長尾的低運動影片。我們沒有依賴 Haar 級聯等啟發式規則,而是將影片標題轉換為標籤,並使用這些標籤來編輯我們的訓練數據分佈(例如,對「talking heads」進行抽樣,對動物影片進行過度採樣)。
* 在丟棄過長或過短的片段之前,根據片段數量推斷。
如今,關於「預訓練」、「中期訓練」和「後期訓練」的術語在互聯網上被廣泛討論。預訓練和中期訓練階段的存在只是因為無法創建完美的篩選器。
在預訓練期間,人們的容忍度更高。他們願意讓一些低質量數據進入流程,以確保他們涵蓋了目標數據分佈的所有必要模式。到了中期訓練時,他們願意收緊分佈,即使這意味著丟棄一些好的內容。
無論如何,數據篩選是除了擴展之外,你能做的最大程度來提高模型品質的槓桿。如果你從這次旅程中學到一點,那就是永遠不要在你的數據篩選管道上吝嗇。畢竟,它們吃的就是這些數據。
我們是兩兄弟,正在從頭開始訓練文字到影片模型,試圖讓動畫對每個人都觸手可及。請繼續關注更多關於標註、合成數據生成以及我們正在進行的關於探索像素空間生成模型更好流形的工作的部落格。
關於從頭開始構建生成式影片模型的技術深入探討,以及 Linum 新發布的更新。