Efficient fine-tuning对于将大型语言模型(LLMs)调整到下游任务中至关重要。然而要在不同模型上实现这些方法需要付出相当大的努力。LLaMA-Factory是一个统一的框架,集成了一套先进的高效训练方法。它允许用户通过内置的Web UI灵活定制100多个LLMs的微调,而无需编写代码。LlamaFactory 是一个封装比较完善的LLM微调工具,它能够帮助用户快速地训练和微调大多数LLM模型。LlamaFactory主要通过Trainer类来实现训练流程,通过设置数据集、模型选型、训练类型、微调超参、模型保存,以及训练状态监控等信息,来开启训练。
llama factory官网: https://github.com/hiyouga/LLaMA-Factory
来自北航和北大的论文“LLAMA-FACTORY: Unified Efficient Fine-Tuning of 100+ Language Models”。
高效的微调对于将大语言模型 (LLM) 适应下游任务至关重要。然而,在不同模型上实施这些方法需要付出不小的努力。LLAMA-FACTORY是一个集成一套高效训练方法的统一框架。它允许用户通过内置的 Web UI LLAMA-BOARD 灵活地自定义 100 多个 LLM 的微调,无需编码。经验验证该框架在语言建模和文本生成任务上的效率和有效性。
开源发布在 GitHub – hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs
LLAMA-FACTORY是一个使 LLM 微调民主化的框架。它通过可扩展的模块统一了各种高效的微调方法,从而能够以最少的资源和高吞吐量对数百个 LLM 进行微调。此外,它还简化了常用的训练方法,包括生成式预训练(Radford,2018)、监督微调 (SFT)(Wei,2022)、人类反馈中强化学习 (RLHF)(Ouyang,2022)和直接偏好优化 (DPO)(Rafailov,2023)。用户可以利用命令行或 Web 界面以最少或无需编码工作量来定制和微调LLM。
LlamaFactory基于PEFT和TRL进行二次封装,从而可以快速开始SFT和RLHF微调。同时,引入GaLore和Unsloth等方案,能降低训练显存占用。
主要功能和特色
LLaMA-Factory 是一个国内北航开源的低代码大模型训练框架,专为大型语言模型(LLMs)的微调而设计。其主要功能特点包括:
高效且低成本:能够高效且低成本地支持对100多个模型进行微调,简化了模型微调的过程。
易于访问和使用:提供了友好的用户界面,用户无需编写代码即可轻松定制和微调LLMs。
丰富的数据集选项:支持多个数据集选项,用户可以选择自带的数据集或自己生成数据集进行微调。
多样化的算法支持:集成了业界最广泛使用的微调方法和优化技术,如LoRA、GaLore、DoRA等。
实时监控和评估:支持集成TensorBoard、VanDB和MLflow等监控工具,便于实时监控训练过程和评估模型性能。
极速推理:提供了基于vLLM的OpenAI风格API、浏览器界面和命令行接口,实现快速推理。
部署安装教程
LLaMA-Factory 的安装相对简单,以下是一般的安装步骤(以conda环境为例):
创建Python环境:
使用conda创建一个新的Python环境,并安装必要的依赖库,如PyTorch等。
克隆LLaMA-Factory项目:
通过Git克隆LLaMA-Factory的源代码到本地。
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
安装依赖:
进入项目目录,安装必要的Python依赖库。
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
启动服务:
在项目目录中运行python src/train_web.py启动服务,然后在浏览器中访问相应的端口(默认可能是7860)以访问训练界面。
支持的算法
LLaMA-Factory 支持多种先进的微调算法和模型,包括但不限于:
多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
先进算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
实用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。
实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。
四、性能指标
与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。
GPU现存消耗:
五、微调例子
以下是一个使用LLaMA-Factory对Yuan2.0模型进行LoRA微调的例子:
准备数据集:
准备自定义的数据集,可以是JSON格式,包含指令、输入和输出等信息。
注册数据集:
在LLaMA-Factory的数据集管理文件中注册自定义的数据集。
启动Web UI服务:
运行python src/train_web.py启动Web UI服务,并在浏览器中打开相应的地址。
配置微调参数:
在Web界面上配置模型路径、微调方法(选择LoRA)、数据集等参数。
开始微调:
点击“开始”按钮开始微调过程,可以在界面中查看训练进度和损失函数等信息。
评估模型:
微调完成后,使用LLaMA-Factory提供的评估工具对模型进行评估,检查模型性能是否有所提升。
通过以上步骤,用户可以利用LLaMA-Factory轻松实现LLMs的微调,提升模型在特定任务上的性能。
更多微调
https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md
1.2 特性
• 各种模型: LLaMA, LLaVA, Mistral, Mixtral-MoE, Qwen, Yi, Gemma, Baichuan, ChatGLM, Phi, etc.
• 集成训练方法: (Continuous) pre-training, (multimodal) supervised fine-tuning, reward modeling, PPO, DPO and ORPO.
• Scalable resources: 32-bit full-tuning, 16-bit freeze-tuning, 16-bit LoRA and 2/4/8-bit QLoRA via AQLM/AWQ/GPTQ/LLM.int8.
• Advanced algorithms: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture-of-Depths, LoRA+, LoftQ and Agent tuning.
• 实用tricks: FlashAttention-2, Unsloth, RoPE scaling, NEFTune and rsLoRA.
• 实验监控:LlamaBoard, TensorBoard, Wandb, MLflow, etc.
• 推理集成: OpenAI-style API, Gradio UI and CLI with vLLM worker.
LlamaFactory支持单机单卡,同时整合了accelerate和deepseed的单机多卡、多机多卡分布式训练。
支持的模型
模型名 模型大小 Template
Baichuan2[1] 7B/13B baichuan2
BLOOM[2] 560M/1.1B/1.7B/3B/7.1B/176B –
BLOOMZ[3] 560M/1.1B/1.7B/3B/7.1B/176B –
ChatGLM3[4] 6B chatglm3
Command-R[5] 35B/104B cohere
DeepSeek (MoE)[6] 7B/16B/67B/236B deepseek
Falcon[7] 7B/11B/40B/180B falcon
Gemma/CodeGemma[8] 2B/7B gemma
GLM4[9] 9B glm4
InternLM2[10] 7B/20B intern2
LLaMA[11] 7B/13B/33B/65B –
LLaMA-2[12] 7B/13B/70B llama2
LLaMA-3[13] 8B/70B llama3
LLaVA-1.5[14] 7B/13B vicuna
Mistral/Mixtral[15] 7B/8x7B/8x22B mistral
OLMo[16] 1B/7B –
PaliGemma[17] 3B gemma
Phi-1.5/2[18] 1.3B/2.7B –
Phi-3[19] 4B/7B/14B phi
Qwen[20] 1.8B/7B/14B/72B qwen
Qwen1.5 (Code/MoE)[21] 0.5B/1.8B/4B/7B/14B/32B/72B/110B qwen
Qwen2 (MoE)[22] 0.5B/1.5B/7B/57B/72B qwen
StarCoder2[23] 3B/7B/15B –
XVERSE[24] 7B/13B/65B xverse
Yi (1/1.5)[25] 6B/9B/34B yi
Yi-VL[26] 6B/34B yi_vl
Yuan[27] 2B/51B/102B yuan
预训练数据集
• Wiki Demo (en)[28]
• RefinedWeb (en)[29]
• RedPajama V2 (en)[30]
• Wikipedia (en)[31]
• Wikipedia (zh)[32]
• Pile (en)[33]
• SkyPile (zh)[34]
• FineWeb (en)[35]
• FineWeb-Edu (en)[36]
• The Stack (en)[37]
• StarCoder (en)[38]
指令微调数据集
• Identity (en&zh)[39]
• Stanford Alpaca (en)[40]
• Stanford Alpaca (zh)[41]
• Alpaca GPT4 (en&zh)[42]
• Glaive Function Calling V2 (en&zh)[43]
• LIMA (en)[44]
• Guanaco Dataset (multilingual)[45]
• BELLE 2M (zh)[46]
• BELLE 1M (zh)[47]
• BELLE 0.5M (zh)[48]
• BELLE Dialogue 0.4M (zh)[49]
• BELLE School Math 0.25M (zh)[50]
• BELLE Multiturn Chat 0.8M (zh)[51]
• UltraChat (en)[52]
• OpenPlatypus (en)[53]
• CodeAlpaca 20k (en)[54]
• Alpaca CoT (multilingual)[55]
• OpenOrca (en)[56]
• SlimOrca (en)[57]
• MathInstruct (en)[58]
• Firefly 1.1M (zh)[59]
• Wiki QA (en)[60]
• Web QA (zh)[61]
• WebNovel (zh)[62]
• Nectar (en)[63]
• deepctrl (en&zh)[64]
• Advertise Generating (zh)[65]
• ShareGPT Hyperfiltered (en)[66]
• ShareGPT4 (en&zh)[67]
• UltraChat 200k (en)[68]
• AgentInstruct (en)[69]
• LMSYS Chat 1M (en)[70]
• Evol Instruct V2 (en)[71]
• Cosmopedia (en)[72]
• STEM (zh)[73]
• Ruozhiba (zh)[74]
• LLaVA mixed (en&zh)[75]
• Open Assistant (de)[76]
• Dolly 15k (de)[77]
• Alpaca GPT4 (de)[78]
• OpenSchnabeltier (de)[79]
• Evol Instruct (de)[80]
• Dolphin (de)[81]
• Booksum (de)[82]
• Airoboros (de)[83]
• Ultrachat (de)[84]
偏好数据集
• DPO mixed (en&zh)[85]
• UltraFeedback (en)[86]
• Orca DPO Pairs (en)[87]
• HH-RLHF (en)[88]
• Nectar (en)[89]
• Orca DPO (de)[90]
• KTO mixed (en)[91]
LLaMA-Factory是基于LLaMA模型(由Meta AI开发的大型语言模型)的一个扩展,旨在提供更灵活的模型训练和微调。本文介绍了一种在Windows环境下使用LLaMA-Factory进行模型训练的一般步骤:
部署教程
一、系统要求
硬件要求:确保你的计算机有足够的CPU和GPU资源。NVIDIA GPU通常需要支持CUDA。
软件要求:安装以下软件:
Python(推荐使用Anaconda环境管理)
Git
CUDA(如果使用NVIDIA GPU)
cuDNN(针对CUDA的深度学习库)
二、安装前的准备
安装Anaconda:
访问Anaconda官网,下载并安装适合Windows系统的Anaconda版本。
安装完成后,打开Anaconda Prompt。
创建新的conda环境:
conda create -n llama-factory python=3.8
conda activate llama-factory
安装Git:
如果还没有安装Git,可以从Git官网下载并安装。
安装CUDA和cuDNN(如果使用NVIDIA GPU):
访问NVIDIA官网下载CUDA Toolkit。
访问NVIDIA cuDNN官网下载对应的cuDNN库。
安装完成后,将CUDA和cuDNN的路径添加到系统环境变量。
三、安装LLaMA-Factory
克隆LLaMA-Factory仓库:
git clone https://github.com/your-username/LLaMA-Factory.git
cd LLaMA-Factory
安装依赖:
pip install -r requirements.txt
使用pip安装所需的Python库。
四、准备数据集
数据集格式:
确保你的数据集格式符合LLaMA-Factory的要求。通常数据集需要是文本文件,每行一个样本。
数据集位置:
将数据集放置在合适的位置,例如data/train.txt。
五、配置训练参数
编辑配置文件:
在LLaMA-Factory目录中找到配置文件模板,例如config_template.yaml。
复制模板并重命名为your_config.yaml。
编辑your_config.yaml,设置数据路径、模型参数、优化器参数等。
六、开始训练模型
启动训练:
python train.py --config your_config.yaml
使用以下命令开始训练模型:
七、监控训练过程
在训练过程中,你可以通过以下方式监控进度:
查看控制台输出。
查看日志文件,通常是train.log。
八、故障排除
如果遇到错误,可以按照以下步骤进行故障排除:
检查错误信息:仔细阅读控制台输出的错误信息。
查看日志文件:日志文件可能包含更详细的错误信息。
搜索解决方案:使用搜索引擎查找错误信息,看是否有其他用户遇到过类似问题。
检查数据集:确保数据集格式正确,没有损坏的文件。
调整资源分配:如果资源不足,尝试减少批量大小或模型大小。
九、注意事项
版本兼容性:确保所有安装的库和工具的版本都是兼容的。
系统权限:在Windows上,某些操作可能需要管理员权限。
备份配置:在开始训练之前,备份你的配置文件。