
使用 LlamaFactory 结合开源大语言模型实现文本分类:从数据集构建到 LoRA 微调与推理评估
背景介绍
本文将一步一步地,介绍如何使用llamafactory框架利用开源大语言模型完成文本分类的实验,以 LoRA微调qwen/Qwen2.5-7B-Instruct为例。
文本分类数据集
按照 alpaca 样式构建数据集,并在将其添加到LLaMA-Factory/data/dataset_info.json文件中。如此方便直接根据自定义数据集的名字,获取到数据集的数据。
Lora 微调
llamafactory 框架支持网页端训练,但本文选择在终端使用命令行微调模型。
模型微调训练的参数较多,将模型训练的参数都存储在 yaml 文件中。
qwen_train_cls.yaml的文件内容如下:
使用下述命令启动模型训练:
模型部署与推理
模型训练完成后得到 Lora 权重。相关微调模型部署与推理,请浏览下述两篇文章,相比llamafactory原本的模型推理速度更快。
- 基于 LLamafactory 的异步API高效调用实现与速度对比.https://blog.csdn.net/sjxgghg/article/details/144176645
- 基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现
目前llamafactory已经支持 vllm_infer 推理,这个PR是笔者提交的:
- llamafactory vllm.https://github.com/hiyouga/LLaMA-Factory/blob/main/scripts/vllm_infer.py
期待模型的输出结果
下述是使用 llamafactory 推理出的数据格式,建议大家在做推理评估时,也做成这个样式,方便统一评估。
prompt 是大模型提示词,predict 是大模型推理的结果,与真实的 label。
文本分类评估代码
本文使用了大模型生成式预测文本类别,我没有使用结构化输出的方式,大家可以使用结构化的json格式输出,这样在提取大模型预测结果的时候会方便很多。
大家按照自己模型的输出结果,修改parser_label函数,这个函数用于从大模型的输出结果提取label。
就会得到下述的输出结果:
-1代表模型预测的类别不在给定的类别中。
赞
收藏
回复

回复
相关推荐