当前位置: 首页 > news >正文

llama factory

微调大模型可以像这样轻松…

https://github.com/user-attachments/assets/e6ce34b0-52d5-4f3e-a830-592106c4c272

选择你的打开方式:

  • 入门教程:https://zhuanlan.zhihu.com/p/695287607
  • 框架文档:https://llamafactory.readthedocs.io/zh-cn/latest/
  • Colab:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
  • 本地机器:请见如何使用
  • PAI-DSW:Llama3 案例 | Qwen2-VL 案例 | DeepSeek-R1-Distill 案例
  • Amazon SageMaker:博客

[!NOTE] 除上述链接以外的其他网站均为未经许可的第三方网站,请小心甄别。

目录

  • 项目特色
  • 性能指标
  • 更新日志
  • 模型
  • 训练方法
  • 数据集
  • 软硬件依赖
  • 如何使用
    • 安装 LLaMA Factory
    • 数据准备
    • 快速开始
    • LLaMA Board 可视化微调
    • 构建 Docker
    • 利用 vLLM 部署 OpenAI API
    • 从魔搭社区下载
    • 从魔乐社区下载
    • 使用 W&B 面板
    • 使用 SwanLab 面板
  • 使用了 LLaMA Factory 的项目
  • 协议
  • 引用
  • 致谢

项目特色

  • 多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、DeepSeek、Yi、Gemma、ChatGLM、Phi 等等。
  • 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
  • 多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
  • 先进算法:GaLore、BAdam、APOLLO、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
  • 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
  • 广泛任务:多轮对话、工具调用、图像理解、视觉定位、视频识别和语音理解等等。
  • 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow、SwanLab 等等。
  • 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。

最新模型的 Day-N 微调适配

适配时间模型名称
Day 0Qwen2.5 / Qwen2-VL / QwQ / QvQ / InternLM3 / MiniCPM-o-2.6
Day 1Llama 3 / GLM-4 / Mistral Small / PaliGemma2

性能指标

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

更新日志

[25/02/24] 我们宣布开源 EasyR1,一个高效可扩展的多模态强化学习框架,支持 GRPO 训练。

[25/02/11] 我们支持了在导出模型时保存 Ollama 配置文件。详细用法请参照 examples。

[25/02/05] 我们支持了在语音理解任务上微调 Qwen2-Audio 和 MiniCPM-o-2.6 模型。

[25/01/31] 我们支持了 DeepSeek-R1 和 Qwen2.5-VL 模型的微调。

模型

模型名参数量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
DeepSeek 2.5/3236B/671Bdeepseek3
DeepSeek R1 (Distill)1.5B/7B/8B/14B/32B/70B/671Bdeepseek3
Falcon7B/11B/40B/180Bfalcon
Gemma/Gemma 2/CodeGemma2B/7B/9B/27Bgemma
GLM-49Bglm4
GPT-20.1B/0.4B/0.8B/1.5B-
Granite 3.0-3.11B/2B/3B/8Bgranite3
Index1.9Bindex
InternLM 2-37B/8B/20Bintern2
Llama7B/13B/33B/65B-
Llama 27B/13B/70Bllama2
Llama 3-3.31B/3B/8B/70Bllama3
Llama 3.2 Vision11B/90Bmllama
LLaVA-1.57B/13Bllava
LLaVA-NeXT7B/8B/13B/34B/72B/110Bllava_next
LLaVA-NeXT-Video7B/34Bllava_next_video
MiniCPM1B/2B/4Bcpm/cpm3
MiniCPM-o-2.6/MiniCPM-V-2.68Bminicpm_o/minicpm_v
Ministral/Mistral-Nemo8B/12Bministral
Mistral/Mixtral7B/8x7B/8x22Bmistral
Mistral Small24Bmistral_small
OLMo1B/7B-
PaliGemma/PaliGemma23B/10B/28Bpaligemma
Phi-1.5/Phi-21.3B/2.7B-
Phi-3/Phi-3.54B/14Bphi
Phi-3-small7Bphi_small
Phi-414Bphi4
Pixtral12Bpixtral
Qwen/QwQ (1-2.5) (Code/Math/MoE)0.5B/1.5B/3B/7B/14B/32B/72B/110Bqwen
Qwen2-Audio7Bqwen2_audio
Qwen2-VL/Qwen2.5-VL/QVQ2B/3B/7B/72Bqwen2_vl
Skywork o18Bskywork_o1
StarCoder 23B/7B/15B-
TeleChat23B/7B/35B/115Btelechat2
XVERSE7B/13B/65Bxverse
Yi/Yi-1.5 (Code)1.5B/6B/9B/34Byi
Yi-VL6B/34Byi_vl
Yuan 22B/51B/102Byuan

[!NOTE] 对于所有“基座”(Base)模型,template 参数可以是 defaultalpacavicuna 等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板

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

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

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

训练方法

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

[!TIP] 有关 PPO 的实现细节,请参考此博客。

数据集

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

pip install --upgrade huggingface_hub
huggingface-cli login

软硬件依赖

必需项至少推荐
python3.93.10
torch1.13.12.4.0
transformers4.41.24.49.0
datasets2.16.03.2.0
accelerate0.34.01.2.1
peft0.11.10.12.0
trl0.8.60.9.6
可选项至少推荐
CUDA11.612.2
deepspeed0.10.00.16.2
bitsandbytes0.39.00.43.1
vllm0.4.30.7.2
flash-attn2.3.02.7.2

硬件依赖

估算值

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

如何使用

安装 LLaMA Factory

[!IMPORTANT] 此步骤为必需。

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

可选的额外依赖项:torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、apollo、badam、adam-mini、qwen、minicpm_v、modelscope、openmind、swanlab、quality

[!TIP] 遇到包冲突时,可使用 pip install --no-deps -e . 解决。

数据准备

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

[!NOTE] 使用自定义数据集时,请更新 data/dataset_info.json 文件。

快速开始

下面三行命令分别对 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 显示帮助信息。

LLaMA Board 可视化微调(由 Gradio 驱动)

llamafactory-cli webui

构建 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

AMD ROCm 用户:

cd docker/docker-rocm/
docker compose up -d
docker compose exec llamafactory bash

不使用 Docker Compose 构建

利用 vLLM 部署 OpenAI API

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

[!TIP] API 文档请查阅这里。

示例:图像理解 | 工具调用

从魔搭社区下载

如果您在 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

从魔乐社区下载

您也可以通过下述方法,使用魔乐社区下载数据集和模型。

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

将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔乐社区查看所有可用的模型,例如 TeleAI/TeleChat-7B-pt

使用 W&B 面板

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

report_to: wandb
run_name: test_run # 可选

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

使用 SwanLab 面板

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

use_swanlab: true
swanlab_run_name: test_run # 可选

在启动训练任务时,登录SwanLab账户有以下三种方式:

方式一:在 yaml 文件中添加 swanlab_api_key=<your_api_key> ,并设置为你的 API 密钥。 方式二:将环境变量 SWANLAB_API_KEY 设置为你的 API 密钥。 方式三:启动前使用 swanlab login 命令完成登录。

协议

本仓库的代码依照 Apache-2.0 协议开源。

使用模型权重时,请遵循对应的模型协议:Baichuan 2 / BLOOM / ChatGLM3 / Command R / DeepSeek / Falcon / Gemma / GLM-4 / GPT-2 / Granite / Index / InternLM / Llama / Llama 2 (LLaVA-1.5) / Llama 3 / MiniCPM / Mistral/Mixtral/Pixtral / OLMo / Phi-1.5/Phi-2 / Phi-3/Phi-4 / Qwen / Skywork / StarCoder 2 / TeleChat2 / XVERSE / Yi / Yi-1.5 / Yuan 2

引用

如果您觉得此项目有帮助,请考虑以下列格式引用

@inproceedings{zheng2024llamafactory,title={LlamaFactory: Unified Efficient Fine-Tuning of 100+ Language Models},author={Yaowei Zheng and Richong Zhang and Junhao Zhang and Yanhan Ye and Zheyan Luo and Zhangchi Feng and Yongqiang Ma},booktitle={Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations)},address={Bangkok, Thailand},publisher={Association for Computational Linguistics},year={2024},url={http://arxiv.org/abs/2403.13372}
}

致谢

本项目受益于 PEFT、TRL、QLoRA 和 FastChat,感谢以上诸位作者的付出。

相关文章:

  • 7、sentinel
  • 微信小程序通过mqtt控制esp32
  • 手写call,bind,apply
  • Jetson Orin Nano GPIO 实战,用 devmem 玩转 Pinmux 引脚复用配置
  • 【数据可视化-19】智能手机用户行为可视化分析
  • AI与思维模型【71】——断裂点理论
  • 第五章 SQLite数据库:5、SQLite 进阶用法:ALTER 命令、TRUNCATE 操作、视图创建、事务控制和子查询的操作
  • 【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata实现原理详解 - 3-5年Java开发必备知识
  • 每日算法-250420
  • qwen 32B 模型配置文件参数解释;48 个堆叠的解码器层是什么意思; `max_window_layers`的作用; 定义 `device_map`
  • 文件上传漏洞:Pass-01
  • Linux安装mysql_exporter
  • UE虚幻4虚幻5动画蓝图调试,触发FellOutOfWorld事件和打印输出,继续DeepSeek输出
  • C++学习之游戏服务器开发⑩ZINX的TCP通道实现
  • 机制的作用
  • Origin将双Y轴柱状图升级为双向分组柱状图
  • 在 Ubuntu 系统上安装 PostgreSQL
  • Arduino示例代码讲解:Project 08 - Digital Hourglass 数字沙漏
  • javascript day4
  • C语言之图像文件的属性
  • 美军一天内对也门发动50余次袭击,胡塞武装称再次击落美军无人机
  • 圆桌|耐心资本对科技创新有何意义?天使投资最关注哪些要素?
  • 影子调查丨义门陈遗址建筑被“没收”风波
  • 华夏幸福:累计未能如期偿还债务金额合计为227.91亿元
  • 6万余采购商消博会上“扫货”,全球好物“购物车”满载而归
  • 特朗普政府将对中国建造船只加征“港口费”,外交部:损人害己