返回首頁

GitHub Repo

Transformers 確認處理器參數覆寫問題,混用模板參數可能使輸入截斷失效

10 月 20 日的 Transformers 回報顯示,額外傳入模板未使用的參數,可能使明確設定的輸入長度限制失效。專案成員已確認問題,但參數合併優先順序仍在討論,尚無可確認的正式修復版本。

prayitno from Los Angeles, USA · CC BY 2.0 · Image source
zh-Hant

Hugging Face Transformers 於 10 月 20 日出現一項影響多模態前處理的錯誤回報:呼叫 ProcessorMixin.apply_chat_template() 時,若同時提供 processor_kwargs 與模板未引用的額外參數,原本指定的截斷設定可能被覆寫。回報列出的環境包含正式版 5.20.2,以及主分支的 5.21.0.dev0;專案成員 zucchini-nlp 已確認問題成立。問題回報與維護討論

重現程式載入 Qwen2-VL-2B-Instruct 的處理器,將 max_length=5、truncation=True 放進 processor_kwargs,並啟用 tokenization。第一輪輸出長度為 5;第二輪僅多傳入 enable_thinking=False,長度便變成 20。回報指出,該模型模板沒有使用這個參數,程式因此將它歸入處理器參數,取代原有字典,連帶忽略長度與截斷設定。重現程式

這個介面位於模型輸入準備階段。官方文件說明,多模態 Processor 同時負責聊天模板、文字分詞與媒體前處理,結果再交給模型生成;API 也列出 processor_kwargs,並將 truncation 與 max_length 定義為文字處理選項。因此,工程上不能只檢查生成端的輸出上限,還需要驗證前處理後的實際輸入長度。多模態流程文件、Processor API

依此機制推論,跨模型共用模板參數的訓練或推論封裝,可能在切換模型後意外增加輸入長度,影響批次記憶體需求及資料截斷一致性。不過,目前範例只使用文字訊息,尚不能據此判定所有視覺模型或媒體參數均受影響。

維護討論指出,舊式額外參數的相容性,以及兩組參數衝突時的優先順序,都會影響修法。工程師可先針對實際模型比較加入額外模板參數前後的 input_ids 長度,並追蹤後續合併規則與正式版本;現階段不宜把已確認問題解讀為已有修復可部署。修補方向討論

來源

  1. ProcessorMixin.apply_chat_template drops explicit processor_kwargs when an extra kwarg is passed
  2. Processors
  3. Multimodal chat templates