CoolFace
Modelpublic

yifan02/qwen3-0.6b-tool-distill

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes59downloads
Model Card

Qwen3-0.6B · 端侧工具调用蒸馏版

把 Qwen3-8B 教师模型的工具调用(tool/function calling)+ 思维链能力,通过序列级知识蒸馏 + 全量 SFT 蒸馏进 Qwen3-0.6B 学生模型,面向 CPU / 端侧本地部署。场景为端侧智能音频设备控制(7 个自定义工具)。

📦 完整代码 / 数据 / 评测 / 复现:https://github.com/dengdengf/qwen3-tool-distill

结果(自建执行式评测集,227 条,防污染)

指标训练前 base(0.6B)**本模型(蒸馏后)**教师(8B)
工具调用精确匹配(名+参)59.0%94.3%97.8%
工具选择准确率79.4%94.9%98.3%
参数 schema 合规率96.6%99.4%100%
越界请求·正确拒调用98.1%100%100%
  • —训练带来 +35.2pt(59.0→94.3),达教师 96.4% 水平;相较教师体积压缩 13.7×(16.4GB→1.19GB)。

用法

python
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "yifan02/qwen3-0.6b-tool-distill"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype="bfloat16").cuda()

tools = [{"type": "function", "function": {
    "name": "set_volume",
    "description": "设置指定音频设备的音量大小(0-100)。",
    "parameters": {"type": "object", "properties": {
        "device": {"type": "string", "enum": ["living_room","bedroom","kitchen","study","all"]},
        "level":  {"type": "integer", "minimum": 0, "maximum": 100}},
        "required": ["device","level"]}}}]  # 完整 7 个工具见 GitHub 仓库

msgs = [{"role":"system","content":"你是一个智能音频助手,负责控制家里的音频设备。"},
        {"role":"user","content":"把客厅音量调到40"}]
text = tok.apply_chat_template(msgs, tools=tools, add_generation_prompt=True, tokenize=False)
out = model.generate(**tok(text, return_tensors="pt").to("cuda"), max_new_tokens=512)
print(tok.decode(out[0], skip_special_tokens=True))
# -> <think>...</think> <tool_call>{"name":"set_volume","arguments":{"device":"living_room","level":40}}</tool_call>

训练细节

序列级知识蒸馏(教师生成「思维链+工具调用」轨迹,拒绝采样保留 95.7%)+ 全量 SFT;bf16、有效 batch 32、lr 1e-5、3 epoch、maxlen 2048、按 evalloss 选最优 checkpoint。单张 RTX 4090。

局限

评测数据为程序化合成、分布规整;测试集 n=227;多工具(一句两调用)仍落后教师 ~17pt(0.6B 容量上限)。详见 GitHub 仓库。