首页 > 其他分享 >LLaMA-Factory 大模型微调超简单,从零开始开始玩转大模型微调

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

时间:2024-08-01 19:24:07浏览次数:8  
标签:数据 模型 微调 Factory LLaMA data

目录

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

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

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

安装

启动

数据准备

Alpaca 格式

指令监督微调数据集

预训练数据集

开始微调

模型评估

对话测试

模型导出


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

在处理大模型微调的工作中,我们常常会面临各种棘手的问题。比如,传统的微调方法不仅复杂繁琐,还对技术和资源有着很高的要求,让很多人望而却步。然而,LLaMA-Factory 的出现改变了这一局面。

它最大的优势就是让大模型的微调变得轻而易举。不再需要您具备深厚的技术功底和大量的计算资源投入,就能实现对模型的优化和改进。

同时,在模型量化方面,它能够有效地压缩模型的规模,大大减少了模型运行所需的计算量和存储空间。这意味着您可以在性能稍弱的设备上也能流畅地运行模型,使其应用不再受限于高端硬件。

还有很重要的一点,LLaMA-Factory 提供了一站式的服务。从开始的模型微调,到中间的量化处理,再到最后的顺利运行,整个过程一气呵成,无需您在不同的工具和流程之间来回折腾,节省了大量的时间和精力。

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

安装

使用它,比较简单,首先需要到它的github地址:https://github.com/hiyouga/LLaMA-Factory 下载这个项目代码,你可以使用git clone 下载 该代码。

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

下载到本地后进入项目目录,安装相关依赖。

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界面。

a3ef40203d404509b46fe37f027979d5.png

默认开启端口7860,在浏览器中输入地址即可访问。

3f1fce26cb7442c782eeced4b52bed09.png

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

数据准备

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 中的数据集描述应为:

{"自定义数据集名称": {
  "file_name": "data.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "system": "system",
    "history": "history"
  }
}

columns字段里的内容可以省去不写,可以简写为:

"数据集名称": {
  "file_name": "data.json"
}

预训练数据集

在预训练时,只有 text 列中的内容会用于模型学习。

data.json内容如下:

[
  {"text": "document"},
  {"text": "document"}
]

对于上述格式的数据,dataset_info.json 中的数据集描述应为:

"数据集名称": {
  "file_name": "data.json",
  "columns": {
    "prompt": "text"
  }
}

更加详细的数据格式介绍可以到官方文档查看:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.mdicon-default.png?t=N7T8https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md

具体的实际数据格式都在 data 目录下的 dataset_info.json 文件,比如下面的法律方面的数据:

aab6399d0f464fcb953806766fba20aa.png

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

开始微调

当准备好数据之后,剩下的就交给LLaMA-Factory吧,操作起来还是比较简单的。

基本的过程如下:

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

c2aff1cd2bc0413b861f4a6453db15a3.png

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

模型评估

aba1d2d529314ed4a5118876b6feb6fd.png

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

对话测试

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

825d3b739a9f492c8e1149a9c7169e11.png

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

模型导出

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

a3864c2fd88c4f349c1af37b611243e1.png

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

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

标签:数据,模型,微调,Factory,LLaMA,data
From: https://blog.csdn.net/2401_84664550/article/details/140793190

相关文章

  • 时间序列分析——指数平滑和ARIMA模型
    个人学习笔记,课程为数学建模清风付费课程目录一、时间序列分析1.1时间序列数据1.2时间序列的基本概念1.3区分时期和时点时间序列1.4时间序列分解1.4.1长期趋势:T1.4.2季节趋势:S1.4.3循环变动:C1.4.4不规则变动:I1.5叠加模型和乘积模型1.6Spss处理时间序列中的缺失值1......
  • XTuner微调个人小助手认知
    基础任务:使用XTuner微调InternLM2-Chat-1.8B实现自己的小助手认知,如下图所示(图中的伍鲜同志需替换成自己的昵称),记录复现过程并截图。1微调前置基础本节主要重点是带领大家实现个人小助手微调,如果想了解微调相关的基本概念,可以访问XTuner微调前置基础。2准备工作环境......
  • 探索机器学习之美:使用Scikit-learn进行模型可视化
    探索机器学习之美:使用Scikit-learn进行模型可视化在机器学习的世界里,模型的可视化是一个强大的工具,它可以帮助我们更好地理解模型的行为和决策过程。Scikit-learn,作为Python中最受欢迎的机器学习库之一,提供了多种方法来进行模型的可视化。本文将详细介绍如何使用Scikit-lea......
  • ThinkPHP6支持金仓数据库(Kingbase)解决无法使用模型查询问题
    参考了很多前人的文章,最后只支持Db::query原生查询,不支持thinkphp数据模型方法,这在实际项目中是很难接受的,特分享出解决方案。先按照流程配置如下:1.准备工作首先确认PHP支持金仓数据库的扩展,可以去金仓官网下载,安装配置(详细配置略过……)。使用php-m命令检查,显示有pdo_kdb......
  • GPU训Llama 3.1疯狂崩溃,竟有大厂用CPU服务器跑千亿参数大模型?
    马斯克19天建成由10万块H100串联的世界最大超算,已全力投入Grok3的训练中。与此同时,外媒爆料称,OpenAI和微软联手打造的下一个超算集群,将由10万块GB200组成。在这场AI争霸赛中,各大科技公司们卯足劲加大对GPU的投资,似乎在暗示着拥有更多、更强大的GPU,就能让自己立于不败之......
  • 揭开因果图模型的神秘面纱:常用的因果图模型
    目录写在开头1.常见的因果图模型对比2.因果图模型介绍2.1.单向因果关系模型(SimpleCausalModel)2.2.多重因果关系模型(MultipleCausalModel)2.3.中介模型(MediationModel)2.4.调节模型(ModerationModel)2.5.交互效应模型(InteractionModel)2.6.反馈模型(FeedbackModel......
  • 因果图模型:理解因果关系的强大工具
    目录1.引言2.基本概念因果关系vs相关性节点和边的定义有向无环图(DAG)的特点3.因果图模型的组成部分节点(Variables)边(Edges)无环性(Acyclicity)组合起来的因果图模型4.因果图模型的建立如何识别变量及其关系例子:吸烟与肺癌模型验证与调整5.因果推理因果推理的定义和......
  • Java并发—Java内存模型以及线程安全
    目录 一、Java内存模型JMM的核心概念二、什么是线程安全? 1、原子性2、有序性3、可见性三、如何确保线程安全?1、sychronized关键字2、Lock接口和其实现3、volatile关键字4、Atomic原子类5、ThreadLocal6、不可变对象7、并发集合类8、并发工具类9、Future和Ca......
  • vue+通义大模型的聊天项目
    智能聊天chat_ali_server.py为服务端,需要配置自己的阿里API_KEY,URL阿里云配置方式剩下的是客户端修改src/store/index.js中serverhost变量的值npminpmrundev应该就可以了如需定制开发,联系:18841685054Github......
  • 遥感数据与作物生长模型同化及在作物长势监测与估产技术教程
    原文链接:遥感数据与作物生长模型同化及在作物长势监测与估产技术教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247610916&idx=6&sn=450eff7ab4f0d4f31d1f61bd751297b0&chksm=fa8273c3cdf5fad5f40311549fef1d6fa16547ca6cb4e2eddd79b2d10dc2812982b90c0dcdff&to......