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

相关文章

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4: