LLaMA-Factory 大模型微调超简朴,从零开始玩转大模型微调 ...

光之使者  金牌会员 | 2024-8-30 16:06:24 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 533|帖子 533|积分 1599

目次
LLaMA-Factory 大模型微调超简朴,从零开始开始玩转大模型微调
为什么要使用LLaMA-Factory进行微调?
如何使用LLaMA-Factory进行微调?
安装
启动
数据准备
Alpaca 格式
指令监督微调数据集
预训练数据集
开始微调
模型评估
对话测试
模型导出


为什么要使用LLaMA-Factory进行微调?

在处理大模型微调的工作中,我们经常会面对各种棘手的标题。比如,传统的微调方法不仅复杂繁琐,还对技术和资源有着很高的要求,让很多人望而却步。然而,LLaMA-Factory 的出现改变了这一局面。
它最大的上风就是让大模型的微调变得十拿九稳。不再需要您具备深厚的技术功底和大量的盘算资源投入,就能实现对模型的优化和改进。
同时,在模型量化方面,它可以或许有效地压缩模型的规模,大大减少了模型运行所需的盘算量和存储空间。这意味着您可以在性能稍弱的装备上也能流畅地运行模型,使其应用不再受限于高端硬件。
还有很重要的一点,LLaMA-Factory 提供了一站式的服务。从开始的模型微调,到中间的量化处理,再到最后的顺遂运行,整个过程趁热打铁,无需您在差别的工具和流程之间往返折腾,节省了大量的时间和精神。

如何使用LLaMA-Factory进行微调?

安装

使用它,比力简朴,起首需要到它的github地点:https://github.com/hiyouga/LLaMA-Factory 下载这个项目代码,你可以使用git clone 下载 该代码。
  1. git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
复制代码
下载到本地后进入项目目次,安装相关依赖。
  1. pip install -e .[metrics]
复制代码
  注:-e表示以可编辑(editable)模式安装当前目次下的项目。这意味着安装后,你对项目源代码的修改会直接反映在已安装的版本中,无需重新安装。点(.)表示当前目次,即要安装当前目次下的项目。
  假如安装完成后,可以通过如下命令查抄是否安装乐成
   llamafactory-cli version
  假如安装乐成,会返回类似如下内容:
   ----------------------------------------------------------
| Welcome to LLaMA Factory, version 0.8.3.dev0           |
|                                                        |
| Project page: https://github.com/hiyouga/LLaMA-Factory |
----------------------------------------------------------
  
启动

安装完成之后,可以启动检察它的WebUI界面,在界面上更加方便我们微调模型。
   llamafactory-cli webui
  命令执行之后,出现如下响应代表乐成启动了webui界面。

默认开启端口7860,在欣赏器中输入地点即可访问。


这里有很多的参数,不过大多数参数并不需要改动,使用默认的即可。其他的参数用到时再说。

数据准备

LLaMA-Factory提供了很多内置的数据可供微调,在界面的数据集选择框中可以选择,不过我们微调肯定是盼望使用自己准备的数据,下面就说下如何准备自己的数据。
现在LLaMA-Factory 只支持两种格式的数据集,alpaca 格式和 sharegpt 格式。我们只需要按照格式准备数据,然后将数据文件放入到 LLaMA-Factory项目的 data  目次下,然后在 dataset_info.json中 填写 你自定义的数据集名称 你的数据集文件名称 即可。

Alpaca 格式

需要留意的是,该格式数据集包括 指令监督微调数据集预训练数据集、偏好数据集、KTO 数据集和多模态数据集等差别范例的格式。
指令监督微调数据集

在指令监督微调时,instruction 列对应的内容会与 input 列对应的内容拼接后作为人类指令,即人类指令为 instruction\ninput。而 output 列对应的内容为模型回复。
假如指定,system 列对应的内容将被作为系统提示词。
history 列是由多个字符串二元组构成的列表,分别代表汗青消息中每轮对话的指令和回复。留意在指令监督微调时,汗青消息中的回复内容也会被用于模型学习
例如 data.json的内容如下:
   [
  {
    "instruction": "人类指令(必填)",
    "input": "人类输入(选填)",
    "output": "模型回复(必填)",
    "system": "系统提示词(选填)",
    "history": [
      ["第一轮指令(选填)", "第一轮回复(选填)"],
      ["第二轮指令(选填)", "第二轮回复(选填)"]
    ]
  }
]
  
对于上述格式的数据,dataset_info.json 中的数据集形貌应为:
  
  1. {"自定义数据集名称": {
  2.   "file_name": "data.json",
  3.   "columns": {
  4.     "prompt": "instruction",
  5.     "query": "input",
  6.     "response": "output",
  7.     "system": "system",
  8.     "history": "history"
  9.   }
  10. }
复制代码
columns字段里的内容可以省去不写,可以简写为:
   "数据集名称": {
  "file_name": "data.json"
}
  
预训练数据集



  • 样例数据集
在预训练时,只有 text 列中的内容会用于模型学习。
data.json内容如下:
  
  1. [
  2.   {"text": "document"},
  3.   {"text": "document"}
  4. ]
复制代码
对于上述格式的数据,dataset_info.json 中的数据集形貌应为:
  
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "columns": {
  4.     "prompt": "text"
  5.   }
  6. }
复制代码
更加详细的数据格式先容可以到官方文档检察:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md
https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md
                          
具体的实际数据格式都在 data 目次下的 dataset_info.json 文件,比如下面的法律方面的数据:



在微调模型的过程中,最贫苦的莫过于准备数据了,因为训练或微调需要的数据只能是特定格式的数据,你不大概把混乱的、自己都看不懂的数据交给模型去训练。那如何将混乱的原始数据转为特定格式的数据,是模型微调前要准备的。

开始微调

当准备好数据之后,剩下的就交给LLaMA-Factory吧,操作起来照旧比力简朴的。
根本的过程如下:

  • 启动WebUI界面,启动命令 :llamafactory-cli webui
  • 选择根本模型
  • 选择一个或多个你准备好的数据集
  • 选择微调方法,默认是lora,还可以选择full(全量微调)、freeze (冻结微调)。
  • 设置训练参数,比如学习率、训练轮数、批处理大小、
  • 点击开始按钮,开始进行微调,在右边会出现模型的丧失曲线图。当下面显示训练完毕时,就训练完成了。
  • 微调效果的lora权重参数在输出目次下可以看到,设置路径也被保存起来了。
  • 训练过程中,你可以选择中断训练,然后在查抄点输入 之前 lora权重的目次,就可以在之前的训练效果上接着训练了。


假如你不想通过界面微调的话,可以点击预览命令,那么会显示微调的命令,你拷贝这个命令就可以在命令行执行。

模型评估




模型评估完成后会在界面上显示评估数据集的分数。其中,ROUGE分数衡量了模型输出答案评估集中的尺度答案的相似度,ROUGE分数越高代表模型学习得越好。

对话测试

在Web UI的 界面 Chat页签下,通过使用你之前微调效果的输出的查抄点路径,加载微调后的模型进行对话测试。先点击加载模型,然后就可以在下面的文本框中输入文本了。

假如你想看没有微调的效果是如何的,取消查抄点路径中选中的路径即可。

模型导出

在Web UI的 界面 Export 页签下,填写你要保存的输出地点,然后点击开始导出即可。


因为我这边模型的量化是通过其他方式实现的,比如Ollama,有关模型导出后,如何量化、部署、运行的,请关注我哦,后续会出相关的文章讲解~~

关于我:
资深程序员,曾在北京某AI公司从事智能对话问答平台研发,也曾在大厂历练过,对AI场景应用充满热情。

点赞+收藏+关注,后续持续分享Java、AI相关的文章,多谢支持




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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表