链载Ai

标题: 使用 LLaMA Factory 进行大语言模型微调 [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: 使用 LLaMA Factory 进行大语言模型微调



LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为环境配置而放弃了。今天我们来介绍一个可以帮助大家快速进行 LLM 微调的工具——LLaMA Factory,它可以帮助大家快速进行 LLM 微调,而且还可以在微调过程中进行可视化,非常方便。

什么是 LLM 微调

LLM 微调,也叫做 Fine-tuning,是深度学习领域中常见的一种技术,用于将预先训练好的模型适配到特定的任务或数据集上。这个过程包括几个主要步骤:

这种方法的优势在于,通过微调可以快速并且以较低的计算成本将模型适配到特定任务,而不需要从头开始训练模型。同时,由于预训练模型已经学到了很多通用的语言知识,微调通常能够获得不错的性能。

前沿的微调策略

目前 LLM 微调的最佳实践是采用 LoRA 或 QLoRA 策略进行 LLM 微调。

LLaMA Factory 介绍

LLaMA Factory[1]是一个 LLM 微调工具,支持预训练(Pre-Training)、指令监督微调(Supervised Fine-Tuning)、奖励模型训练(Reward Modeling)等训练方式,每种方式都支持 LoRA 和 QLoRA 微调策略。它的前身是ChatGLM-Efficient-Turning[2],是基于 ChatGLM 模型做的一个微调工具,后面慢慢支持了更多的 LLM 模型,包括 BaiChuan,QWen,LLaMA 等,于是便诞生了 LLaMA Factory。

它的特点是支持的模型范围较广(主要包含大部分中文开源 LLM),集成业界前沿的微调方法,提供了微调过程中需要用到的常用数据集,最重要的一点是它提供了一个 WebUI 页面,让非开发人员也可以很方便地进行微调工作。

部署安装

LLaMA Factory 的部署安装非常简单,只需要按照官方仓库中的步骤执行即可,执行命令如下:

# 克隆仓库
git clone https://github.com/hiyouga/LLaMA-Factory.git
# 创建虚拟环境
conda create -n llama_factory python=3.10
# 激活虚拟环境
conda activate llama_factory
# 安装依赖
cd LLaMA-Factory
pip install -r requirements.txt

接下来是下载 LLM,可以选择自己常用的 LLM,包括 ChatGLM,BaiChuan,QWen,LLaMA 等,这里我们下载 BaiChuan 模型进行演示:

# 方法一:开启 git lfs 后直接 git clone 仓库
git lfs install
git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat

# 方法二:先下载仓库基本信息,不下载大文件,然后再通过 huggingface 上的文件链接下载大文件
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat
cd Baichuan2-13B-Chat
wget "https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat/resolve/main/pytorch_model-00001-of-00003.bin"
...

方法一的方式会将仓库中的 git 记录一并下载,导致下载下来的文件比较大,建议是采用方法二的方式,速度更快整体文件更小。

注意点:

开始微调

启动 LLaMA Factory 的 WebUI 页面,执行命令如下:

CUDA_VISIBLE_DEVICES=0 python src/train_web.py

启动后的界面如下:



界面分上下两部分,上半部分是模型训练的基本配置,有如下参数:

下半部分是一个页签窗口,分为TrainEvaluateChatExport四个页签,微调先看Train界面,有如下参数:



参数设置完后点击预览命令按钮可以查看本次微调的命令,确认无误后点击开始按钮就开始微调了,因为数据量比较少,大概几分钟微调就完成了(具体时间还要视机器配置而定,笔者使用的是 A40 48G GPU),在界面的右下方还可以看到微调过程中损失函数曲线,损失函数的值越低,模型的预测效果通常越好。



模型试用

微调完成后,进入Chat页签对微调模型进行试用。首先点击页面上的刷新断点按钮,然后选择我们最近微调的断点名称,再点击加载模型按钮,等待加载完成后就可以进行对话了,输入微调数据集中的问题,然后来看看微调后的 LLM 的回答吧。



模型导出

如果觉得微调的模型没有问题,就可以将模型导出并正式使用了,点击Export页签,在导出目录中输入导出的文件夹地址。一般模型文件会比较大,右边的最大分块大小参数用来将模型文件按照大小进行切分,默认是10GB,比如模型文件有 15G,那么切分后就变成 2 个文件,1 个 10G,1 个 5G。设置完成后点击开始导出按钮即可,等导出完成后,就可以在对应目录下看到导出的模型文件了。



微调后的模型使用方法和原来的模型一样,可以参考我之前的文章来进行部署和使用——《使用 FastChat 部署 LLM》。

总结

LLaMA Factory 是一个强大的 LLM 微调工具,今天我们只是简单地介绍了一下它的使用方法,真正的微调过程中还有很多工作要做,包括数据集的准备,微调的多个阶段,微调后的评估等,笔者也是刚接触微调领域,文中有不对的地方希望大家在评论区指出,一起学习讨论。

关注我,一起学习各种人工智能和 AIGC 新技术,欢迎交流,如果你有什么想问想说的,欢迎在评论区留言。

参考:

[1]

 LLaMA Factory: https://github.com/hiyouga/LLaMA-Factory

[2]

 ChatGLM-Efficient-Turning: https://github.com/hiyouga/ChatGLM-Efficient-Tuning

[3]

 AutoDL: https://www.autodl.com/home







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5