12 大模子学习——LLaMA-Factory微调

打印 上一主题 下一主题

主题 1648|帖子 1648|积分 4944

一、LLaMA-Factory说明

LLaMA-Factory 是一个低代码的大规模语言模子(LLM)训练框架,它集合了大模子各种好用的开源工具,简化了大模子的微调、评估和部署过程,降低了利用难度。
llama-factory的中文readme地址:LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory · GitHub
教程:LLaMA Factory



二、LLaMA-Factory 安装与利用

0、FinalShell毗连服务器,便于文件管理


1、克隆 LLaMA-Factory 项目,并上传服务器

  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. # 如果觉得太慢,可以先官方下载
  3. git clone https://gitclone.com/github.com/hiyouga/LLaMA-Factory.git
复制代码
一般可以去官网 https://github.com/hiyouga/LLaMA-Factory.git 上下载好之后解压
(1)文件上传服务器并解压
终端:
切换模子地点目次:cd /root/lanyun-tmp
解压模子: unzip /root/lanyun-tmp/LLaMA-Factory-main.zip


2、安装 LLaMA-Factory 焦点包

终端
需要先进入解压后的 LLaMA-Factory 目次
  1. cd /root/lanyun-tmp/LLaMA-Factory-main
复制代码
安装焦点包
  1. pip install -e .
复制代码
3、进入 LLaMA-Factory WEBUI 界面

voscode毗连服务器,打开解压后的llamafactory


终端输入
  1. # 使用此命令开启 LLaMA-Factory 服务,同样需先进入 LLaMA-Factory 目录
  2. cd /root/lanyun-tmp/LLaMA-Factory-main
  3. llamafactory-cli webui
复制代码
乐成运行后会出现以下信息,毗连浏览器打开便是 LLaMA-Factory 的界面


利用viscode终端进入,可直接进入界面


三、常用参数说明



1、语言

英语欠好选中文 zh 即可


  • en:英语
  • ru:俄语
  • zh:中文
  • ko:韩语
  • ja:日文
2、模子名称和模子路径



  • 模子名称:待训练的模子名称,由于每个大模子能够担当的提示词模板都是固定的,修改此参数【对话模版】参数也会自动匹配。
  • 模子路径:支持huggingface在线路径,大概本地的模子路径(注意是绝对路径,.config文件上一层)
一般先下载好模子,用本地模子路径
3、微调方法和检查点路径

(1)微调方法

LLaMA-Factory 提供了三种微调方法


  • full:全量微调,就是全部权重都举行训练。
  • freeze:冻结微调,只训练部分层,其它层的权重举行冻结,也就是不举行训练。
  • lora:如今众多微调方法中,最常用,也是相对来说效果比较好的微调方法之一。有雷同需要的计算资源少,计算服从高,不改变原始模子结构等等的优点。

(2)检查点路径

检查点路径在长时间训练大模子的时候会常常用,主要作用是把训练过程中的阶段性结果举行保存,这里是设置指定的保存地址的。这样如果训练过程意外中断,可以从检查点开始继承训练,不用从头再开始训练。若不设置,则默认保存在 LLaMA-Factory 的 /saves文件中
微调前可以加载模子 进入chat模子,看模子能否正常加载。


四、预备数据集

具体可以看 LlamaFactory 的说明文档: 数据处理 - LLaMA Factory
LLaMA-Factory 如今只支持Alpaca 和 ShareGPT 两种数据格式,分别适用于指令监督微调和多轮对话任务。
dataset_info.json 包含了全部可用的数据集。如果您盼望利用自定义数据集,请务必在 ataset_info.json 文件中添加数据集形貌,并通过修改 dataset: 数据集名称 配置来利用数据集。
Alpaca 格式:Alpaca 格式由斯坦福大学的研究职员提出,主要用于单轮指令微调任务。针对不同任务,数据集的格式要求不同。
应用场景:
- 适用于单轮任务,如问答、文本天生、择要、翻译等。
- 结构轻便,任务导向清楚,适合低成本的指令微调。
属于Alpaca 情势的 指令监督微调数据集,焦点有4个键,分别对应着微调的四个指令:


  • instruction(必填):明确的任务指令,模子需要根据该指令天生输出。
  • input(可选):与任务相干的背景信息或上下文。在 RAG任务中,input参数可以用于提供检索到的外部知识或上下文信息,资助模子天生更正确的回答
  • output(必填):模子需要天生的精确回答。
  • system(可选):系统提示词,用于定义任务的上下文。
  • history(可选):历史对话记载,用于多轮对话任务。用于控制多轮对话,指上下文信息,若无历史对话,则为[]。注:如果有多轮对话,那么history 这个list是有先后顺序的。list[0]为第一轮,list[1]为第二轮,依次向后排序,而 instruction 是存放最新一轮对话信息示例


1、LlamaFactory 的数据集配置分为两步:

(1)预备数据

将训练数据存放至.json文件中,然后将训练数据的json文件上传至LLaMA-Factory 的 ./data目次下


  • 这里利用的数据集是直接从魔塔上下载的中文医疗对话数据集




  • train_0001_of_0001.json放入 LLaMA-Factory 文件夹中的 data 文件夹下
如果数据集分别了训练集和测试集,则将此中的 alpaca_train_dataset.json 和 alpaca_test_dataset.json 都放入 LLaMA-Factory 文件夹中的 data 文件夹下
(2)注册数据

配置 ./data 中 的 data_info.json 文件,把训练数据路径(文件名)增补进入即可。名称可以自由命名


  • 在 data 文件夹中的 data_info.json 中增补新添的数据集文件


(3)在 webui 页面中的数据集栏选择调用

这里数据集可以选一个或多个


五、训练相干参数



1、训练方式



  • Supervised Fine-Tuning (监督微调)监督微调是最常见的微调方法,利用标注好的数据对预训练模子举行进一步训练,以顺应特定任务(如分类、问答等)。
  • Reward Modeling(奖励建模)奖励建模是一种用于优化模子输出质量的方法,通常用于强化学习(RL)的上下文中。
  • PPO(Proximal Policy Optimization) PPO 是一种基于强化学习的微调方法,用于优化模子的输出计谋。
  • DPO (Direct Preference Optimization)DPO 是一种基于人类偏好的直接优化方法,用于训练模子以天生更符合人类偏好的输出。
  • Pre-Training(预训练)预训练是指从头开始训练一个大模子,通常利用大量的无监督数据(如文本语料库)。预训练的目标是让模子学习通用的语言知识和模式。


2、训练参数

以上的参数就与平常 LLM 训练时候雷同


  • 学习率:可以不用修改
  • 训练轮次:根据数据集大小调解,可以调的高一些,好比1000,由于可以随时停止
  • 梯度:根据显存情况调解
  • 最大样本数:根据数据集大小和训练需求设置。主要是防止数据量过大导致的内存溢出问题
  • 计算类型:这里支持混合精度训练选择(fp16或 bf16)bf16的效果更佳一些。 bf16对某些架构是不支持的,和硬件有关(GPU的架构)。
  • 截断长度:根据任务需求/数据集配置,通常默认值为 1024
  • 验证集比例


3、其他参数





  • 日志隔断:多久输出日志信息
  • 保存问题:多久保存权重,这里不是按轮次保存
4、LoRA参数



主要是Lora秩的大小、Lora缩放系数
LoRA秩:LoRA秩越大模子越大,默认秩是8

(一)训练train

在参数和数据集配置完成后就可以开始训练了,显存不够的话调一下参数,模子训练好后,会保存至 LLaMA-Factory 的 /saves文件中
方式一:

参数配置完成后,选择预览命令,将命令复制,然后粘贴到一个新建的yaml文件,再在终端输入指令运行


  1. llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml # 示例
复制代码
方式二:

参数配置完成后,直接点击开始


训练完后就可以在设置的output_dir下看到如下内容,主要包含3部分

  • adapter开头的就是 LoRA保存的结果了,后续用于模子推理融合
  • training_loss 和trainer_log等记载了训练的过程指标
  • 其他是训练当时各种参数的备份
loss在 正常情况下会随着训练的时间慢慢变小,末了需要降落到1以下的位置才会有一个比较好的效果,可以作为训练效果的一个中心指标。
继承训练

加载检查点路径(适配器),继承训练


(二)模子导出 Export

方式一:

创建导出.yaml文件,终端输入指令运行


  1. llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml # 示例
复制代码
template根据具体模子会用不同的模板,可在webui中检察


方式二:

切换至 Export ,增补检查点路径(checkpoint文件路径、检查点路径),即可导出




(三)模子测试 Evaluate&redict

可以用 Evaluate&redict 这个模块对模子举行测试,这里利用测试集,其他保持不变






(四)模子推理chat

照旧先加载已经合并完成的模子,然后选择 Chat 板块举行模子的推理




知识扩展








免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表