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

发布于:2024-09-06 ⋅ 阅读:(31) ⋅ 点赞:(0)

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 微调。
  • 先进算法GaLoreBAdamAdam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
  • 实用技巧FlashAttention-2UnslothLiger 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 训练

支持的数据集:

  1. 预训练数据集:
  2. 指令微调数据集
  3. 偏好数据集

实战篇

昇腾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曲线收敛:
在这里插入图片描述


日常学习总结