在AI智能体(Agent)应用中,我们经常通过提问引导AI调用相应工具完成任务。实际测试中发现,使用Qwen3-0.6B模型时,其响应效果往往不尽如人意;而切换至Qwen3-1.7B模型后,回答准确性显著提升。这自然引出一个问题:能否通过模型蒸馏技术,让性能更强的1.7B模型指导0.6B小模型提升表现?
模型蒸馏(Knowledge Distillation)是一种典型的迁移学习技术,其核心思想是通过预训练的”教师模型”(Teacher Model)来指导”学生模型”(Student Model)的训练过程。在本实践中:
- 教师模型:表现优异的Qwen3-1.7B
- 学生模型:待优化的Qwen3-0.6B
该技术通过软标签(Soft Targets)、注意力迁移等机制,将大模型的知识”蒸馏”到小模型中,使小模型能在参数量较少的情况下获得接近大模型的表现。
使用的是的问答,模型使用部署的和,选了10个样本数据。
回答如下:
回答如下:
智能体使用的,下面是提示词模板(的):
1.数据准备:
下面是读取文本的500问题执行回答,写入文件中:
通过GPT给如上代码,根据工具生成500个问题测试数据文本,内容如下(前20个):
2.抓取提示词和Ollama回答:
我们要微调就需要问题和回答,我们调用的是本地Ollama地址是:http://localhost:11434 ,通过简单的端口转发就可以拿到数据,将11435转发到11434,代码如下:
跑1.7B模型500条,得到1580条,我下面只打印一条出来:
3.开始微调:
微调使用官方的例子,文档:Qwen3/examples/llama-factory/finetune-zh.md at main · QwenLM/Qwen3
要求的数据格式是:
通pyhton将之前的的jsonl的{“Q”:”问题”,”A”:”回答”}转换成上面格式:
数据准备好,这里使用腾讯云的Cloud Studio(免费的T4环境) Cloud Studio
首先在Cloud Studio创建Tensorflow2.9.0模板
上面的环境过时了,需要创建一个新的环境,更新Tensorflow
按照官方使用进行LoRA微调,先安装
安装好后文件末尾追加内容如下:
把准备好的数据集上传到当前位置
在创建一个微调配置文件,如下:
开始微调
查看GPU
微调完之后需要合并,不然用dapter+模型推理会很消耗资源,创建
开始合并模型,合并文件会大很多
qwen3-sft-lora-merged 压缩成zip ,方便下载
3.模型注册到Ollama中:
需要通过ollama运行,但是ollama不能直接运行生成好的模型,不支持qwen3新的格式,需要转成GGUF格式
通过llama.cpp转换GGUF
再进行量化
创建一个Modelfile文件,内容如下:
模型创建到ollama中。
4.运行测试:
代码就运行python代码,取前10条数据,模型更换成。
测试数据内容如下:
通过蒸馏方式,可以让小的模型能接近大模型的表现,像DeepSeek-R1-Distill Models通过其他模型训练出来。
Base Model
Download DeepSeek-R1-Distill-Qwen-1.5B Qwen2.5-Math-1.5B 🤗 HuggingFace DeepSeek-R1-Distill-Qwen-7B Qwen2.5-Math-7B 🤗 HuggingFace DeepSeek-R1-Distill-Llama-8B Llama-3.1-8B 🤗 HuggingFace DeepSeek-R1-Distill-Qwen-14B Qwen2.5-14B 🤗 HuggingFace DeepSeek-R1-Distill-Qwen-32BAgent 智能体 Qwen2.5-32B 🤗 HuggingFace DeepSeek-R1-Distill-Llama-70B Llama-3.3-70B-Instruct 🤗 HuggingFace
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/242587.html原文链接:https://javaforall.net
