LLamaFactory微调效果与vllm部署效果不一致如何解决
LLamaFactory 大模型微调框架
官网:https://llamafactory.readthedocs.io
对应当下大模型微调训练比较热门的框架,详细信息可以到官网进行了解。
本篇文章主要来记录 我在使用 LLamaFactory 框架进行数据微调后,使用vllm 或者 LMDeploy 进行发布是遇到的问题进行详细说明。
熟悉 LLamaFactory 框架的都知道, LLamaFactory对大模型进行微调训练时比较好的点就是我们在 使用
llamafactory-cli webui
启动后会有可视化网页 进行微调参数配置。
这是我这使用Qwen2.5-0.5b 模型进行训练配置页面;我们在选择模型名称后会要选择对话模板。
训练模型配置对话模板
对话模板: 这里的模型对话模板时LLamaFactory 框架根据qwen 模型进行定义的 对话模板, LLamaFactory 真的不同的模型定义了不同的对话模板, 这里点很重要, 这关乎了我们在发布模板时能够正确的进行输入对话。
不同的大模型都对应的定义了自己的对话模板。并且不同的版本也有不同:
如图上:LLamaFactory 的对话模板 选择就有很多种,就算是qwen 都有很多不同的对话模板。所有我们在进行模型训练的时候特别要注意选择好对应模型对应的对话模板。这里的不同处接下来在详情介绍。
我在使用 LLamaFactory 对模型训练后使用 LLamaFactory 的chat 进行测试时发现训练效果没问题, 能够很好的回答出数据提供的问题,但是在我对模型进行合并后,使用Vllm 或者使用LMDeploy 进行发布后, 在进行问答测试发现回答问题不对。
问题分析
引起这种情况的原因有两情况:
1、模型本身的训练没有达到要求;
2、模型对话模板不正确;
训练商品评价查看 情感分析效果
这是我是 Qwen2.5-0.5b 基础模型进行训练,商品评价数据进行情感分析训练,想使用Qwen2.5-0.5b 测试看能否达到情感分析效果:
数据处理
我自己组装的数据:
训练完成进行效果测试
训练完成在 LLamaFactory 进行测试,效果
测试效果看着还不错。
训练完成导出模型:
接下来将训练模型进行导出:
导出模型成功,导出的模型进行测试
导出模型成功, 在对导出的模型进行测试:
导出模型的测试效果:
看效果还是没问题,与没有导出效果一样。
使用vllm 对导出的模型发布测试:
vllm安装:
操作系统:Linux
Python: 3.9 – 3.12
接下来安装vllm 进行发布测试;
安装Vllm 过程就不在这篇文档中来说明了:可以到官网查看
https://docs.vllm.com.cn/en/latest/getting_started/quickstart.html
使用 vllm 启动模型(这里我启动的是转换为GGUF 格式的模型)
vllm serve /root/project/Qwen/Qwen2.5-0.5B-Instruct-merge-F16.gguf
vllm 启动服务后监听的端口为8000
这里我使用openai 访问接口进行对话测试:
#多轮对话
from openai import OpenAI#定义多轮对话方法
def run_chat_session():#初始化客户端client = OpenAI(base_url="http://localhost:8000/v1/",api_key="olla