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

2024-09-05 09:52

本文主要是介绍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 27B/13Bbaichuan2
BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-
ChatGLM36Bchatglm3
Command R35B/104Bcohere
DeepSeek (Code/MoE)7B/16B/67B/236Bdeepseek
Falcon7B/11B/40B/180Bfalcon
Gemma/Gemma 2/CodeGemma2B/7B/9B/27Bgemma
GLM-49Bglm4
InternLM2/InternLM2.57B/20Bintern2
Llama7B/13B/33B/65B-
Llama 27B/13B/70Bllama2
Llama 3/Llama 3.18B/70Bllama3
LLaVA-1.57B/13Bllava
MiniCPM1B/2Bcpm
Mistral/Mixtral7B/8x7B/8x22Bmistral
OLMo1B/7B-
PaliGemma3Bpaligemma
Phi-1.5/Phi-21.3B/2.7B-
Phi-34B/7B/14Bphi
Qwen/Qwen1.5/Qwen2 (Code/Math/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110Bqwen
Qwen2-VL2B/7Bqwen2_vl
StarCoder 23B/7B/15B-
XVERSE7B/13B/65Bxverse
Yi/Yi-1.56B/9B/34Byi
Yi-VL6B/34Byi_vl
Yuan 22B/51B/102Byuan

提供的训练方法:

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

支持的数据集:

  1. 预训练数据集:
    • 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)
  2. 指令微调数据集
    • 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)
  3. 偏好数据集
    • 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仓基础功能架构及NPU/GPU环境实战演练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138627

相关文章

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils