Agentic RL 的 Token-In, Token-Out 問題:重新編碼 token 如何讓梯度落在錯誤位置
Hugging Face Blog · 2026-05-30
Hugging Face 發表文章指出多輪 agentic RL 訓練迴圈中一個普遍但隱藏的實作錯誤:TITO 違反(Token-In, Token-Out violation)。錯誤的根源在於開發者在多輪對話中插入工具呼叫結果後,對整段對話歷史重新渲染並重新編碼(re-tokenize),導致反向傳播的梯度落在模型從未實際生成的 token sequence 上,違反 RL 的基本要求——只優化 policy 實際產出的 token。
問題機制
BPE 分詞並非單射(injective):同一段文字解碼後再重新編碼,有機率產生不同的 token ID 序列。訓練迴圈的典型錯誤流程如下:
- 模型生成 token,decode 成文字用於解析工具呼叫
- 追加工具結果到對話歷史
- 對整段對話歷史重新呼叫 apply_chat_template + tokenize
- 以重新編碼的結果計算 loss 並反向傳播
步驟 3 的問題在於重新渲染可能改變先前模型已生成部分的 token ID,訓練信號因此落在 policy 從未採樣的序列上,在數學上不正確。
TITO 解法:delta 追加,永不重編碼
修正原則只有一條:永遠不要對已解碼的 token 重新編碼。做法是保持一個 token buffer,工具結果的 token 透過「delta 計算」取得而非重新渲染整段對話:
# 計算工具結果對應的 token delta
msgs_before = [user, asst_with_tool_call]
msgs_after = [user, asst_with_tool_call, {"role": "tool", "content": "4"}]
prefix = tokenizer.apply_chat_template(msgs_before, tokenize=True)
full = tokenizer.apply_chat_template(msgs_after, tokenize=True)
delta = full[len(prefix):] # 工具結果對應的 token
buffer.extend(delta) # 直接追加,不重編碼此方法要求 chat template 具備 prefix-preserving 性質:追加工具結果必須是原有序列的前綴延伸,而非改變之前的 token。文章提供 12 行 Python 驗證函式,並測試 19 個主流模型:18 個通過(包含 Qwen2.5、Llama 3+、DeepSeek-R1、Gemma 4),僅 Qwen3 base 需要一行 Jinja 修改。
與 renderer 方案的比較
替代方案是為每個模型族系維護獨立的「renderer」物件(如 PrimeIntellect 的 renderers 函式庫),手工硬寫 chat template 邏輯。TITO 方案的優勢是無需每族系維護、適用 95% 的模板、程式碼量更少;renderer 的優勢則是提供統一 API、支援損失遮罩的訊息索引,以及對僅支援 messages API 的廠商模型也有效。兩種方案均可避免靜默的 token 漂移問題。
原始來源:Hugging Face Blog
Borealis:開放原始碼的 5B 音訊語言模型訓練全食譜
Hugging Face Blog · 2026-05-26
研究者 AlexWortega 在 Hugging Face 發布 Borealis,一個支援俄語與英語的 5B 音訊語言模型,並公開完整的訓練資料、程式碼與模型權重(Vikhrmodels/Borealis-5b-it)。有別於傳統 ASR 只輸出逐字稿,Borealis 能對錄音做摘要、問答與情緒分析,並提供可複現的訓練配方供社群延伸。
架構
Borealis 採用業界常見的三段式設計,總訓練參數約 500M:
- Whisper Large V3 encoder(凍結,635M params):提取多語言語音表徵
- 4× 降採樣 + MLP adapter(可訓練,~31M params):將 1,500 個音訊 token 壓縮至 375 個
- Qwen3-4B LLM(LoRA fine-tuned):生成文字回應
訓練資料與關鍵發現
訓練資料跨越 ToneBooks、LibriVox 有聲書、Gemini 2.5 Pro 生成的指令音訊(AudioBooksInstructGemini2.5)、Musan 環境噪音等八個資料集。幾項消融實驗的結論值得關注:
- 原生語言資料優於跨語言混合:俄語原生訓練 WER 為 19.32%,混合英語後反而上升至 24.02%
- 文字資料最佳比例為 10–15%:超過 25% 後性能退化
- 凍結 encoder 是正確選擇:Whisper 的多語言能力完整保留,adapter 只需對齊 LLM 的 embedding 空間
推理效能
原生 Transformers 推理速度為 44.9 tokens/s;搭配作者提供的 vLLM plugin 可提升至 95.9 tokens/s(2.1×)。已知限制包含:不支援串流(offline only)、重度噪音場景(如電話會議)WER 退化至約 60%,以及每次對話僅接受單一音訊輸入。