Hugging Face用178張圖訓練水彩AI

Hugging Face在9月3日公開一份完整的訓練紀錄:拿一個寫程式的模型,訓練到會畫水彩。整條流程裡沒有擴散模型,也沒有任何圖像生成元件。模型吐出來的是一段JavaScript程式碼,呼叫p5.brush這個筆刷函式庫,跑一遍,畫布上就留下一幅水彩畫。

作者是Sergio Paniego,最初的點子來自Surya Narreddi。基礎模型選用Qwen3.5-35B-A3B,訓練用TRL裡的GRPO,LoRA掛在全部線性層上,學習率5e-5,搭配constant_with_warmup排程。程式碼執行、渲染和評分這段封裝在OpenEnv環境裡:模型生成程式碼,環境負責執行它、截圖,再把圖交給評分器。

獎勵沒有對錯,只有一池參考圖

強化學習這兩年在大型模型上跑得順的場景,大多有一個能自動判定對錯的終點——數學題有標準答案,程式題有單元測試。水彩畫沒有。這份紀錄裡的解法,是把「好不好看」拆成兩個可以評分的東西。

獎勵函數一共四項。程式碼能不能跑通佔0.05,程式碼長度佔0.05,剩下九成權重分給兩個美感訊號:一個是做成對比較的評審模型,一個是叫HPSv3的人類偏好評分器。這兩項的權重在不同實驗裡互換,judge-led那組評審佔0.60、HPSv3佔0.30,hps-led那組則反過來。

評審的判斷標準來自一個人工評分的參考池,一共178張畫。模型每生成一張,就跟池子裡的作品比一輪。這個池子同時也界定了什麼算「多元」,部落格原文寫道「The pool decides what counts as variety, the same way it decides what counts as quality」(池子怎麼定義品質,就怎麼定義多元性)。這178張圖實際上框住了整個訓練目標的上限。

三次實驗,三條曲線

作者跑了三組對照實驗。只用HPSv3評分的那組跑60步,平均獎勵從0.58升到0.71;judge-led跑110步,從0.45到0.72;hps-led同樣110步,從0.57到0.82,起點和終點都是三組裡最高的。

漲幅最大的是judge-led的0.27,但它起點也最低。hps-led漲了0.24卻收在0.82,把人類偏好評分器放在主位、評審模型當輔助,比反過來更穩定。只有評分器、沒有評審的那組只漲了0.13,是三組裡最小的——成對比較這一層確實貢獻了額外訊號,並非可有可無的裝飾。

一張卡、34小時、一百來美元

硬體那一欄很單純。全程用一張H200:60步跑18小時,110步跑34小時。渲染放在一個CPU規格的Space上,HPSv3評分器放在a100-large規格的Space上。

按目前雲端H200每小時3到4美元的掛牌價粗估,一次110步的完整訓練落在100到140美元區間,加上評分器和渲染的開銷,整個專案的算力帳單大概是幾百美元。對一個只想驗證「美感偏好能不能當獎勵」的團隊來說,這個門檻低到可以隨手一試。

開源的東西鋪得相當齊全:訓練配方和腳本放在GitHub,178張參考圖的資料集、可以直接複製的RL環境Space、HPSv3評分器Space、三個LoRA轉接器連同各自的rollout資料集,還有一個能翻完所有生成結果的畫廊。想重現的人不必自己搭環境,把Space複製一份、改改獎勵權重就能開始。

順著這條路往下想,能挪用的場景不少。前端元件的觀感、海報排版的疏密、圖表配色是否得體,這些都是說不清對錯、但人一眼就能分出高下的任務,過去很難寫進RL的獎勵函數。現在的做法是先攢一個幾百張的參考池,找一個夠用的偏好評分器,剩下的交給GRPO。麻煩的地方仍在參考池:池子偏了,模型就跟著偏,而且偏得很整齊。

參考來源:Hugging Face官方部落格、TRL與OpenEnv專案文件、CocoLoop;三組實驗的步數、獎勵區間與單卡時長按部落格給出的訓練紀錄逐項核對,算力費用為按公開掛牌價的粗估。