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包&#…

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[…

大气热力学(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…

防火墙之带宽管理篇

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

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

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

【AI绘画教程】Stable Diffusion 1.5 vs 2

在本文中,我们将总结稳定扩散 1 与稳定扩散 2 辩论中的所有要点。我们将在第一部分中查看这些差异存在的实际原因,但如果您想直接了解实际差异,您可以跳下否定提示部分。让我们开始吧! Stable Diffusion 2.1 发布与1.5相比,2.1旨在解决2.0的许多相对缺点。本文的内容与理解…

网络和安全操作

一、编辑文件 文本编辑器有很多&#xff0c;比如图形模式的gedit、OpenOffice 等&#xff0c;文本模式下的编辑器有vi、vim&#xff08;vi的增强版本&#xff09;等。vi和vim是我们在Linux中最常用的编辑器。 gedit&#xff1a;类似于windows下的记事本&#xff0c;很方便的去…

AI 大事件:超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs

&#x1f9e0; AI 大事件&#xff1a;超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs 摘要 Andrej Karpathy 作为前 OpenAI 联合创始人、Tesla AI 团队负责人&#xff0c;他的专业性和实力备受瞩目。Karpathy 对 AI 的普及和教育充满热情&#xff0c;从 YouTube 教程到…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 Day1

黑马程序员前端AJAX入门到实战全套教程&#xff0c;包含学前端框架必会的&#xff08;ajaxnode.jswebpackgit&#xff09;&#xff0c;一套全覆盖 Day1 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​…

【算法/天梯赛训练】天梯赛模拟题集

L1-009 N个数求和 #include <iostream> #include <algorithm>using namespace std;typedef long long ll; const int N 105;typedef struct node {ll x, y; }node; node a[N];ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a; }int main() {int n;cin >>…

《昇思25天学习打卡营第25天|第9天》

今天是打卡的第九天&#xff0c;今天学习的是使用静态图加速这门课程&#xff0c;从他的背景学起&#xff1a;AI编译框架分为两种运行模式&#xff0c;分别是动态图模式和静态图模式&#xff0c;动态图模式特点&#xff1a;计算图的构建和计算同时发生&#xff0c;缺点&#xf…

如何追查一个packet在linux 系统哪里丢失

要想追一个包在系统哪里丢失了&#xff0c; 就要了解 一个应用层的包在送出时 要经历那些 检查点 和被丢掉的点。 1. 在传输层&#xff0c;如果是 tcp 包 会有contrack 的 buf 的限制 可能会导致 packets 的丢失。 > 检查办法&#xff1a;查看dmesg日志有报错&#xff1a;k…