当前位置:AIGC资讯 > AIGC > 正文

使用LLaMA-Factory快速训练自己的专用大模型

本文聊聊 LLama-Factory,它是一个开源框架,这里头可以找到一系列预制的组件和模板,让你不用从零开始,就能训练出自己的语言模型(微调)。不管是聊天机器人,还是文章生成器,甚至是问答系统,都能搞定。而且,LLama-Factory 还支持多种框架和数据集,这意味着你可以根据项目需求灵活选择,把精力集中在真正重要的事情上——创造价值。

使用LLama-Factory,常见的就是训练LoRA模型,增强模型在某方面的生成能力。本教程将以增强 GLM-4-9B-Chat 模型的脑筋急转弯能力为例,演示LoRA模型的微调方法。

环境准备

本地使用

LLama-Factory 的安装比较简单,大家直接看官网页面就够了:

github.com/hiyouga/LLa…

云镜像

如果你本地没有一张好显卡,也不想费劲的安装,就想马上开始训练。

可以试试我的云镜像,开箱即用:www.haoee.com/application…

平台注册就送一定额度,可以完成本教程的的演示示例。

镜像已经内置了几个基础模型,大都在6B-9B,单卡24G显存即可完成LoRA微调。

如果要微调更大的模型,则需要更多的显卡和显存,请在购买GPU时选择合适的显卡和数量。

已经内置的模型:Yi-1.5-9B-Chat、Qwen2-7B、meta-llama-3.1-8b-instruct、glm-4-9b-chat、chatglm3-6b

如果缺少你需要的模型,可以给我反馈。

假设你已经解决了程序运行环境问题,下边将开始讲解 LLama-Factory 的使用方法。

LLama-Factory 直接命令行和Web页面训练,为了方便入门,这篇文章以Web页面训练为例。

选择基础模型

语言:zh,因为我们要微调的是中文模型。

模型选择:GLM-4-9B-Chat

模型路径:/root/LLaMA-Factory/models/glm-4-9b-chat,默认会自动下载模型,不过速度可能比较慢,我们的镜像中已经下载好这个模型,所以直接填写路径更快。

微调方法:lora

准备训练数据集

LLaMA-Factory自带了一些常用的数据集,如果你使用的数据集不在里边,可以修改 data/dataset_info.json,在其中增加自己的数据集。

这里我使用的是一个弱智吧问答数据集,数据集的格式是 alpaca,来源:huggingface.co/datasets/Lo…

训练参数设置

训练参数需要根据实际训练效果进行调整,这里给出一个参考设置。

数据集:请根据你的需要选择,这里选择我上边定义的 ruozhiba_qa。

学习率:1e-4,设置的大点,有利于模型拟合。

计算类型:如果显卡较旧,建议计算类型选择fp16;如果显卡比较新,建议选择bf16。

梯度累计:2,有利于模型拟合。

LoRA+学习率比例:16,相比LoRA,LoRA+续写效果更好。

LoRA作用模块:all , 表示将LoRA层挂载到模型的所有线性层上,提高拟合效果。

开始训练

点击“开始”按钮,可以在页面上看到训练进度和训练效果。

根据训练方法和训练数据的大小,训练需要的时间不定。

推理测试

在“检查点路径”这里加载刚刚训练的LoRA模型,然后切换到“Chat”页签,点击“加载模型”。

测试完毕后,记得点击“卸载模型”,因为模型占用显存比较大,不释放的话,再进行别的任务可能会出错。

对比训练前后的变化:

训练前:

训练后:

这是一个比较感性的测试,如果需要更为正式的效果评估,请使用“Evaluate & Predict” 选择合适的评测数据集进行评估。

合并导出模型

有时候我们需要把模型导出来放在别的地方使用,输出一个完整的模型文件,而不是基础模型+LoRA模型。

检查点路径:训练出来的LoRA模型

导出目录:设置一个服务器上的路径,新的模型会存放到这里。

最后点击“开始导出”就行了。导出完毕后,请前往服务器相关的路径中下载模型。

LLaMA-Factory 架构

最后送大家一张 LLaMA-Factory 的架构图,方便理解其原理。

图片左侧:显示了 LLaMA-Factory 的架构,分为四个主要部分:LlamaBoard、Trainer、Model Loader 和 Data Worker。

LlamaBoard:用于参数配置和训练状态监视。 Trainer:负责优化和训练方法的选择,如 LoRA+、GaLoRe、Pre-train、SFT 等。 Model Loader:负责模型初始化、补丁、量化和适配器等功能。 Data Worker:负责加载、对齐、预处理和合并训练数据。

图片右侧:列出了支持的流行语言模型和大小,以及支持的训练方法。

支持的语言模型和大小:LLaMA、LLaMA-2、LLaMA-3、Command-R、Mistral/Mixtral、OLMo、Phi-1.5/2、Qwen、DeepSeek (MoE)、Falcon、Gemma/CodeGemma 和 StarCoder2。 支持的训练方法:全量调整、冻结调整、LoRA、QLoRA、奖励建模、PPO 训练、DPO 训练、ORPO 训练。

总体上来说,LLama-Factory 的使用还是挺顺利的,没有太多的坑。

作者:萤火架构
链接:https://juejin.cn/post/7409974426371047439

总结

# LLama-Factory 开源框架总结
## 概述
LLama-Factory 是一个为训练语言模型(微调)而设计的开源框架,提供预制组件和模板,简化了从零开始训练语言模型(如聊天机器人、文章生成器和问答系统)的过程。该框架支持多种框架和数据集,方便用户根据项目需求选择。
## 特点
- **预制组件和模板**:提供丰富的预制资源和模板,降低开发门槛。
- **灵活的框架和数据集支持**:可根据项目需求灵活选择最适合的框架和数据集。
- **多种训练方法**:支持LoRA、LoRA+、GaLoRe、Pre-train、SFT等多种训练方法。
- **用户界面友好**:提供Web界面及命令行两种操作方式,方便用户选择适合自己的操作方式。
## 使用场景
- **模型微调**:用于增强现有语言模型在特定任务或领域的性能,如增强GLM-4-9B-Chat的脑筋急转弯能力。
- **定制化开发**:根据项目需求定制化开发语言模型,如定制聊天机器人、文章生成器和问答系统等。
## 环境准备
### 本地安装
直接访问[GitHub页面](https://github.com/hiyouga/LLaMA-Factory)查看安装指南。
### 云镜像
对于缺乏高性能显卡或希望快速开展项目的用户,可以在[haoee平台](www.haoee.com/application/…)使用云镜像。该镜像内置多个模型,便于快速启动LoRA微调。
## 使用步骤
### 第一步:选择基础模型
在Web界面中选择GLM-4-9B-Chat作为基础模型,并指定模型路径(如已下载好模型)。
### 第二步:准备训练数据集
根据需要准备或选择数据集,并修改数据集配置文件(data/dataset_info.json)。
### 第三步:设置训练参数
调整学习率、计算类型、梯度累计等参数以适应自己的训练需求。
### 第四步:开始训练
在Web界面点击“开始”按钮,开始训练过程。训练进度和效果将在页面上实时显示。
###第五步:推理测试
加载训练好的LoRA模型进行推理测试,评估训练效果。
### 第六步:合并导出模型
如有需要将模型导出到其他环境中使用,可进行模型合并导出操作。
## LLaMA-Factory 架构
LLama-Factory的架构分为四个主要部分:
- **LlamaBoard**:用于参数配置和训练状态监视。
- **Trainer**:负责优化和训练方法的选择。
- **Model Loader**:负责模型初始化、补丁、量化和适配器等功能。
- **Data Worker**:负责加载、对齐、预处理和合并训练数据。
## 支持的模型与训练方法
支持众多流行的语言模型和大小,以及多种训练方法,包括但不限于LoRA、LoRA+、冻结调整和QLoRA等。
## 总结
LLama-Factory 是一个功能强大、易用性高的语言模型训练框架。通过丰富的预制资源和灵活的框架支持,用户可以轻松实现语言模型的定制化开发和微调。通过详细的步骤介绍和友好的用户界面,收获了广泛的好评和应用。

更新时间 2024-09-21