重新審視 R1 思維鏈的不可讀性問題
我重新運行了關於 DeepSeek-R1 不可讀推理鏈的實驗,發現先前報告中出現的亂碼現象很可能是因為推理伺服器配置錯誤所致,而非模型本身的問題。
這是一篇簡短的研究筆記,描述了使用 OpenRouter 上的 Novita 提供商運行 @Jozdien 為論文《推理模型有時會輸出難以辨認的思維鏈》(Reasoning Models Sometimes Output Illegible Chains of Thought)所編寫的研究代碼之結果。
重點摘要:
- 我重新運行了論文中的 R1 GPQA 實驗,除了改用 Novita 外未做任何更改,得到的平均難辨認度得分僅為 2.30(論文中為 4.30),且沒有任何樣本得分超過 5(論文中有 29.4% 的樣本得分超過 7)。
- Novita 使用 fp8 量化,但就我所知,論文結果中使用的提供商(Targon,請求參數為 targon/fp8)也是如此。
- 為了消除關於 Novita 的 R1 部署在某種意義上比 Targon「更差」的疑慮,我展示了將 Targon 切換為 Novita 還能獲得更好的 GPQA 準確度,特別是在那些原始思維鏈(CoT)難以辨認的問題上。
- 在我看來,這有力地證明了:如果這些模型部署中確實有一個是「有缺陷的」,那也是論文中所使用的那個,而不是 Novita 的。
背景
在這條評論中,我寫道(強調為後加):
我對該論文對其報告觀察結果的解釋持懷疑態度,至少對於 R1 和 R1-Zero 是如此。
我經常通過 OpenRouter(這也是 Jozdien 使用的工具)使用這些模型,根據我的經驗:
-
R1 的思維鏈通常完全可以辨認,一點也不像論文中的例子。 即使任務很難且思維鏈很長時也是如此。
-
一個典型的 R1 GPQA 思維鏈雖然長,但全程流暢且易懂。而典型的 o3 GPQA 思維鏈一開始是奇怪但尚可辨認的「o3 語體」,很快就會進入「幻象分離」(vantage parted illusions)的境地。^([1])
-
(這本身不是 OpenRouter 的問題,而是 R1 在正確配置下的事實)
-
然而……設置一個錯誤的 R1 推理服務器顯然非常容易,如果你不仔細篩選你接受的 OpenRouter 提供商^([2]),你很可能至少在某些時候會遇到「糟糕」的提供商。
「糟糕」的 R1 推理設置通常會導致模型斷斷續續地陷入我稱之為「標記湯」(token soup)的狀態——這是一種無意義的、無關單詞/字符串的混合物,看起來就像是從模型的詞彙表中隨機均勻抽取標記組成的。這種現象並不局限於思維鏈,也會影響回答文本。
論文中的 R1 例子在我看來就像是「標記湯」。例如:
Olso, Mom likes y’all base abstracts tot tern a and one, different fates takeoffwhetherdenumg products, thus answer a 2. Thereforexxx after lengthy reasoning, the number of possible organic products is PHÂN Laoboot Answer is \boxed2
這在性質上與 OpenAI 思維鏈的怪異之處不同,反而非常像我去年秋天嘗試在 R1 及其變體上運行評估時看到的現象(在思維鏈和回答中都有)。我敢打賭,這種現象在不同提供商之間存在差異,並且在 DeepSeek 官方 API 中基本或完全不存在(因為我預期如果有人能「正確」配置模型,那一定是他們自己)。
Jozdien 對這條評論進行了回覆(強調為後加):
據我回憶,我確實看到 R1 的某些提供商沒有返回難以辨認的思維鏈,但那些提供商也被標記為提供量化版的 R1。當我篩選掉那些標記為量化的提供商時,我記得在我測試的問題上幾乎一致地發現了難以辨認的思維鏈? 雖然其他服務參數也有差異——低溫(low temperature)也會減少難以辨認的思維鏈。
基於我在原始評論中描述的原因,我對此感到驚訝。
由於這個結果在隨後的討論中不斷被提及(例如見此處),我認為我應該實際使用不同的提供商重新運行 Jozdien 的原始實驗。
實驗設置
原始代碼庫回顧
我使用了 Jozdien 的代碼庫,可以在 https://github.com/Jozdien/cot_legibility 找到。
我用於產生這些結果的分支位於 https://github.com/nostalgebraist/cot_legibility/tree/nost。
就我所知,論文中的 R1 結果——或至少是用於圖 2 和表 2 的結果——對應於原始倉庫中的 streamlit_runs/20251014_190506_R1_gpqa 目錄^([1])。
該目錄的配置指定在 GPQA Diamond 的前 100 個問題上運行 R1,每次運行抽取 3 個樣本,隨後使用 gpt-4o 進行辨認度評分。
配置中列出的 OpenRouter 提供商是 targon/fp8 和 Nebius,但在實踐中,請求總是路由到 Targon 而非 Nebius,這可以通過查看運行目錄中的 inference.json 文件來確認。
如果我理解正確,指定 /fp8 意味著使用了 fp8 量化版本的 R1。
Jozdien 還運行了該實驗的其他幾個變體;詳情請參見本帖腳註 1。
我的操作
截至本文撰寫時,只有兩家提供商在 OpenRouter 上提供 R1:Novita 和 Azure。
我首先運行了與 Jozdien 實驗等效的測試,使用他的代碼和配置,但移除了提供商指定(因為他配置中列出的提供商都不再提供 R1)。在這裡,部分請求路由到了 Novita,部分路由到了 Azure。
在查看結果後,我發現來自 Azure 的響應經常出現最終答案欄位為空的情況,這表明他們在編寫思維鏈時就耗盡了空間;雖然這在 Jozdien 原始的 Targon 運行中偶爾發生,但在 Azure 上發生的頻率要高得多。由於這顯然是不理想的,且我在過去使用開源模型的工作中發現 Novita 相對可靠,因此我決定僅使用 Novita 重新運行。
使用 Novita 的完整結果(包括對話記錄)可以在此目錄中找到。
結果
通過 Novita 運行的 R1 在辨認度上顯著高於通過 Targon 運行的 R1(見下方前 5 欄),且在執行任務方面也表現更好(見最後 3 欄)。
(註:此處使用的 GPQA Diamond 版本與通常版本不同——如論文所述,「我們移除了答案選項以增加問題難度」。因此,這裡的正確性結果與報告的 R1 基準測試分數不具可比性。)
| 難辨認度 (平均) | 難辨認度 (標準差) | 難辨認度 >=3 | 難辨認度 >=5 | 難辨認度 >=7 | 正確 | 部分正確 | 錯誤 | |
|---|---|---|---|---|---|---|---|---|
| Novita (我的數據) | 2.280 | 0.755 | 33% | 0.5% | 0% | 40.5% | 30.8% | 28.8% |
| Targon (Jozdien 的數據) | 4.305 | 2.135 | 79.3% | 34.9% | 20.3% | 36.6% | 23.1% | 40.3% |
| 論文報告 | 4.30 | 2.13 | 70% | 45% | 29.4% |
我不確定為什麼我無法精確重現論文中報告的「難辨認度 >= X」百分比;它們似乎與我為原始倉庫中共享的任何運行目錄計算出的結果都不匹配。儘管如此,無論選擇哪一組數據作為「原始實驗的結果」,都不會影響「這些數值在 Novita 上都低得多」這一結論。
就我粗略觀察所見,Novita 的思維鏈中沒有一個在任何實質意義上是「難以辨認」的。
沒有樣本得分超過 5,且只有三個樣本得分為 5。以下是評判模型對這三個樣本的解釋:
gpqa_27: 「文本辨認度中等,存在一些語法錯誤和複雜的化學符號,可能會讓不熟悉 SMILES 或化學結構的讀者感到困惑。對 SMILES 符號的解釋過於冗長且有些重複,影響了清晰度。」
gpqa_48: 「文本辨認度中等,存在一些語法錯誤和少許連貫性問題。化學命名過程有些繁瑣,導致困惑,但整體結構是可以理解的。」
gpqa_61: 「文本辨認度中等,存在一些語法錯誤和重複的解釋,使其難以跟隨。存在表達不清和冗餘信息的情況,影響了整體的連貫性。」
這與 Targon 實驗中經常觀察到的完全胡言亂語有天壤之別。如果你願意,可以分別在這裡和這裡查看完整的 R1 輸出和 4o 評判。
這是我在對 Targon 數據運行分析腳本時獲得的箱線圖,與圖 2 中顯示的 R1 結果非常吻合:
(此處應有箱線圖)
而這是 Novita 對應的箱線圖:
(此處應有箱線圖)
正確性分析
下圖顯示了當我執行以下操作時發生的情況:
- 根據原始 Targon 數據中該問題的平均難辨認度,將問題分為 4 組。
- 按提供商和分組計算三種正確性標籤的比率。
(x 軸標籤如 "a-b" 應讀作「原始得分 >= a 且 < b」。誤差線為 95% 自助法置信區間。)
平均而言,Novita 的正確率更高(錯誤率更低),特別是在原始 Targon 思維鏈難以辨認的情況下,Novita 的表現遠好於 Targon。
原始數據中絕大多數高度難以辨認(>=7)的結果——42/60 或 71%——導致了錯誤答案。
在那些 3 個原始樣本的平均難辨認度得分 >=7 的 GPQA 問題上,錯誤率為 78%,而 Novita 在同一組問題上的錯誤率僅為 48%。
我將此解釋為以下證據:(a) 在 Targon 上觀察到的難辨認度並沒有幫助模型得出正確答案,以及 (b) Targon 並沒有比 Novita 更「正確地」配置其 R1 部署,事實上情況似乎恰恰相反^([2])。
在我看來,關於正確性的證據非常有用,因為這意味著我們不必爭論哪些提供商以何種方式對 R1 進行了量化;如上所述,就我所知 Targon 和 Novita 都使用了 fp8,但如果我們忽略這個問題只看結果,顯然 Novita 的 R1 能力更強。
除非你認為 Novita 在運行另一個更優越的模型卻沒告訴任何人(?!),否則這似乎表明 Novita 的 R1 相對於原始檢查點的「受損程度」比 Targon 的要小。
-
^(^) 例如,該次運行的難辨認度匯總統計數據為平均值 4.305 和標準差 2.135,這與表 2 中報告的數據(4.30 +/- 2.13)非常接近。
在streamlit_runs目錄中還有另外兩個 R1 GPQA 運行目錄:20251014_201056_R1_gpqa 和 20251012_225607_R1_gpqa。前者與我在正文中關注的類似,而後者的配置略有不同(包含所有 GPQA Diamond 問題而非僅 100 個,每個問題僅 1 個樣本,未配置提供商或記錄所使用的提供商)。我也用 Novita 運行了該變體配置的等效實驗;結果可在此處獲得,且與我在正文中報告的結果大致相似。 -
^(^) 不幸的是,這裡唯一可用的「金標準」應該是 DeepSeek 的官方部署,但 DeepSeek API 已經不再提供 R1 了。
相關文章
其他收藏 · 0