偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾

發(fā)布于 2025-11-3 07:24
瀏覽
0收藏

在最近Thinking Machines的新文章(見文末)里指出一種很有用的模型壓縮技術(shù)——在線策略蒸餾(On-Policy Distillation),它通過從高性能“教師”模型的概率分布中轉(zhuǎn)移知識來訓(xùn)練一個小的“學(xué)生”模型。這使得學(xué)生能夠模仿教師的任務(wù)性能,同時顯著減少大小和延遲。它讓小模型在特定領(lǐng)域達(dá)到大模型的表現(xiàn),成本卻只有傳統(tǒng)方法的十分之一。

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

但這里有一個知識蒸餾一直存在的痛點:老師和學(xué)生必須用同一套分詞器。這意味著你不能讓 Llama 向 Qwen 學(xué)習(xí),也不能讓 Gemma 向其他模型取經(jīng)。這就好比一個說中文的老師,只能教懂中文的學(xué)生。

Hugging Face 的研究團隊剛剛解決了這個問題。他們提出的 GOLD(General On-Policy Logit Distillation)方法,讓任意兩個模型之間(即使它們來自完全不同的模型家族)都能進(jìn)行在線知識蒸餾,不管它們用的是什么分詞器。

技術(shù)核心

出現(xiàn)這一問題的根源在于不對齊,比如:同一句話"Hugging Face is awesome!",在不同分詞器下會變成完全不同的 token 序列:

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

Tokenizer A:[3, 1, 2] Tokenizer B:[2, 3, 1, 0] 這種不匹配造成兩個核心問題:序列長度不同,token ID 也不對應(yīng)。之前的方法,如ULD(Universal Logit Distillation)只能簡單截斷到最短長度,丟失信息還容易錯位。

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

GOLD 通過三步解決跨分詞器蒸餾:

  1. 增量解碼:同時解碼教師和學(xué)生模型的 token,獲取各自的概率分布
  2. 文本對齊:將相同可見文本的片段分組,識別需要合并的 token 位置
  3. 概率合并:在每組內(nèi)合并相關(guān)概率,通過對數(shù)概率求和保持語義完整性

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

具體來說:

  • 序列對齊:不再簡單截斷到最短長度,而是識別需要合并的 token,通過對數(shù)概率求和來合并語義相關(guān)的片段。這樣"Hugging"和" Face"可以合并成一個完整的概念。
  • 詞匯對齊:先找出兩個分詞器中相同的 token(即使 ID 不同),對這些 token 使用直接映射;對無法匹配的部分,才回退到 ULD 的排序方法。最終損失函數(shù)結(jié)合兩部分:L_GOLD = w1 * L_GKD + w2 * L_ULD

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

這樣即使 token 邊界不同,也能保證在完整輸出上計算損失函數(shù)。

實驗效果

數(shù)學(xué)任務(wù)跨家族蒸餾:用 Qwen 教師模型指導(dǎo) LLaMA 學(xué)生模型,在數(shù)學(xué)任務(wù)上表現(xiàn)良好,甚至超過了 GRPO 方法。

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

個性化(領(lǐng)域)蒸餾:先用 SFT 提升模型的代碼能力,然后用蒸餾恢復(fù) IFEval 分?jǐn)?shù)。這驗證了前面提到的"專業(yè)能力與通用能力平衡"問題的解決方案。

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

同時需要指出的是,分詞器相似度確實影響效果,但仍然強于強化學(xué)習(xí)。Llama-3.2-1B 與 Qwen3-4B 的相似度 0.64,最終成績 0.42;Gemma-3-1b 相似度只有 0.063,表現(xiàn)相應(yīng)較差。

Hugging Face 推出 GOLD:讓不同模型家族也能做知識蒸餾-AI.x社區(qū)

使用方法

GOLD 已經(jīng)集成到 TRL 庫中,使用相當(dāng)簡單:

from trl.experimental.gold import GOLDConfig, GOLDTrainer

trainer = GOLDTrainer(
    model="meta-llama/Llama-3.2-1B-Instruct",
    teacher_model="Qwen/Qwen2.5-0.5B-Instruct",
    args=GOLDConfig(
        output_dir="gold-model", 
        use_uld_loss=True, 
        teacher_tokenizer_name_or_path="Qwen/Qwen2.5-0.5B-Instruct"
    ),
    train_dataset=train_dataset,
)
trainer.train()

更多:https://huggingface.co/docs/trl/main/en/gold_trainer

想要在自己的場景嘗試在線策略知識蒸餾,官方給出了如下是利用A??ccelerate訓(xùn)練的????(Accelerate是什么?可以閱讀此書:)??配置用例:

  • SFT配置:

accelerate launch \
  --config_file examples/accelerate_configs/multi_gpu.yaml trl/scripts/sft.py \
  --model_name_or_path Qwen/Qwen3-4B-Instruct-2507 \
  --dtype auto \
  --attn_implementation kernels-community/flash-attn \
  --dataset_name open-r1/codeforces-cots \
  --dataset_config solutions_decontaminated \
  --bf16 \
  --gradient_checkpointing \
  --per_device_train_batch_size 1 \
  --gradient_accumulation_steps 32 \
  --learning_rate 1e-5 \
  --num_train_epochs 1 \
  --max_length 16384 \
  --logging_steps 1 \
  --report_to trackio \
  --trackio_project Qwen3-4B-SFT-Codeforces \
  --output_dir data/Qwen3-4B-SFT-Codeforces \
  --push_to_hub \
  --hub_model_id <your-username>/Qwen3-4B-SFT-Codeforces \
  --seed 42 \
  --warmup_ratio 0.05 \
  --lr_scheduler_type cosine_with_min_lr \
  --use_liger_kernel
  • 蒸餾配置:

accelerate launch \
  --config_file examples/accelerate_configs/multi_gpu.yaml trl/experimental/gold/gold.py \
  --model_name_or_path <sft-model> \
  --dtype auto \
  --attn_implementation kernels-community/flash-attn \
  --dataset_name allenai/tulu-3-sft-mixture \
  --dataset_train_split train \
  --bf16 \
  --learning_rate 1e-7 \
  --gradient_checkpointing \
  --per_device_train_batch_size 1 \
  --gradient_accumulation_steps 64 \
  --num_train_epochs 1 \
  --eval_strategy steps \
  --eval_steps 100 \
  --temperature 1.0 \
  --top_p 0.95 \
  --top_k 0 \
  --max_new_tokens 2048 \
  --max_prompt_length 512 \
  --lmbda 0.25 \
  --beta 0.0 \
  --use_uld_loss \
  --use_extended_uld \
  --uld_use_hybrid_loss \
  --uld_crossentropy_weight 0.0 \
  --uld_distillation_weight 1.0 \
  --uld_student_temperature 1.0 \
  --uld_teacher_temperature 1.0 \
  --uld_hybrid_unmatched_weight 1.0 \
  --uld_hybrid_matched_weight 1.0 \
  --teacher_model_name_or_path Qwen/Qwen3-4B-Instruct-2507 \
  --logging_steps 1 \
  --push_to_hub \
  --hub_model_id <your-username>/Qwen3-4B-GKD-Tulu \
  --report_to trackio \
  --trackio_project Qwen3-4B-GKD-Tulu \
  --seed 42 \
  --warmup_ratio 0.05 \
  --lr_scheduler_type cosine_with_min_lr

小結(jié)

這一突破非常有實用價值。以前你只能在同一家族內(nèi)做知識蒸餾,現(xiàn)在可以跨家族進(jìn)行。在線策略蒸餾對于需要在資源受限環(huán)境下部署高性能模型的場景特別有用,可以用最好的模型作為教師,采各家所長,訓(xùn)練出適合自己場景的模型。

On-Policy Distillation:https://thinkingmachines.ai/blog/on-policy-distillation/

本文轉(zhuǎn)載自??AI工程化??,作者:ully

已于2025-11-3 07:24:13修改
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦