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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署