Co-authored-by: wyfdgg <liwenkun0812@163.com> Co-authored-by: Yaowei Zheng <hiyouga@buaa.edu.cn>
		
			
				
	
	
	
		
			69 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	获得亚马逊、英伟达、阿里云等的应用。
👋 加入我们的微信群、NPU 用户群、大模型实验室群 或 LLaMA Factory Online 用户群。
 [English](README.md) | 中文 
微调大模型可以像这样轻松…
https://github.com/user-attachments/assets/43b700c6-a178-41db-b1f8-8190a5d3fcfc
选择你的打开方式:
- 入门教程:https://zhuanlan.zhihu.com/p/695287607
 - 微调视频教程:https://www.bilibili.com/video/BV1djgRzxEts/
 - 框架文档:https://llamafactory.readthedocs.io/zh-cn/latest/
 - 框架文档(昇腾 NPU):https://ascend.github.io/docs/sources/llamafactory/
 - Colab(免费):https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
 - 本地机器:请见如何使用
 - PAI-DSW(免费试用):https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory
 - 九章智算云(算力优惠活动):https://docs.alayanew.com/docs/documents/useGuide/LLaMAFactory/mutiple/?utm_source=LLaMA-Factory
 - 官方课程:https://www.lab4ai.cn/course/detail?id=7c13e60f6137474eb40f6fd3983c0f46&utm_source=LLaMA-Factory
 - LLaMA Factory Online(在线微调):https://www.llamafactory.com.cn/?utm_source=LLaMA-Factory
 
Note
除上述链接以外的其他网站均为未经许可的第三方网站,请小心甄别。
目录
项目特色
- 多种模型: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、Muon、OFT、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 或 SGLang 的 OpenAI 风格 API、浏览器界面和命令行接口。
 
最新模型的 Day-N 微调适配
| 适配时间 | 模型名称 | 
|---|---|
| Day 0 | Qwen3 / Qwen2.5-VL / Gemma 3 / GLM-4.1V / InternLM 3 / MiniCPM-o-2.6 | 
| Day 1 | Llama 3 / GLM-4 / Mistral Small / PaliGemma2 / Llama 4 | 
官方博客
- 💡 Easy Dataset × LLaMA Factory: 让大模型高效学习领域知识(中文)
 - 使用 LLaMA-Factory 微调心理健康大模型(中文)
 - 使用 LLaMA-Factory 构建 GPT-OSS 角色扮演模型(中文)
 - 基于 LLaMA-Factory 和 EasyR1 打造一站式无代码大模型强化学习和部署平台 LLM Model Hub(中文)
 - 通过亚马逊 SageMaker HyperPod 上的 LLaMA-Factory 增强多模态模型银行文档的视觉信息提取(英文)
 
全部博客
- 使用 LLaMA-Factory 微调 Llama3.1-70B 医学诊断模型(中文)
 - 使用 LLaMA-Factory 微调 Qwen2.5-VL 实现自动驾驶场景微调(中文)
 - LLaMA Factory:微调 DeepSeek-R1-Distill-Qwen-7B 模型实现新闻标题分类器(中文)
 - 基于 Amazon SageMaker 和 LLaMA-Factory 打造一站式无代码模型微调部署平台 Model Hub(中文)
 - LLaMA Factory 多模态微调实践:微调 Qwen2-VL 构建文旅大模型(中文)
 - LLaMA Factory:微调 Llama3 模型实现角色扮演(中文)
 
更新日志
[25/08/22] 我们支持了 OFT 和 OFTv2 模型的微调。查看 examples 以使用。
[25/08/20] 我们支持了 Intern-S1-mini 模型的微调。查看 PR #8976 以使用。
[25/08/06] 我们支持了 GPT-OSS 模型的微调。查看 PR #8826 以使用。
展开日志
[25/07/02] 我们支持了 GLM-4.1V-9B-Thinking 模型的微调。
[25/04/28] 我们支持了 Qwen3 系列模型的微调。
[25/04/21] 我们支持了 Muon 优化器。详细用法请参照 examples。感谢 @tianshijing 的 PR。
[25/04/16] 我们支持了 InternVL3 模型的微调。查看 PR #7258 以使用。
[25/04/14] 我们支持了 GLM-Z1 和 Kimi-VL 模型的微调。
[25/04/06] 我们支持了 Llama 4 模型的微调。查看 PR #7611 以使用。
[25/03/31] 我们支持了 Qwen2.5 Omni 模型的微调。查看 PR #7537 以使用。
[25/03/15] 我们支持了 SGLang 推理后端,请使用 infer_backend: sglang 启用。
[25/03/12] 我们支持了 Gemma 3 模型的微调。
[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 模型的微调。
[25/01/15] 我们支持了 APOLLO 优化器。详细用法请参照 examples。
[25/01/14] 我们支持了 MiniCPM-o-2.6 和 MiniCPM-V-2.6 模型的微调。 感谢 @BUAADreamer 的 PR.
[25/01/14] 我们支持了 InternLM 3 模型的微调。感谢 @hhaAndroid 的 PR。
[25/01/10] 我们支持了 Phi-4 模型的微调。
[24/12/21] 我们支持了使用 SwanLab 跟踪与可视化实验。详细用法请参考 此部分。
[24/11/27] 我们支持了 Skywork-o1 模型的微调和 OpenO1 数据集。
[24/10/09] 我们支持了从 魔乐社区 下载预训练模型和数据集。详细用法请参照 此教程。
[24/09/19] 我们支持了 Qwen2.5 模型的微调。
[24/08/30] 我们支持了 Qwen2-VL 模型的微调。感谢 @simonJJJ 的 PR。
[24/08/27] 我们支持了 Liger Kernel。请使用 enable_liger_kernel: true 来加速训练。
[24/08/09] 我们支持了 Adam-mini 优化器。详细用法请参照 examples。感谢 @relic-yuexi 的 PR。
[24/07/04] 我们支持了无污染打包训练。请使用 neat_packing: true 参数。感谢 @chuan298 的 PR。
[24/06/16] 我们支持了 PiSSA 算法。详细用法请参照 examples。
[24/06/07] 我们支持了 Qwen2 和 GLM-4 模型的微调。
[24/05/26] 我们支持了 SimPO 偏好对齐算法。详细用法请参照 examples。
[24/05/20] 我们支持了 PaliGemma 系列模型的微调。注意 PaliGemma 是预训练模型,你需要使用 paligemma 模板进行微调使其获得对话能力。
[24/05/18] 我们支持了 KTO 偏好对齐算法。详细用法请参照 examples。
[24/05/14] 我们支持了昇腾 NPU 设备的训练和推理。详情请查阅安装部分。
[24/04/26] 我们支持了多模态模型 LLaVA-1.5 的微调。详细用法请参照 examples。
[24/04/22] 我们提供了在免费 T4 GPU 上微调 Llama-3 模型的 Colab 笔记本。Hugging Face 社区公开了两个利用 LLaMA Factory 微调的 Llama-3 模型,详情请见 Llama3-8B-Chinese-Chat 和 Llama3-Chinese。
[24/04/21] 我们基于 AstraMindAI 的仓库支持了 混合深度训练。详细用法请参照 examples。
[24/04/16] 我们支持了 BAdam 优化器。详细用法请参照 examples。
[24/04/16] 我们支持了 unsloth 的长序列训练(24GB 可训练 Llama-2-7B-56k)。该方法相比 FlashAttention-2 提供了 117% 的训练速度和 50% 的显存节约。更多数据请见此页面。
[24/03/31] 我们支持了 ORPO。详细用法请参照 examples。
[24/03/21] 我们的论文 "LlamaFactory: Unified Efficient Fine-Tuning of 100+ Language Models" 可在 arXiv 上查看!
[24/03/20] 我们支持了能在 2x24GB GPU 上微调 70B 模型的 FSDP+QLoRA。详细用法请参照 examples。
[24/03/13] 我们支持了 LoRA+。详细用法请参照 examples。
[24/03/07] 我们支持了 GaLore 优化器。详细用法请参照 examples。
[24/03/07] 我们集成了 vLLM 以实现极速并发推理。请使用 infer_backend: vllm 来获得 270% 的推理速度。
[24/02/28] 我们支持了 DoRA 微调。请使用 use_dora: true 参数进行 DoRA 微调。
[24/02/15] 我们支持了 LLaMA Pro 提出的块扩展方法。详细用法请参照 examples。
[24/02/05] Qwen1.5(Qwen2 测试版)系列模型已在 LLaMA-Factory 中实现微调支持。详情请查阅该博客页面。
[24/01/18] 我们针对绝大多数模型实现了 Agent 微调,微调时指定 dataset: glaive_toolcall_zh 即可使模型获得工具调用能力。
[23/12/23] 我们针对 LLaMA, Mistral 和 Yi 模型支持了 unsloth 的 LoRA 训练加速。请使用 use_unsloth: true 参数启用 unsloth 优化。该方法可提供 170% 的训练速度,详情请查阅此页面。
[23/12/12] 我们支持了微调最新的混合专家模型 Mixtral 8x7B。硬件需求请查阅此处。
[23/12/01] 我们支持了从 魔搭社区 下载预训练模型和数据集。详细用法请参照 此教程。
[23/10/21] 我们支持了 NEFTune 训练技巧。请使用 neftune_noise_alpha: 5 参数启用 NEFTune。
[23/09/27] 我们针对 LLaMA 模型支持了 LongLoRA 提出的 $S^2$-Attn。请使用 shift_attn: true 参数以启用该功能。
[23/09/23] 我们在项目中集成了 MMLU、C-Eval 和 CMMLU 评估集。详细用法请参照 examples。
[23/09/10] 我们支持了 FlashAttention-2。如果您使用的是 RTX4090、A100 或 H100 GPU,请使用 flash_attn: fa2 参数以启用 FlashAttention-2。
[23/08/12] 我们支持了 RoPE 插值来扩展 LLaMA 模型的上下文长度。请使用 rope_scaling: linear 参数训练模型或使用 rope_scaling: dynamic 参数评估模型。
[23/08/11] 我们支持了指令模型的 DPO 训练。详细用法请参照 examples。
[23/07/31] 我们支持了数据流式加载。请使用 streaming: true 和 max_steps: 10000 参数来流式加载数据集。
[23/07/29] 我们在 Hugging Face 发布了两个 13B 指令微调模型。详细内容请查阅我们的 Hugging Face 项目(LLaMA-2 / Baichuan)。
[23/07/18] 我们开发了支持训练和测试的浏览器一体化界面。请使用 train_web.py 在您的浏览器中微调模型。感谢 @KanadeSiina 和 @codemayq 在该功能开发中付出的努力。
[23/07/09] 我们开源了 FastEdit ⚡🩹,一个简单易用的、能迅速编辑大模型事实记忆的工具包。如果您感兴趣请关注我们的 FastEdit 项目。
[23/06/29] 我们提供了一个可复现的指令模型微调示例,详细内容请查阅 Baichuan-7B-sft。
[23/06/22] 我们对齐了示例 API 与 OpenAI API 的格式,您可以将微调模型接入任意基于 ChatGPT 的应用中。
Tip
如果您无法使用最新的功能,请尝试重新拉取代码并再次安装 LLaMA-Factory。
模型
| 模型名 | 参数量 | Template | 
|---|---|---|
| Baichuan 2 | 7B/13B | baichuan2 | 
| BLOOM/BLOOMZ | 560M/1.1B/1.7B/3B/7.1B/176B | - | 
| ChatGLM3 | 6B | chatglm3 | 
| Command R | 35B/104B | cohere | 
| DeepSeek (Code/MoE) | 7B/16B/67B/236B | deepseek | 
| DeepSeek 2.5/3 | 236B/671B | deepseek3 | 
| DeepSeek R1 (Distill) | 1.5B/7B/8B/14B/32B/70B/671B | deepseekr1 | 
| ERNIE-4.5 | 0.3B/21B/300B | ernie/ernie_nothink | 
| Falcon | 7B/11B/40B/180B | falcon | 
| Falcon-H1 | 0.5B/1.5B/3B/7B/34B | falcon_h1 | 
| Gemma/Gemma 2/CodeGemma | 2B/7B/9B/27B | gemma/gemma2 | 
| Gemma 3/Gemma 3n | 270M/1B/4B/6B/8B/12B/27B | gemma3/gemma3n | 
| GLM-4/GLM-4-0414/GLM-Z1 | 9B/32B | glm4/glmz1 | 
| GLM-4.1V | 9B | glm4v | 
| GLM-4.5/GLM-4.5V | 106B/355B | glm4_moe/glm4v_moe | 
| GPT-2 | 0.1B/0.4B/0.8B/1.5B | - | 
| GPT-OSS | 20B/120B | gpt | 
| Granite 3.0-3.3 | 1B/2B/3B/8B | granite3 | 
| Granite 4 | 7B | granite4 | 
| Hunyuan (MT) | 7B | hunyuan | 
| Index | 1.9B | index | 
| InternLM 2-3 | 7B/8B/20B | intern2 | 
| InternVL 2.5-3.5 | 1B/2B/4B/8B/14B/30B/38B/78B/241B | intern_vl | 
| InternLM/Intern-S1-mini | 8B | intern_s1 | 
| Kimi-VL | 16B | kimi_vl | 
| Ling 2.0 (mini/flash) | 16B/100B | bailing_v2 | 
| Llama | 7B/13B/33B/65B | - | 
| Llama 2 | 7B/13B/70B | llama2 | 
| Llama 3-3.3 | 1B/3B/8B/70B | llama3 | 
| Llama 4 | 109B/402B | llama4 | 
| Llama 3.2 Vision | 11B/90B | mllama | 
| LLaVA-1.5 | 7B/13B | llava | 
| LLaVA-NeXT | 7B/8B/13B/34B/72B/110B | llava_next | 
| LLaVA-NeXT-Video | 7B/34B | llava_next_video | 
| MiMo | 7B | mimo | 
| MiniCPM 1-4.1 | 0.5B/1B/2B/4B/8B | cpm/cpm3/cpm4 | 
| MiniCPM-o-2.6/MiniCPM-V-2.6 | 8B | minicpm_o/minicpm_v | 
| Ministral/Mistral-Nemo | 8B/12B | ministral | 
| Mistral/Mixtral | 7B/8x7B/8x22B | mistral | 
| Mistral Small | 24B | mistral_small | 
| OLMo | 1B/7B | - | 
| PaliGemma/PaliGemma2 | 3B/10B/28B | paligemma | 
| Phi-1.5/Phi-2 | 1.3B/2.7B | - | 
| Phi-3/Phi-3.5 | 4B/14B | phi | 
| Phi-3-small | 7B | phi_small | 
| Phi-4 | 14B | phi4 | 
| Pixtral | 12B | pixtral | 
| Qwen (1-2.5) (Code/Math/MoE/QwQ) | 0.5B/1.5B/3B/7B/14B/32B/72B/110B | qwen | 
| Qwen3 (MoE/Instruct/Thinking/Next) | 0.6B/1.7B/4B/8B/14B/32B/80B/235B | qwen3/qwen3_nothink | 
| Qwen2-Audio | 7B | qwen2_audio | 
| Qwen2.5-Omni | 3B/7B | qwen2_omni | 
| Qwen3-Omni | 30B | qwen3_omni | 
| Qwen2-VL/Qwen2.5-VL/QVQ | 2B/3B/7B/32B/72B | qwen2_vl | 
| Qwen3-VL | 235B | qwen3_vl | 
| Seed (OSS/Coder) | 8B/36B | seed_oss/seed_coder | 
| Skywork o1 | 8B | skywork_o1 | 
| StarCoder 2 | 3B/7B/15B | - | 
| TeleChat2 | 3B/7B/35B/115B | telechat2 | 
| XVERSE | 7B/13B/65B | xverse | 
| Yi/Yi-1.5 (Code) | 1.5B/6B/9B/34B | yi | 
| Yi-VL | 6B/34B | yi_vl | 
| Yuan 2 | 2B/51B/102B | yuan | 
Note
对于所有“基座”(Base)模型,
template参数可以是default,alpaca,vicuna等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板。请务必在训练和推理时采用完全一致的模板。
*:您需要从 main 分支安装
transformers并使用DISABLE_VERSION_CHECK=1来跳过版本检查。**:您需要安装特定版本的
transformers以使用该模型。
项目所支持模型的完整列表请参阅 constants.py。
您也可以在 template.py 中添加自己的对话模板。
训练方法
| 方法 | 全参数训练 | 部分参数训练 | LoRA | QLoRA | 
|---|---|---|---|---|
| 预训练 | ✅ | ✅ | ✅ | ✅ | 
| 指令监督微调 | ✅ | ✅ | ✅ | ✅ | 
| 奖励模型训练 | ✅ | ✅ | ✅ | ✅ | 
| PPO 训练 | ✅ | ✅ | ✅ | ✅ | 
| DPO 训练 | ✅ | ✅ | ✅ | ✅ | 
| KTO 训练 | ✅ | ✅ | ✅ | ✅ | 
| ORPO 训练 | ✅ | ✅ | ✅ | ✅ | 
| SimPO 训练 | ✅ | ✅ | ✅ | ✅ | 
Tip
有关 PPO 的实现细节,请参考此博客。
数据集
预训练数据集
指令微调数据集
- 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)
 - Infinity Instruct (zh)
 - AgentInstruct (en)
 - LMSYS Chat 1M (en)
 - Evol Instruct V2 (en)
 - Cosmopedia (en)
 - STEM (zh)
 - Ruozhiba (zh)
 - Neo-sft (zh)
 - Magpie-Pro-300K-Filtered (en)
 - Magpie-ultra-v0.1 (en)
 - WebInstructSub (en)
 - OpenO1-SFT (en&zh)
 - Open-Thoughts (en)
 - Open-R1-Math (en)
 - Chinese-DeepSeek-R1-Distill (zh)
 - LLaVA mixed (en&zh)
 - Pokemon-gpt4o-captions (en&zh)
 - Open Assistant (de)
 - Dolly 15k (de)
 - Alpaca GPT4 (de)
 - OpenSchnabeltier (de)
 - Evol Instruct (de)
 - Dolphin (de)
 - Booksum (de)
 - Airoboros (de)
 - Ultrachat (de)
 
偏好数据集
部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。
pip install --upgrade huggingface_hub
huggingface-cli login
软硬件依赖
| 必需项 | 至少 | 推荐 | 
|---|---|---|
| python | 3.9 | 3.10 | 
| torch | 2.0.0 | 2.6.0 | 
| torchvision | 0.15.0 | 0.21.0 | 
| transformers | 4.49.0 | 4.50.0 | 
| datasets | 2.16.0 | 3.2.0 | 
| accelerate | 0.34.0 | 1.2.1 | 
| peft | 0.14.0 | 0.15.1 | 
| trl | 0.8.6 | 0.9.6 | 
| 可选项 | 至少 | 推荐 | 
|---|---|---|
| CUDA | 11.6 | 12.2 | 
| deepspeed | 0.10.0 | 0.16.4 | 
| bitsandbytes | 0.39.0 | 0.43.1 | 
| vllm | 0.4.3 | 0.8.2 | 
| flash-attn | 2.5.6 | 2.7.2 | 
硬件依赖
* 估算值
| 方法 | 精度 | 7B | 14B | 30B | 70B | xB | 
|---|---|---|---|---|---|---|
Full (bf16 or fp16) | 
32 | 120GB | 240GB | 600GB | 1200GB | 18xGB | 
Full (pure_bf16) | 
16 | 60GB | 120GB | 300GB | 600GB | 8xGB | 
| Freeze/LoRA/GaLore/APOLLO/BAdam | 16 | 16GB | 32GB | 64GB | 160GB | 2xGB | 
| QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | xGB | 
| QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | x/2GB | 
| QLoRA | 2 | 4GB | 8GB | 16GB | 24GB | x/4GB | 
如何使用
安装 LLaMA Factory
Important
此步骤为必需。
从源码安装
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
可选的额外依赖项:torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytes、hqq、eetq、gptq、aqlm、vllm、sglang、galore、apollo、badam、adam-mini、qwen、minicpm_v、openmind、swanlab、dev
从镜像安装
docker run -it --rm --gpus=all --ipc=host hiyouga/llamafactory:latest
该镜像基于 Ubuntu 22.04(x86_64)、CUDA 12.4、Python 3.11、PyTorch 2.6.0 和 Flash-attn 2.7.4 构建。
查看全部镜像:https://hub.docker.com/r/hiyouga/llamafactory/tags
请参阅构建 Docker 来重新构建镜像。
使用 uv 构建虚拟环境
使用 uv 创建隔离的 Python 环境:
uv sync --extra torch --extra metrics --prerelease=allow
在环境中运行 LLaMA-Factory:
uv run --prerelease=allow llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml
Windows 用户指南
安装 PyTorch
Windows 平台需要额外手动安装 GPU 版本的 PyTorch 依赖包,您可以参考官方网站和以下命令安装并测试 PyTorch 是否正确安装。
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
python -c "import torch; print(torch.cuda.is_available())"
如果看到 True 则说明安装成功。
若遇到类似 Can't pickle local object 的报错,请设置 dataloader_num_workers: 0。
安装 BitsAndBytes
如果要在 Windows 平台上开启量化 LoRA(QLoRA),需要安装预编译的 bitsandbytes 库, 支持 CUDA 11.1 到 12.2, 请根据您的 CUDA 版本情况选择适合的发布版本。
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
安装 Flash Attention-2
如果要在 Windows 平台上开启 FlashAttention-2,请使用 flash-attention-windows-wheel 中的脚本自行编译与安装。
昇腾 NPU 用户指南
在昇腾 NPU 设备上安装 LLaMA Factory 时,请升级 Python 到 3.10 及以上,并需要指定额外依赖项,使用 pip install -e ".[torch-npu,metrics]" 命令安装。此外,还需要安装 Ascend CANN Toolkit 与 Kernels,安装方法请参考安装教程或使用以下命令:
# 请替换 URL 为 CANN 版本和设备型号对应的 URL
# 安装 CANN Toolkit
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run
bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install
# 安装 CANN Kernels
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run
bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install
# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
| 依赖项 | 至少 | 推荐 | 
|---|---|---|
| CANN | 8.0.RC1 | 8.0.0.alpha002 | 
| torch | 2.1.0 | 2.4.0 | 
| torch-npu | 2.1.0 | 2.4.0.post2 | 
| deepspeed | 0.13.2 | 0.13.2 | 
| vllm-ascend | - | 0.7.3 | 
请使用 ASCEND_RT_VISIBLE_DEVICES 而非 CUDA_VISIBLE_DEVICES 来指定运算设备。
如果遇到无法正常推理的情况,请尝试设置 do_sample: false。
安装 BitsAndBytes
如果要在 Ascend NPU 上进行基于 bitsandbytes 的 QLoRA 量化微调,请执行如下步骤:
- 手动编译 bitsandbytes:请参考安装文档完成 NPU 版的 bitsandbytes 安装,编译要求环境 cmake 版本不低于 3.22.1,g++ 版本不低于 12.x。
 
# 从源码安装 bitsandbytes
# 克隆 bitsandbytes 仓库, Ascend NPU 目前在 multi-backend-refactor 中支持
git clone -b multi-backend-refactor https://github.com/bitsandbytes-foundation/bitsandbytes.git
cd bitsandbytes/
# 安装依赖
pip install -r requirements-dev.txt
# 安装编译工具依赖,该步骤在不同系统上命令有所不同,供参考
apt-get install -y build-essential cmake
# 编译 & 安装
cmake -DCOMPUTE_BACKEND=npu -S .
make
pip install .
- 安装 transformers 的 main 分支版本。
 
git clone -b main https://github.com/huggingface/transformers.git
cd transformers
pip install .
- 在训练参数中设置 
double_quantization: false,可参考示例。 
数据准备
关于数据集文件的格式,请参考 data/README_zh.md 的内容。你可以使用 HuggingFace / ModelScope / Modelers 上的数据集或加载本地数据集。
Note
使用自定义数据集时,请更新
data/dataset_info.json文件。
您也可以使用 Easy Dataset、DataFlow 和 GraphGen 构建用于微调的合成数据。
快速开始
下面三行命令分别对 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
LLaMA Factory Online 在线微调
详情阅读该文档。
构建 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 构建
CUDA 用户:
docker build -f ./docker/docker-cuda/Dockerfile \
    --build-arg PIP_INDEX=https://pypi.org/simple \
    --build-arg EXTRAS=metrics \
    -t llamafactory:latest .
docker run -dit --ipc=host --gpus=all \
    -p 7860:7860 \
    -p 8000:8000 \
    --name llamafactory \
    llamafactory:latest
docker exec -it llamafactory bash
昇腾 NPU 用户:
docker build -f ./docker/docker-npu/Dockerfile \
    --build-arg PIP_INDEX=https://pypi.org/simple \
    --build-arg EXTRAS=torch-npu,metrics \
    -t llamafactory:latest .
docker run -dit --ipc=host \
    -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 \
    --name llamafactory \
    llamafactory:latest
docker exec -it llamafactory bash
AMD ROCm 用户:
docker build -f ./docker/docker-rocm/Dockerfile \
    --build-arg PIP_INDEX=https://pypi.org/simple \
    --build-arg EXTRAS=metrics \
    -t llamafactory:latest .
docker run -dit --ipc=host \
    -p 7860:7860 \
    -p 8000:8000 \
    --device /dev/kfd \
    --device /dev/dri \
    --name llamafactory \
    llamafactory:latest
docker exec -it llamafactory bash
使用数据卷
您可以通过移除 Dockerfile 中 VOLUME [ "/root/.cache/huggingface", "/app/shared_data", "/app/output" ] 的注释来使用数据卷。
在构建 Docker 时使用参数 -v ./hf_cache:/root/.cache/huggingface 来挂载数据卷。各个数据卷的含义表示如下。
hf_cache:使用宿主机的 Hugging Face 缓存文件夹。shared_data:宿主机中存放数据集的文件夹路径。output:将导出目录设置为该路径后,即可在宿主机中访问导出后的模型。
利用 vLLM 部署 OpenAI API
API_PORT=8000 llamafactory-cli api examples/inference/llama3.yaml infer_backend=vllm vllm_enforce_eager=true
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 命令完成登录。
使用了 LLaMA Factory 的项目
如果您有项目希望添加至下述列表,请通过邮件联系或者创建一个 PR。
点击显示
- Wang et al. ESRL: Efficient Sampling-based Reinforcement Learning for Sequence Generation. 2023. [arxiv]
 - Yu et al. Open, Closed, or Small Language Models for Text Classification? 2023. [arxiv]
 - Wang et al. UbiPhysio: Support Daily Functioning, Fitness, and Rehabilitation with Action Understanding and Feedback in Natural Language. 2023. [arxiv]
 - Luceri et al. Leveraging Large Language Models to Detect Influence Campaigns in Social Media. 2023. [arxiv]
 - Zhang et al. Alleviating Hallucinations of Large Language Models through Induced Hallucinations. 2023. [arxiv]
 - Wang et al. Know Your Needs Better: Towards Structured Understanding of Marketer Demands with Analogical Reasoning Augmented LLMs. KDD 2024. [arxiv]
 - Wang et al. CANDLE: Iterative Conceptualization and Instantiation Distillation from Large Language Models for Commonsense Reasoning. ACL 2024. [arxiv]
 - Choi et al. FACT-GPT: Fact-Checking Augmentation via Claim Matching with LLMs. 2024. [arxiv]
 - Zhang et al. AutoMathText: Autonomous Data Selection with Language Models for Mathematical Texts. 2024. [arxiv]
 - Lyu et al. KnowTuning: Knowledge-aware Fine-tuning for Large Language Models. 2024. [arxiv]
 - Yang et al. LaCo: Large Language Model Pruning via Layer Collaps. 2024. [arxiv]
 - Bhardwaj et al. Language Models are Homer Simpson! Safety Re-Alignment of Fine-tuned Language Models through Task Arithmetic. 2024. [arxiv]
 - Yang et al. Enhancing Empathetic Response Generation by Augmenting LLMs with Small-scale Empathetic Models. 2024. [arxiv]
 - Yi et al. Generation Meets Verification: Accelerating Large Language Model Inference with Smart Parallel Auto-Correct Decoding. ACL 2024 Findings. [arxiv]
 - Cao et al. Head-wise Shareable Attention for Large Language Models. 2024. [arxiv]
 - Zhang et al. Enhancing Multilingual Capabilities of Large Language Models through Self-Distillation from Resource-Rich Languages. 2024. [arxiv]
 - Kim et al. Efficient and Effective Vocabulary Expansion Towards Multilingual Large Language Models. 2024. [arxiv]
 - Yu et al. KIEval: A Knowledge-grounded Interactive Evaluation Framework for Large Language Models. ACL 2024. [arxiv]
 - Huang et al. Key-Point-Driven Data Synthesis with its Enhancement on Mathematical Reasoning. 2024. [arxiv]
 - Duan et al. Negating Negatives: Alignment without Human Positive Samples via Distributional Dispreference Optimization. 2024. [arxiv]
 - Xie and Schwertfeger. Empowering Robotics with Large Language Models: osmAG Map Comprehension with LLMs. 2024. [arxiv]
 - Wu et al. Large Language Models are Parallel Multilingual Learners. 2024. [arxiv]
 - Zhang et al. EDT: Improving Large Language Models' Generation by Entropy-based Dynamic Temperature Sampling. 2024. [arxiv]
 - Weller et al. FollowIR: Evaluating and Teaching Information Retrieval Models to Follow Instructions. 2024. [arxiv]
 - Hongbin Na. CBT-LLM: A Chinese Large Language Model for Cognitive Behavioral Therapy-based Mental Health Question Answering. COLING 2024. [arxiv]
 - Zan et al. CodeS: Natural Language to Code Repository via Multi-Layer Sketch. 2024. [arxiv]
 - Liu et al. Extensive Self-Contrast Enables Feedback-Free Language Model Alignment. 2024. [arxiv]
 - Luo et al. BAdam: A Memory Efficient Full Parameter Training Method for Large Language Models. 2024. [arxiv]
 - Du et al. Chinese Tiny LLM: Pretraining a Chinese-Centric Large Language Model. 2024. [arxiv]
 - Ma et al. Parameter Efficient Quasi-Orthogonal Fine-Tuning via Givens Rotation. ICML 2024. [arxiv]
 - Liu et al. Dynamic Generation of Personalities with Large Language Models. 2024. [arxiv]
 - Shang et al. How Far Have We Gone in Stripped Binary Code Understanding Using Large Language Models. 2024. [arxiv]
 - Huang et al. LLMTune: Accelerate Database Knob Tuning with Large Language Models. 2024. [arxiv]
 - Deng et al. Text-Tuple-Table: Towards Information Integration in Text-to-Table Generation via Global Tuple Extraction. 2024. [arxiv]
 - Acikgoz et al. Hippocrates: An Open-Source Framework for Advancing Large Language Models in Healthcare. 2024. [arxiv]
 - Zhang et al. Small Language Models Need Strong Verifiers to Self-Correct Reasoning. ACL 2024 Findings. [arxiv]
 - Zhou et al. FREB-TQA: A Fine-Grained Robustness Evaluation Benchmark for Table Question Answering. NAACL 2024. [arxiv]
 - Xu et al. Large Language Models for Cyber Security: A Systematic Literature Review. 2024. [arxiv]
 - Dammu et al. "They are uncultured": Unveiling Covert Harms and Social Threats in LLM Generated Conversations. 2024. [arxiv]
 - Yi et al. A safety realignment framework via subspace-oriented model fusion for large language models. 2024. [arxiv]
 - Lou et al. SPO: Multi-Dimensional Preference Sequential Alignment With Implicit Reward Modeling. 2024. [arxiv]
 - Zhang et al. Getting More from Less: Large Language Models are Good Spontaneous Multilingual Learners. 2024. [arxiv]
 - Zhang et al. TS-Align: A Teacher-Student Collaborative Framework for Scalable Iterative Finetuning of Large Language Models. 2024. [arxiv]
 - Zihong Chen. Sentence Segmentation and Sentence Punctuation Based on XunziALLM. 2024. [paper]
 - Gao et al. The Best of Both Worlds: Toward an Honest and Helpful Large Language Model. 2024. [arxiv]
 - Wang and Song. MARS: Benchmarking the Metaphysical Reasoning Abilities of Language Models with a Multi-task Evaluation Dataset. 2024. [arxiv]
 - Hu et al. Computational Limits of Low-Rank Adaptation (LoRA) for Transformer-Based Models. 2024. [arxiv]
 - Ge et al. Time Sensitive Knowledge Editing through Efficient Finetuning. ACL 2024. [arxiv]
 - Tan et al. Peer Review as A Multi-Turn and Long-Context Dialogue with Role-Based Interactions. 2024. [arxiv]
 - Song et al. Turbo Sparse: Achieving LLM SOTA Performance with Minimal Activated Parameters. 2024. [arxiv]
 - Gu et al. RWKV-CLIP: A Robust Vision-Language Representation Learner. 2024. [arxiv]
 - Chen et al. Advancing Tool-Augmented Large Language Models: Integrating Insights from Errors in Inference Trees. 2024. [arxiv]
 - Zhu et al. Are Large Language Models Good Statisticians?. 2024. [arxiv]
 - Li et al. Know the Unknown: An Uncertainty-Sensitive Method for LLM Instruction Tuning. 2024. [arxiv]
 - Ding et al. IntentionQA: A Benchmark for Evaluating Purchase Intention Comprehension Abilities of Language Models in E-commerce. 2024. [arxiv]
 - He et al. COMMUNITY-CROSS-INSTRUCT: Unsupervised Instruction Generation for Aligning Large Language Models to Online Communities. 2024. [arxiv]
 - Lin et al. FVEL: Interactive Formal Verification Environment with Large Language Models via Theorem Proving. 2024. [arxiv]
 - Treutlein et al. Connecting the Dots: LLMs can Infer and Verbalize Latent Structure from Disparate Training Data. 2024. [arxiv]
 - Feng et al. SS-Bench: A Benchmark for Social Story Generation and Evaluation. 2024. [arxiv]
 - Feng et al. Self-Constructed Context Decompilation with Fined-grained Alignment Enhancement. 2024. [arxiv]
 - Liu et al. Large Language Models for Cuffless Blood Pressure Measurement From Wearable Biosignals. 2024. [arxiv]
 - Iyer et al. Exploring Very Low-Resource Translation with LLMs: The University of Edinburgh's Submission to AmericasNLP 2024 Translation Task. AmericasNLP 2024. [paper]
 - Li et al. Calibrating LLMs with Preference Optimization on Thought Trees for Generating Rationale in Science Question Scoring. 2024. [arxiv]
 - Yang et al. Financial Knowledge Large Language Model. 2024. [arxiv]
 - Lin et al. DogeRM: Equipping Reward Models with Domain Knowledge through Model Merging. 2024. [arxiv]
 - Bako et al. Evaluating the Semantic Profiling Abilities of LLMs for Natural Language Utterances in Data Visualization. 2024. [arxiv]
 - Huang et al. RoLoRA: Fine-tuning Rotated Outlier-free LLMs for Effective Weight-Activation Quantization. 2024. [arxiv]
 - Jiang et al. LLM-Collaboration on Automatic Science Journalism for the General Audience. 2024. [arxiv]
 - Inouye et al. Applied Auto-tuning on LoRA Hyperparameters. 2024. [paper]
 - Qi et al. Research on Tibetan Tourism Viewpoints information generation system based on LLM. 2024. [arxiv]
 - Xu et al. Course-Correction: Safety Alignment Using Synthetic Preferences. 2024. [arxiv]
 - Sun et al. LAMBDA: A Large Model Based Data Agent. 2024. [arxiv]
 - Zhu et al. CollectiveSFT: Scaling Large Language Models for Chinese Medical Benchmark with Collective Instructions in Healthcare. 2024. [arxiv]
 - Yu et al. Correcting Negative Bias in Large Language Models through Negative Attention Score Alignment. 2024. [arxiv]
 - Xie et al. The Power of Personalized Datasets: Advancing Chinese Composition Writing for Elementary School through Targeted Model Fine-Tuning. IALP 2024. [paper]
 - Liu et al. Instruct-Code-Llama: Improving Capabilities of Language Model in Competition Level Code Generation by Online Judge Feedback. ICIC 2024. [paper]
 - Wang et al. Cybernetic Sentinels: Unveiling the Impact of Safety Data Selection on Model Security in Supervised Fine-Tuning. ICIC 2024. [paper]
 - Xia et al. Understanding the Performance and Estimating the Cost of LLM Fine-Tuning. 2024. [arxiv]
 - Zeng et al. Perceive, Reflect, and Plan: Designing LLM Agent for Goal-Directed City Navigation without Instructions. 2024. [arxiv]
 - Xia et al. Using Pre-trained Language Model for Accurate ESG Prediction. FinNLP 2024. [paper]
 - Liang et al. I-SHEEP: Self-Alignment of LLM from Scratch through an Iterative Self-Enhancement Paradigm. 2024. [arxiv]
 - Bai et al. Aligning Large Language Model with Direct Multi-Preference Optimization for Recommendation. CIKM 2024. [paper]
 - StarWhisper: 天文大模型 StarWhisper,基于 ChatGLM2-6B 和 Qwen-14B 在天文数据上微调而得。
 - DISC-LawLLM: 中文法律领域大模型 DISC-LawLLM,基于 Baichuan-13B 微调而得,具有法律推理和知识检索能力。
 - Sunsimiao: 孙思邈中文医疗大模型 Sumsimiao,基于 Baichuan-7B 和 ChatGLM-6B 在中文医疗数据上微调而得。
 - CareGPT: 医疗大模型项目 CareGPT,基于 LLaMA2-7B 和 Baichuan-13B 在中文医疗数据上微调而得。
 - MachineMindset:MBTI性格大模型项目,根据数据集与训练方式让任意 LLM 拥有 16 个不同的性格类型。
 - Luminia-13B-v3:一个用于生成 Stable Diffusion 提示词的大型语言模型。[demo]
 - Chinese-LLaVA-Med:中文多模态医学大模型,基于 LLaVA-1.5-7B 在中文多模态医疗数据上微调而得。
 - AutoRE:基于大语言模型的文档级关系抽取系统。
 - NVIDIA RTX AI Toolkit:在 Windows 主机上利用英伟达 RTX 设备进行大型语言模型微调的开发包。
 - LazyLLM:一个低代码构建多 Agent 大模型应用的开发工具,支持基于 LLaMA Factory 的模型微调.
 - RAG-Retrieval:一个全链路 RAG 检索模型微调、推理和蒸馏代码库。[blog]
 - 360-LLaMA-Factory:一个魔改后的代码库,通过 Ring Attention 支持长序列的 SFT 和 DPO 训练。
 - Sky-T1:由 NovaSky AI 微调的低成本类 o1 长推理模型。
 - WeClone:从聊天记录创造数字分身的一站式解决方案。
 
协议
本仓库的代码依照 Apache-2.0 协议开源。
使用模型权重时,请遵循对应的模型协议:Baichuan 2 / BLOOM / ChatGLM3 / Command R / DeepSeek / Falcon / Gemma / GLM-4 / GPT-2 / Granite / Index / InternLM / Llama / Llama 2 / Llama 3 / Llama 4 / 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,感谢以上诸位作者的付出。

