English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

eval_chat_quality() 連接到錯誤的執行器

應在第 3 天停止的 10 天故障

ANDREA-120M v1 在 RTX 4090 上以 130W 持續功率訓練 16.1 天。每 200 步儲存樣本輸出,但訓練期間從未分析。到第 80K 步(第 4 天),樣本讀取為 region region region region region。到第 110K 步,''''' ''''' '' ''' ''。訓練繼續另一 11 天,直到第 165K 步被手動終止。


煙霧警報出了什麼問題

eval_chat_quality() 存在於程式碼庫中。它評分樣本品質。它甚至正確運作。但它只連接到舊版的 multi-phase runner。v1 firehose 課程使用了不同的程式碼路徑,從未調用該 eval。煙霧警報器放在另一個房間,門是關著的。


代價

16.1 天的計算資源。130W 持續運作。~50 kWh 的電力。模型在任何時間點都沒有產生可用的輸出。Loss EMA 在第 110K 步驟降至 3.23,然後在訓練於第 165K 步驟停止時回升至 4.54。數值上合理;語義上空洞。


對於 8449 詞彙的隨機機率是 9.04。v1 在產生 region region region 時達到 3.23 EMA loss。Loss 本身無法偵測連貫性崩潰。 一個透過重複高頻詞彙來最小化 cross-entropy 的模型,會因這種失敗模式而得到數值上的獎勵。

為什麼 Loss 曲線說謊

v1 在產生 `region region region region` 時達到 EMA loss 3.23(遠低於隨機機率 9.04)。用 2-3 句解釋模型如何在產生退化輸出時仍達到數值合理的 loss。參考 cross-entropy 機制。

在四個軸上評分每個樣本

複合分數

v2 提供了一個連貫性閘門,對每個樣本(在火hose訓練期間每 100 步採樣一次)在四個指標上進行評分:


Coherence gate flow


指標範圍捕捉的內容
二元組多樣性0-35兩個詞元層級的重複 (region region)
三元組多樣性0-35三個詞元層級的重複 (a, b, a, b, a, b)
英文單詞存在度0-20偏離至非英文 (CJK、斯拉夫文、亂碼)

| 字元多樣性 | 0-10 | 單一字元崩潰 (''''', ... ... ...)


總分可能:100。門檻:30。


為什麼使用四個指標,而不是一個

每個指標捕捉不同的失敗模式:


- 模型崩潰成一個二元組的模型會失敗於二元組多樣性,但通過字符多樣性。

- 產生標點噪聲的模型(''''' ''''' '')會失敗於字符多樣性,但如果標點對變化,可能通過二元組多樣性。

- 模型漂移到非英語(翻譯訓練污染)會失敗英語單字存在性,但如果產生語法正確的普通話,則通過 Bigram & Trigram 多樣性。

- 產生 a, b, a, b, a, b 的模型通過 Bigram(a-b & b-a 出現),但失敗 Trigram(a-b-a, b-a-b 主導)。


這四個指標共同涵蓋失敗空間。複合分數低於 30 表示至少一個軸崩潰得足夠嚴重,以拖累整個樣本。


連續計數器

自動停止在 5 個連續樣本 分數低於 30 後觸發。單一壞樣本可能在階段轉換或罕見來源抽取時發生;連續五個表示模型已停止恢復。以每 100 步取樣,5 個連續退化樣本 = 500 步確認的連貫性崩潰。

計算分數

在步驟 80K 時,v1 樣本讀取為 `region region region region region region region region`。估計分數:(a) 二元組多樣性,(b) 三元組多樣性,(c) 英文單字存在,(d) 字元多樣性。計算總分。此單一樣本是否會觸發閘門?

v1 會呈現的樣子

回測觸發

根據 v1 的儲存樣本,追溯應用 v2 一致性閘門顯示,閘門會在 步驟 132K 觸發。v1 運行到步驟 165K 才手動終止。閘門會提前 33,000 步驟停止訓練。


計算節省的計算資源

RTX 4090 在 FP16 cuBLAS 下以 ~6 步/分鐘訓練。33,000 步 / 6 步/分鐘 = 5,500 分鐘 = 91.6 小時 = 節省 3.8 天的計算資源。 以 130W 持續運作,相當於 ~12 kWh 電量,加上 3.8 天的 GPU 磨損。


為什麼是第 132K 步,而不是第 80K 步

v1 在第 80K 步產生 region region region。為什麼當時閘門沒有觸發?


因為在壞樣本之間偶爾出現好的樣本。bandit 每 7-42 步循環遍歷來源。即使是退化模型,偶爾從不同來源採樣時會產生更多樣的輸出,暫時重置連續計數器。到第 132K 步,模型已崩潰得足夠深,以至於 5 個連續退化樣本(500 步)變得不可避免。


課程:將煙霧警報器連接到每個執行器

v2 將 eval_chat_quality() 直接連接到火hose課程的樣本處理程式碼路徑,而不僅僅是舊版執行器。每個樣本、每次執行、每個程式碼路徑:相同的閘門。此修復花費約 30 行程式碼。

一般化工程模式

v1 浪費了 3.8 天,因為 eval_chat_quality() 只連接到一個執行器。用 2-3 句話爭論 v2 的連貫性閘門為長期運行的 ML 訓練建立了什麼工程原則。參考佈線選擇與複合指標設計。