当前位置: 首页 > article >正文

大模型微调02-使用LLaMA-Factory进行lora微调

环境配置

本次使用的是windows11,Python为3.11,训练数据和model使用HuggingFace
1、安装基础环境

#安装包
pip install datasets transformers torch

2、安装LLaMA-Factory

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

构建数据集

1、生成数据文件
数据使用一个医疗诊断数据medical-o1-reasoning-SFT,先把数据转换为LLaMA-Factory支持的Alpaca数据格式,并划分数据集,4060显卡只有8G,这里取2000个样本训练,200个样本验证。

from datasets import load_dataset
import json, os

dataset = load_dataset('FreedomIntelligence/medical-o1-reasoning-SFT', 'zh')
dataset = {"train": dataset['train'][:2000], 'val': dataset['train'][-200:]}
root = r'D:\LeStoreDownload\LLaMA-Factory-0.9.2\LLaMA-Factory-0.9.2\data'
for key in ['train', 'val']:
    list_r = []
    for q, r in zip(dataset[key]["Question"], dataset[key]["Response"]):
        list_r.append({"instruction": "你是一个经验丰富的医生", "input": q, "output": r})
    fpath = os.path.join(root, f'medical_{key}_zh.json')
    json.dump(list_r, open(fpath, 'w', encoding='utf-8'), ensure_ascii=False, indent=3)

运行上面代码后,会在LLaMA-Factory-0.9.2/data下生成medical_train_zh.json和medical_val_zh.json
在这里插入图片描述
train的内容内容如下
在这里插入图片描述
2、注册数据文件
编辑LLaMA-Factory-0.9.2/data/dataset_info.json文件,添加之前生成的2个json文件
在这里插入图片描述

启动UI界面

在LLaMA-Factory的安装目录下运行如下目录,方便后面选择数据集,比如我的目录为D:\LeStoreDownload\LLaMA-Factory-0.9.2\LLaMA-Factory-0.9.2

llamafactory-cli webui

加载模型

这里使用千问的0.5B进行训练,点击加载模型后,会自动下载模型
在这里插入图片描述

加载数据

选择我们对应的数据文件,这里只选择train文件
在这里插入图片描述

模型训练

大多参数使用默认即可,我这里把学习率设置为2e-4,训练8个epoch,如下是开始训练的过程
在这里插入图片描述

模型评估

首先使用验证集medical_val_zh.json测试下基座模型的效果
在这里插入图片描述
评测结果如下,在2000个样本上训练了8个epoch,还是有提升效果的。人工评测可以查看输出的generated_predictions.jsonl文件,有具体的模型输出内容和label

{
    "predict_bleu-4": 16.561837,
    "predict_model_preparation_time": 0.003,
    "predict_rouge-1": 35.744373,
    "predict_rouge-2": 14.5082895,
    "predict_rouge-l": 22.9553675,
    "predict_runtime": 773.3625,
    "predict_samples_per_second": 0.259,
    "predict_steps_per_second": 0.129
}

然后添加上对应的检查点路径(lora训练权重)
在这里插入图片描述
重新进行预测

{
    "predict_bleu-4": 22.958406,
    "predict_model_preparation_time": 0.0038,
    "predict_rouge-1": 43.19669,
    "predict_rouge-2": 18.544107,
    "predict_rouge-l": 30.117725499999995,
    "predict_runtime": 643.3882,
    "predict_samples_per_second": 0.311,
    "predict_steps_per_second": 0.155
}

模型合并

因为我们是基于lora训练的,所以训练完成后,要把基座模型和检查点的权重进行合并
在这里插入图片描述
导出后
在这里插入图片描述


http://www.kler.cn/a/593081.html

相关文章:

  • JVM(Java虚拟机)的核心组成
  • 使用vite新建vue3项目 以及elementui的使用 vite组件问题
  • Maven生命周期
  • AI共生·安全共赢,开启智能新时代
  • QQuick3D-Model的实例化
  • Python OCR文本识别详细步骤及代码示例
  • 【算法学习之路】10.二叉树
  • 【大语言模型_7】利用ragas框架评测rag系统指标
  • git基础概念和操作
  • Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测
  • node-ddk,electron 组件, 系统基上下文菜单(右键菜单)
  • 在麒麟系统(基于Ubuntu或Debuntu)的离线环境中创建本地APT仓库
  • Certd自动化申请和部署SSL证书并配置https
  • MySQL(事物下)
  • C#通过SignalR直接返回流式响应内容
  • git创建一个本地仓库与远程仓库关联并推送文件到远程仓库
  • 十八、实战开发 uni-app x 项目(仿京东)- 后端生成API文档
  • 再探C语言(1)
  • 4.1-4 SadTalker数字人 语音和嘴唇对应的方案
  • 【Go语言圣经2.6】