LLaMA-Factory

在这里插入图片描述


文章目录

    • 一、关于 LLaMA-Factory
      • 项目特色
      • 性能指标
    • 二、如何使用
      • 1、安装 LLaMA Factory
      • 2、数据准备
      • 3、快速开始
      • 4、LLaMA Board 可视化微调
      • 5、构建 Docker
        • CUDA 用户:
        • 昇腾 NPU 用户:
        • 不使用 Docker Compose 构建
          • CUDA 用户:
          • 昇腾 NPU 用户:
        • 数据卷详情
      • 6、利用 vLLM 部署 OpenAI API
      • 7、从魔搭社区下载
      • 8、使用 W&B 面板
    • 三、支持
      • 1、模型
      • 2、训练方法
      • 3、数据集
        • 预训练数据集
        • 指令微调数据集
        • 偏好数据集
      • 4、软硬件依赖
        • 硬件依赖


一、关于 LLaMA-Factory

A WebUI for Efficient Fine-Tuning of 100+ LLMs

  • github : https://github.com/hiyouga/LLaMA-Factory

Demo 视频

其他打开方式

  • Colab:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
  • PAI-DSW: https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory
  • 本地机器:请见如何使用

项目特色

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

性能指标

与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


二、如何使用


1、安装 LLaMA Factory

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

可选的额外依赖项:torch、torch-npu、metrics、deepspeed、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、badam、qwen、modelscope、quality

Tip : 遇到包冲突时,可使用 pip install --no-deps -e . 解决。

Windows 和 昇腾 NPU 用户指南 详见:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md


2、数据准备

关于数据集文件的格式,请参考 data/README_zh.md 的内容。你可以使用 HuggingFace / ModelScope 上的数据集或加载本地数据集。

Note:使用自定义数据集时,请更新 data/dataset_info.json 文件。


3、快速开始

下面三行命令分别对 Llama3-8B-Instruct 模型进行 LoRA 微调推理合并

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml

高级用法请参考 examples/README_zh.md(包括多 GPU 微调)。

Tip: 使用 llamafactory-cli help 显示帮助信息。


4、LLaMA Board 可视化微调

由 Gradio 驱动

llamafactory-cli webui

5、构建 Docker


CUDA 用户:
cd docker/docker-cuda/
docker-compose up -d
docker-compose exec llamafactory bash

昇腾 NPU 用户:
cd docker/docker-npu/
docker-compose up -d
docker-compose exec llamafactory bash

不使用 Docker Compose 构建

CUDA 用户:
docker build -f ./docker/docker-cuda/Dockerfile \--build-arg INSTALL_BNB=false \--build-arg INSTALL_VLLM=false \--build-arg INSTALL_DEEPSPEED=false \--build-arg INSTALL_FLASHATTN=false \--build-arg PIP_INDEX=https://pypi.org/simple \-t llamafactory:latest .docker run -dit --gpus=all \-v ./hf_cache:/root/.cache/huggingface \-v ./ms_cache:/root/.cache/modelscope \-v ./data:/app/data \-v ./output:/app/output \-p 7860:7860 \-p 8000:8000 \--shm-size 16G \--name llamafactory \llamafactory:latestdocker exec -it llamafactory bash

昇腾 NPU 用户:
# 根据您的环境选择镜像
docker build -f ./docker/docker-npu/Dockerfile \--build-arg INSTALL_DEEPSPEED=false \--build-arg PIP_INDEX=https://pypi.org/simple \-t llamafactory:latest .# 根据您的资源更改 `device`
docker run -dit \-v ./hf_cache:/root/.cache/huggingface \-v ./ms_cache:/root/.cache/modelscope \-v ./data:/app/data \-v ./output:/app/output \-v /usr/local/dcmi:/usr/local/dcmi \-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \-v /etc/ascend_install.info:/etc/ascend_install.info \-p 7860:7860 \-p 8000:8000 \--device /dev/davinci0 \--device /dev/davinci_manager \--device /dev/devmm_svm \--device /dev/hisi_hdc \--shm-size 16G \--name llamafactory \llamafactory:latestdocker exec -it llamafactory bash

数据卷详情
  • hf_cache:使用宿主机的 Hugging Face 缓存文件夹,允许更改为新的目录。
  • data:宿主机中存放数据集的文件夹路径。
  • output:将导出目录设置为该路径后,即可在宿主机中访问导出后的模型。

6、利用 vLLM 部署 OpenAI API

API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml

Tip : API 文档请查阅 https://platform.openai.com/docs/api-reference/chat/create。


7、从魔搭社区下载

如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。

export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`

model_name_or_path 设置为模型 ID 来加载对应的模型。在魔搭社区查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct


8、使用 W&B 面板

若要使用 Weights & Biases 记录实验数据,请在 yaml 文件中添加下面的参数。

report_to: wandb
run_name: test_run # 可选

在启动训练任务时,将 WANDB_API_KEY 设置为密钥来登录 W&B 账户。


三、支持


1、模型

模型名模型大小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
InternLM27B/20Bintern2
Llama7B/13B/33B/65B-
Llama 27B/13B/70Bllama2
Llama 38B/70Bllama3
LLaVA-1.57B/13Bvicuna
Mistral/Mixtral7B/8x7B/8x22Bmistral
OLMo1B/7B-
PaliGemma3Bgemma
Phi-1.5/Phi-21.3B/2.7B-
Phi-34B/7B/14Bphi
Qwen/Qwen1.5/Qwen2 (Code/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110Bqwen
StarCoder 23B/7B/15B-
XVERSE7B/13B/65Bxverse
Yi/Yi-1.56B/9B/34Byi
Yi-VL6B/34Byi_vl
Yuan 22B/51B/102Byuan

Note : 对于所有“基座”(Base)模型,template 参数可以是 default, alpaca, vicuna 等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板

请务必在训练和推理时采用完全一致的模板。

项目所支持模型的完整列表请参阅 constants.py。

您也可以在 template.py 中添加自己的对话模板。


2、训练方法

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

3、数据集


预训练数据集
  • 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)
  • LLaVA mixed (en&zh)
  • 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)
  • Orca DPO Pairs (en)
  • HH-RLHF (en)
  • Nectar (en)
  • Orca DPO (de)
  • KTO mixed (en)

部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。

pip install --upgrade huggingface_hub
huggingface-cli login

4、软硬件依赖

必需项至少推荐
python3.83.11
torch1.13.12.3.0
transformers4.41.24.41.2
datasets2.16.02.19.2
accelerate0.30.10.30.1
peft0.11.10.11.1
trl0.8.60.9.4
可选项至少推荐
CUDA11.612.2
deepspeed0.10.00.14.0
bitsandbytes0.39.00.43.1
vllm0.4.30.4.3
flash-attn2.3.02.5.9

硬件依赖

* 估算值

方法精度7B13B30B70B110B8x7B8x22B
FullAMP120GB240GB600GB1200GB2000GB900GB2400GB
Full1660GB120GB300GB600GB900GB400GB1200GB
Freeze1620GB40GB80GB200GB360GB160GB400GB
LoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GB
QLoRA810GB20GB40GB80GB140GB60GB160GB
QLoRA46GB12GB24GB48GB72GB30GB96GB
QLoRA24GB8GB16GB24GB48GB18GB48GB

2024-07-17(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java项目笔记】01项目介绍

一、技术框架 1.后端服务 Spring Boot为主体框架 Spring MVC为Web框架 MyBatis、MyBatis Plus为持久层框架,负责数据库的读写 阿里云短信服务 2.存储服务 MySql redis缓存数据 MinIO为对象存储,存储非结构化数据(图片、视频、音频&a…

推荐一款处理TCP数据的架构--EasyTcp4Net

EasyTcp4Net是一个基于c# Pipe,ReadonlySequence的高性能Tcp通信库,旨在提供稳定,高效,可靠的tcp通讯服务。 基础的消息通讯 重试机制 超时机制 SSL加密通信支持 KeepAlive 流量背压控制 粘包和断包处理 (支持固定头处理,固定长度处理,固定字符处理) 日志支持Pipe &…

Spring MVC 的常用注解

RequestMapping 和 RestController注解 上面两个注解,是Spring MCV最常用的注解。 RequestMapping , 他是用来注册接口的路由映射。 路由映射:当一个用户访问url时,将用户的请求对应到某个方法或类的过程叫做路由映射。 Reques…

定制QCustomPlot 带有ListView的QCustomPlot 全网唯一份

定制QCustomPlot 带有ListView的QCustomPlot 文章目录 定制QCustomPlot 带有ListView的QCustomPlot摘要需求描述实现关键字: Qt、 QCustomPlot、 魔改、 定制、 控件 摘要 先上效果,是你想要的,再看下面的分解,顺便点赞搜藏一下;不是直接右上角。 QCustomPlot是一款…

基于springboot+vue+uniapp的驾校预约平台小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

认识AOP--小白可看

AOP(Aspect-Oriented Programming,面向切面编程)是一种软件开发范式,旨在通过横切关注点(cross-cutting concerns)的方式来解耦系统中的各个模块。横切关注点指的是那些不属于业务逻辑本身,但是…

Apache Sqoop

Apache Sqoop是一个开源工具,用于在Apache Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间进行数据的批量传输。其主要功能包括: 1. 数据导入:从关系型数据库(如MySQL、Oracle等)中将…

WPF设置欢迎屏幕,程序启动过度动画

当主窗体加载时间过长,这时候基本都会想添加一个等待操作来响应用户点击,提高用户体验。下面我记录两个方法,一点拙见,仅供参考。 方法1:在App类中使用SplashScreen类。 protected override void OnStartup(StartupEventArgs e)…

35.UART(通用异步收发传输器)-RS232(2)

(1)RS232接收模块visio框图: (2)接收模块Verilog代码编写: /* 常见波特率: 4800、9600、14400、115200 在系统时钟为50MHz时,对应计数为: (1/4800) * 10^9 /20 -1 10416 …

【作业】 贪心算法1

Tips:三题尚未完成。 #include <iostream> #include <algorithm> using namespace std; int a[110]; int main(){int n,r,sum0;cin>>n>>r;for(int i0;i<n;i){cin>>a[i];}sort(a0,an);for(int i0;i<n;i){if(i>r){a[i]a[i-r]a[i];}suma[…

[USACO18JAN] Cow at Large P

题解都说了&#xff0c;当统计 u u u为根节点的时候&#xff0c;答案就是满足以下条件的 i i i的数量&#xff1a; d i ≥ g i d_i≥g_i di​≥gi​且 d f a i < g f a i d_{fa_i}<g_{fa_i} dfai​​<gfai​​&#xff0c;设这个数量为 a n s ans ans。以下严格证明 …

Solana开发资源都有哪些

Solana是一个高性能的区块链平台&#xff0c;吸引了大量开发者构建去中心化应用&#xff08;dApps&#xff09;。以下是一些有用的Solana开发教程和资源&#xff1a; 官方资源 Solana 官方文档&#xff1a; Solana Documentation: 这是最全面的资源&#xff0c;包括快速入门、…

[实践篇]13.29 QNX下的系统性能监控工具 - sysMonAppQNX(二)

2.7 getinfo: 获取 DSP 的详细信息 getinfo 可用选项 (如果没有参数,则使用默认值) --q6 (默认选择处理器: ADSP): adsp - 选择的处理器为 ADSPsdsp - 选择的处理器为传感器 DSPcdsp - 选择的处理器为计算 DSP示例: ./sysMonApp getinfo --q6 cdsp - 获取计算 DSP 的详细信…

大气热力学(8)——热力学图的应用之一(气象要素求解)

本篇文章源自我在 2021 年暑假自学大气物理相关知识时手写的笔记&#xff0c;现转化为电子版本以作存档。相较于手写笔记&#xff0c;电子版的部分内容有补充和修改。笔记内容大部分为公式的推导过程。 文章目录 8.1 复习斜 T-lnP 图上的几种线8.1.1 等温线和等压线8.1.2 干绝热…

连锁零售门店分析思路-人货场 数据分析

连锁零售门店分析思路 以下是一个连锁零售门店的分析思路&#xff1a; 一、市场与竞争分析 二、门店运营分析&#xff08;销售分析&#xff09; 三、销售与财务分析 四、客户分析 五、数字化与营销分析 最近帮一个大学生培训&#xff0c;就门店销售分析 &#xff0c;说到门店…

使用windows批量解压和布局ImageNet ISLVRC2012数据集

使用的系统是windows&#xff0c;找到的解压命令很多都linux系统中的&#xff0c;为了能在windows系统下使用&#xff0c;因此下载Git这个软件&#xff0c;在其中的Git Bash中使用以下命令&#xff0c;因为Git Bash集成了很多linux的命令&#xff0c;方便我们的使用。 ImageNe…

[iOS]类和对象的底层原探索

[iOS]类和对象的底层探索 文章目录 [iOS]类和对象的底层探索继承链&#xff08;类&#xff0c;父类&#xff0c;元类&#xff09;instance 实例对象class 类对象meta-class 元类对象 对对象、类、元类和分类的探索instance 实例对象class 类对象meta-class 元类对象分类(catego…

react项目使用EventBus实现登录拦截

关于EventBus EventBus是一个事件发布/订阅模式的实现&#xff0c;它允许不同的组件或模块之间进行通信&#xff0c;而不需要直接引用对方。这种模式特别适用于那些需要跨组件传递信息&#xff0c;但又不想引入复杂依赖关系的场景。 实现思路 利用axios中间件&#xff0c;在…

防火墙之带宽管理篇

核心思想 1.带宽限制&#xff1a;限制非关键业务流量占用带宽的比例 2.带宽保证&#xff1a;保证关键的业务流量传输不受影响。业务繁忙时&#xff0c;确保业务不受影响。 3.限制连接数&#xff1a;可以针对某些业务进行连接数的限制&#xff0c;首先可以降低该业务占用带宽…

基于UltraFace的人脸检测在地平线旭日X3派上的部署和测试(Python版本和C++版本)

电脑端的测试环境搭建 如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机&#xff0c;所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机&#xff0c;需要的可以通过网盘获取&#xff1a; 代码和虚拟机百度网盘链接&#xff1a; 链接…