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

大模型微调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训练的,所以训练完成后,要把基座模型和检查点的权重进行合并
在这里插入图片描述
导出后
在这里插入图片描述

相关文章:

  • 【大模型基础_毛玉仁】3.2 上下文学习
  • 【redis】什么是持久化之 RDB
  • 基于RAGFlow本地部署DeepSeek-R1大模型与知识库:从配置到应用的全流程解析
  • 批处理脚本基础知识快速掌握
  • mysql与redis的日志策略
  • Leetcode 3 Longest Substring Without Repeating Characters
  • Vue Router工作原理探究
  • Python OCR文本识别详细步骤及代码示例
  • 工业相机选型
  • docker部署canal-server
  • 【原创】使用ElasticSearch存储向量实现大模型RAG
  • Elasticsearch8.17 集群常见问题排查与解决
  • linux:环境变量,进程地址空间
  • DoFoto AI(美颜修图·高质量照片)Ver.1.210.53 高级版.apk
  • 制造业数字化转型之工业级远程控制方案选型指南
  • 万字长文详解|蚂蚁数据湖深度探索与业务应用实践
  • 卫宁健康学习——门诊挂号收费管理系统
  • 英伟达消费级RTX显卡配置表
  • 适合用户快速开发项目的PHP框架有哪些?
  • 【测试报告】抽奖系统
  • 做响应式网站的菜单/朝阳seo排名
  • 分类信息网站建设方案/seo搜索引擎优化心得体会
  • 网站建设标签/免费b2b网站推广渠道
  • pc端手机网站 样式没居中/百度一下 你就知道首页
  • 广告设计与制作培训学校/seo排名技术教程
  • 网站制作难度/seo导航站