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

LLaMA-Factory仓基础功能架构及NPU/GPU环境实战演练

LLaMA-Factory

基础篇

LLaMA-Factory简介

LLaMA-Factory是一个开源的大规模语言模型微调框架,设计用于简化大模型的训练过程。它提供了一个统一的平台,支持多种大模型的微调,包括LLaMA、BLOOM、Mistral等,旨在帮助用户快速适应和调整这些模型以适应特定的应用场景。LLaMA-Factory通过提供一套完整的工具和接口,使用户能够轻松地对预训练的模型进行定制化的训练和调整,包括(增量)预训练、指令监督微调、奖励模型训练、PPO训练、DPO训练和ORPO训练
等多种训练方法。此外,它还支持多种精度调整,如32比特全参数微调、16比特冻结微调、16比特LoRA微调和基于AQLM/AWQ/GPTQ/LLM.int8的2/4/8比特QLoRA微调,以及一系列先进算法和实用技巧,如GaLore、DoRA、LongLoRA、LLaMA Pro、LoRA+、LoftQ和Agent微调等。

LLaMA-Factory的特色在于它提供了一个内置的Web UI,使用户能够灵活定制100多个LLMs的微调,几乎不需要编写代码。这个框架不仅简化了大模型微调的过程,使得即使是技术门外汉也能通过学习LLaMA-Factory后,快速训练出自己需要的模型,同时也为想要了解微调大模型技术的技术人员提供了一个快速理解模型微调相关概念的平台。通过LLaMA-Factory,企业可以更好地利用大模型技术,实现真正的大模型应用。此外,LLaMA-Factory还支持通过命令行或Web界面进行操作,进一步降低了使用门槛。

整体架构:

调优框架:

项目特点:

多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、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、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。

支持模型:

模型名 模型大小 Template Baichuan 2 7B/13B baichuan2 BLOOM/BLOOMZ 560M/1.1B/1.7B/3B/7.1B/176B - ChatGLM3 6B chatglm3 Command R 35B/104B cohere DeepSeek (Code/MoE) 7B/16B/67B/236B deepseek Falcon 7B/11B/40B/180B falcon Gemma/Gemma 2/CodeGemma 2B/7B/9B/27B gemma GLM-4 9B glm4 InternLM2/InternLM2.5 7B/20B intern2 Llama 7B/13B/33B/65B - Llama 2 7B/13B/70B llama2 Llama 3/Llama 3.1 8B/70B llama3 LLaVA-1.5 7B/13B llava MiniCPM 1B/2B cpm Mistral/Mixtral 7B/8x7B/8x22B mistral OLMo 1B/7B - PaliGemma 3B paligemma Phi-1.5/Phi-2 1.3B/2.7B - Phi-3 4B/7B/14B phi Qwen/Qwen1.5/Qwen2 (Code/Math/MoE) 0.5B/1.5B/4B/7B/14B/32B/72B/110B qwen Qwen2-VL 2B/7B qwen2_vl StarCoder 2 3B/7B/15B - XVERSE 7B/13B/65B xverse Yi/Yi-1.5 6B/9B/34B yi Yi-VL 6B/34B yi_vl Yuan 2 2B/51B/102B yuan

提供的训练方法:

方法 全参数训练 部分参数训练 LoRA QLoRA 预训练 ✅ ✅ ✅ ✅ 指令监督微调 ✅ ✅ ✅ ✅ 奖励模型训练 ✅ ✅ ✅ ✅ PPO 训练 ✅ ✅ ✅ ✅ DPO 训练 ✅ ✅ ✅ ✅ KTO 训练 ✅ ✅ ✅ ✅ ORPO 训练 ✅ ✅ ✅ ✅ SimPO 训练 ✅ ✅ ✅ ✅

支持的数据集:

预训练数据集:
Wiki Demo (en) RefinedWeb (en) RedPajama V2 (en) Wikipedia (en) Wikipedia (zh) Pile (en) SkyPile (zh) FineWeb (en) FineWeb-Edu (en) The Stack (en) StarCoder (en)
指令微调数据集
Identity (en&zh) Stanford Alpaca (en) Stanford Alpaca (zh) Alpaca GPT4 (en&zh) Glaive Function Calling V2 (en&zh) LIMA (en) Guanaco Dataset (multilingual) BELLE 2M (zh) BELLE 1M (zh) BELLE 0.5M (zh) BELLE Dialogue 0.4M (zh) BELLE School Math 0.25M (zh) BELLE Multiturn Chat 0.8M (zh) UltraChat (en) OpenPlatypus (en) CodeAlpaca 20k (en) Alpaca CoT (multilingual) OpenOrca (en) SlimOrca (en) MathInstruct (en) Firefly 1.1M (zh) Wiki QA (en) Web QA (zh) WebNovel (zh) Nectar (en) deepctrl (en&zh) Advertise Generating (zh) ShareGPT Hyperfiltered (en) ShareGPT4 (en&zh) UltraChat 200k (en) AgentInstruct (en) LMSYS Chat 1M (en) Evol Instruct V2 (en) Cosmopedia (en) STEM (zh) Ruozhiba (zh) Neo-sft (zh) WebInstructSub (en) Magpie-Pro-300K-Filtered (en) Magpie-ultra-v0.1 (en) LLaVA mixed (en&zh) Pokemon-gpt4o-captions Open Assistant (de) Dolly 15k (de) Alpaca GPT4 (de) OpenSchnabeltier (de) Evol Instruct (de) Dolphin (de) Booksum (de) Airoboros (de) Ultrachat (de)
偏好数据集
DPO mixed (en&zh) UltraFeedback (en) RLHF-V (en) Orca DPO Pairs (en) HH-RLHF (en) Nectar (en) Orca DPO (de) KTO mixed (en)

实战篇

昇腾NPU环境测试

前置条件:已安装NPU卡驱动/CANN Toolkit/CANN kernels,并设置好环境变量

1.安装LLaMA-Factory
##克隆LLaMA-Factory代码仓:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
##NPU环境安装
cd LLaMA-Factory
pip install -e ".[torch-npu,metrics]"
2.验证LLaMA-Factory可用性:
llamafactory-cli help

根据报错提示,镜像中默认安装了vllm,执行llamafactory-cli会默认调用vllm这个库,昇腾NPU不支持vllm库,卸载vllm解决

pip uninstall vllm
3.使用LLaMA-Factory仓进行qwen2-vl-7b微调训练
3.1.下载模型权重
yum install git-lfs
git clone https://www.modelscope.cn/qwen/qwen2-vl-7b-instruct.git

3.2使用LLaMA-Factory 提供的数据集进行测试
3.3修改启动脚本:
vim examples/train_lora/qwen2vl_lora_dpo.yaml
3.4指定运算设备
export ASCEND_RT_VISIBLE_DEVICES=0,1  ###指定两张NPU卡进行训练
3.5启动训练任务
llamafactory-cli train examples/train_lora/qwen2vl_lora_dpo.yaml

报keyerror“qwen2_vl”错误

根据提示报错原因为pip源中transformers版本问题不适配,需要从github上拉取安装最新的transformers

3.6安装最新版本transformers
pip install git+https://github.com/huggingface/transformers accelerate
#一次可能失败,拉取不下来,多尝试几次;
#上述方法不行,就使用以下方式安装:
git clone https://github.com/huggingface/transformers.git
cd transformers
pip install -e

重新拉起训练任务解决

loss收敛:

GPU环境测试

前置条件:已安装GPU卡驱动/CUDA/cudnn等基础环境,并设置好环境变量

1.安装LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

2.验证LLaMA-Factory可用性:
llamafactory-cli help
3.使用LLaMA-Factory仓进行qwen2-vl-7b微调训练
3.1.下载模型权重
yum install git-lfs
git clone https://www.modelscope.cn/qwen/qwen2-vl-7b-instruct.git

3.2使用LLaMA-Factory 提供的数据集进行测试
3.3修改启动脚本:
vim examples/train_lora/qwen2vl_lora_dpo.yaml
3.4安装最新版本transformers
pip install git+https://github.com/huggingface/transformers accelerate
#一次可能失败,拉取不下来,多尝试几次;
#上述方法不行,就使用以下方式安装:
git clone https://github.com/huggingface/transformers.git
cd transformers
pip install -e
3.5启动训练任务
llamafactory-cli train examples/train_lora/qwen2vl_lora_dpo.yaml

报端口错误

指定端口号解决:

export MASTER_PORT=45123

loss曲线收敛:

日常学习总结

总结

### LLaMA-Factory 总结
#### 简介
**LLaMA-Factory** 是一个开源的大规模语言模型微调框架,旨在简化大模型的训练过程。它提供了一个统一的平台,支持多种大模型的微调,如LLaMA、BLOOM、Mistral等,使用户能够快速适应和调整这些模型以应用于特定场景。LLaMA-Factory 通过多种训练方法和精度调整选项,结合先进算法和实用技巧,让即使是技术新手也能快速训练出自己需要的模型。
#### 特点和功能
- **多模型支持**:支持包括LLaMA、LLaVA、Mistral等在内的多种大型语言模型。
- **多样化的训练方法**:支持(增量)预训练、指令监督微调、奖励模型训练、PPO、DPO、ORPO等多种训练方法。
- **多精度调整**:支持从32比特全参数微调到基于不同量化技术的极低比特QLoRA微调。
- **先进算法和实用技巧**:集成了GaLore、DoRA、LongLoRA等算法和FlashAttention-2、Unsloth等实用技巧。
- **内置Web UI**:用户几乎无需编写代码即可通过Web界面灵活定制100多个LLMs的微调。
- **低门槛操作**:支持通过命令行或Web界面进行操作,进一步降低了使用门槛。
#### 整体架构和调优框架
文章提及了LLaMA-Factory的整体架构和调优框架,但未具体展开描述。框架通过统一的平台整合了多种模型和训练方法,提供了高效和灵活的训练体验。
#### 支持的模型和数据集
- **模型列表**:列出了Baichuan 2、BLOOM、ChatGLM3、Llama系列等众多模型的名称、大小和模板。
- **数据集**:支持预训练数据集(如Wiki Demo、Pile等)、指令微调数据集(如Alpaca、BELLE等)和偏好数据集(如DPO mixed、UltraFeedback等)。
#### 实战操作
- **昇腾NPU环境测试**:详细介绍了在昇腾NPU环境下安装LLaMA-Factory、验证其可用性、下载模型权重、修改启动脚本、指定运算设备以及启动训练任务的步骤。
- **GPU环境测试**:同样详细说明了在GPU环境下进行LLaMA-Factory的安装、验证、下载模型、修改脚本、安装transformers库以及启动训练任务的流程。
#### 日常学习总结
文章最后提到了在实际操作中遇到的一些问题和解决方法,如解决pip源中transformers版本问题、指定端口号解决端口错误等,为使用者提供了宝贵的经验总结。
### 结论
LLaMA-Factory是一个功能强大且易于使用的开源大规模语言模型微调框架,它通过提供丰富的模型支持、多样化的训练方法、先进的算法和实用技巧,以及便捷的Web UI和命令行操作方式,大大降低了大模型微调的技术门槛。无论是技术新手还是资深开发者,都能通过LLaMA-Factory快速训练出自己需要的模型,从而更好地利用大模型技术实现实际应用。

更新时间 2024-09-11