9、LLaMA-Factory项目微调介绍

打印 上一主题 下一主题

主题 971|帖子 971|积分 2913

1、LLaMA Factory 介绍

  LLaMA Factory是一个在GitHub上开源的项目,该项目给自身的定位是:提供一个易于使用的大语言模型(LLM)微调框架,支持LLaMA、Baichuan、Qwen、ChatGLM等架构的大模型。更细致的看,该项目提供了从预练习、指令微调到RLHF阶段的开源微调解决方案。截止目前(2024年3月1日)支持约120+种不同的模型和内置了60+的数据集,同时封装出了非常高效和易用的开发者使用方法。而其中最让人喜欢的是其开发的LLaMA Board,这是一个零代码、可视化的一站式网页微调界面,它答应我们通过Web UI轻松设置各种微调过程中的超参数,且整个练习过程的实时进度都会在Web UI中进行同步更新。
  简单明白,通过该项目我们只需下载相应的模型,并根据项目要求准备符合标准的微调数据集,即可快速开始微调过程,而这样的操作可以有效地将特定领域的知识注入到通用模型中,增强模型对特定知识领域的明白和认知能力,以达到“通用模型到垂直模型的快速变化”。
  LLaMA Factory的GitHub地点如下:https://github.com/hiyouga/LLaMA-Factory/tree/main
  LLaMA-Factory目前支持微调的模型及对应的参数量:
模型名模型大小TemplateBaichuan 27B/13Bbaichuan2BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-ChatGLM36Bchatglm3Command R35B/104BcohereDeepSeek (Code/MoE)7B/16B/67B/236BdeepseekFalcon7B/11B/40B/180BfalconGemma/Gemma 2/CodeGemma2B/7B/9B/27BgemmaGLM-49Bglm4InternLM2/InternLM2.57B/20Bintern2Llama7B/13B/33B/65B-Llama 27B/13B/70Bllama2Llama 3/Llama 3.18B/70Bllama3LLaVA-1.57B/13BvicunaMiniCPM1B/2BcpmMistral/Mixtral7B/8x7B/8x22BmistralOLMo1B/7B-PaliGemma3BgemmaPhi-1.5/Phi-21.3B/2.7B-Phi-34B/7B/14BphiQwen/Qwen1.5/Qwen2 (Code/Math/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110BqwenStarCoder 23B/7B/15B-XVERSE7B/13B/65BxverseYi/Yi-1.56B/9B/34ByiYi-VL6B/34Byi_vlYuan 22B/51B/102Byuan   可以看到,当前主流的开源大模型,包括ChatGLM3、Qwen的第一代以及最新的2版本,还有Biachuan2等,已经完全支持不同规模的参数量。针对LLaMA架构的系列模型,该项目已经基本实现了全面的适配。而其支持的练习方法,也主要围绕(增量)预练习、指令监督微调、奖励模型练习、PPO 练习和 DPO 练习展开,具体情况如下:
方法全参数练习部分参数练习LoRAQLoRA预练习(Pre-Training)✅✅✅✅指令监督微调(Supervised Fine-Tuning)✅✅✅✅奖励模型练习(Reward Modeling)✅✅✅✅PPO 练习(PPO Training)✅✅✅✅DPO 练习(DPO Training)✅✅✅✅   最后且最关键的一点需特别指出:固然LLaMA-Factory项目答应我们在120余种大模型中机动选择并快速开启微调工作,但运行特定参数量的模型是否可行,仍然取决于本地硬件资源是否富足。因此,在选择模型进行实践前,大家必须细致参照下表,团结本身的服务器配置来决定,以避免因硬件资源不敷导致的内存溢出等标题。不同模型参数在不同练习方法下的显存占用情况如下:
练习方法精度7B13B30B65B全参数16160GB320GB600GB1200GB部分参数1620GB40GB120GB240GBLoRA1616GB32GB80GB160GBQLoRA810GB16GB40GB80GBQLoRA46GB12GB24GB48GB 关于微调治论我们会在背面专门写文章解释
2、LLaMA-Factory私有化部署

  作为GitHub上的开源项目,LLaMA-Factory的本地私有化部署过程与我们之前介绍的大模型部署大要相同,主要包括创建Python虚拟环境、下载项目文件及安装所需的依赖包。这一过程相对直观。但在开始部署之前,我们需要先相识LLaMA-Factory私有化部署对本地软硬件环境的具体要求:


  • Python >= 3.8版本,发起Python3.10版本以上
  • PyTorch >= 1.13.1版本,发起 Pytorch 版本为 2.2.1
  • transformers >= 4.37.2,发起 transformers 版本为 4.38.1
  • CUDA >= 11.6,发起CUDA版本为12.2
2.1 创建虚拟环境

创建LLaMA-Factory的Python虚拟环境
  1. conda create  --name llama_factory python==3.11
复制代码

  如上所示,新创建了一个名为LLaMA-Factory的Python虚拟环境,其Python版本为3.11。创建完成后,通过如下下令进入该虚拟环境,实行后续的操作:
  1. conda activate llama_factory
复制代码

2.2 安装Pytorch

  发起先本身根据CUDA版本要求安装Pytorch,如果按照llama_factory官网安装默认是支持CPU的版本,地点:https://pytorch.org/get-started/previous-versions/**
  这里根据本身电脑显卡驱动的CUDA版本要求,在Pytorch官网中找到适合本身的Pytorch安装下令。
  1.     conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
复制代码
  待安装完成后,如果想要查抄是否成功安装了GPU版本的PyTorch,可以通过几个简单的步骤在Python环境中进行验证:
  1.     import torch
  2.     print(torch.cuda.is_available())
复制代码

  如果输出是 True,则表示GPU版本的PyTorch已经安装成功而且可以使用CUDA,如果输出是False,则表明没有安装GPU版本的PyTorch,大概CUDA环境没有正确配置,此时根据教程,重新查抄本身的实行过程。
2.3 下载LLaMA-Factory项目文件

  进入LLaMA-Factory的官方Github,地点:https://github.com/hiyouga/LLaMA-Factory , 在 GitHub 上将项目文件下载到有两种方式:克隆 (Clone) 和 下载 ZIP 压缩包。推荐使用克隆 (Clone)的方式。我们首先在GitHub上找到其堆栈的URL。
   
    实行克隆下令,将LLaMA-Factory Github上的项目文件下载至本地的当前路径下,如下:
  1.     git clone https://github.com/hiyouga/LLaMA-Factory.git
复制代码

如果网络不通大概其他原因无法下载,就下载zip文件解压到本地目次,大概上传到服务器。
  发起在实行项目标依赖安装之前升级 pip 的版本,如果使用的是旧版本的 pip,大概无法安装一些最新的包,大概大概无法正确解析依赖关系。升级 pip 很简单,只需要运行下令如下下令:
  1. python -m pip install --upgrade pip
复制代码
2.4 安装LLaMA-Factory项目代码运行的项目依赖

  在LLaMA-Factory中提供的 requirements.txt文件包含了项目运行所必须的全部 Python 包及其正确版本号。使用pip一次性安装全部必须的依赖,实行下令如下:
  1. cd LLaMA-Factory
  2. pip install -e ".[torch,metrics]"
复制代码

  如果不具备科学上网环境,还想通过在线的方式下载大模型,可以将模型下载源指向国内的ModelScope社区。这需要先制止当前的LLaMA-Board的背景服务,具体操作如下:
  1.     # Linux操作系统, 如果是 Windows 使用 `set USE_MODELSCOPE_HUB=1`
  2.     export USE_MODELSCOPE_HUB=1
  3.     CUDA_VISIBLE_DEVICES=0 llamafactory-cli webui
复制代码
  通过上述步骤就已经完成了LLaMA-Factory模型的完备私有化部署过程。接下来,我们将详细介绍如何借助LLaMA-Factory项目实行ChaGLM3、Qwen和Baichuan2系列模型的微调和使用。
2.5 chat

先选择一个简单的模型进行测试,我们选择Qwen2-0.5B-Chat

可以在界面进行简单的对话

2.6 微调

选择数据集,留意我们启动下令时一定要在LLaMA-Factory目次下,不然数据会加载失败。选择预置的数据,支持预览查看,需要特定的数据格式,如果是自定义数据也需要按照这种格式来进行配置。

界面展示

练习过程

显存占用

显存全部占满
  经过LoRA微调天生的Adapter权重和其相对应的配置文件,其存放在服务器下
  1. /root/LLaMA-Factory-main/saves/Qwen2-0.5B-Chat/lora/train_2024-08-28-15-12-01
复制代码

2.7 使用微调模型

  对于LoRA微调,练习结束后如果想使用其微调后的模型,在LLaMA Board上也可以非常方便的加载,具体使用的过程如下:


  通过上述步骤,我们可以完备地实现微调流程,且整个过程均可通过页面端完成,整体用户体验非常良好。大家也可以根据上述的流程,实验对ChatGLM3-6B和Biachuan2系列模型进行LoRA或QLoRA微调,大概其他支持的系列模型。
2.8 归并导出

当然,除了分步加载微调后得到的Adapter 和 原始模型,在LLaMA Board上还可以一键进行模型权重的归并,具体操作如下:

导出后可以在主目次中查看


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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表