LLaMA Factory大语言模型训练与微调平台

# LLaMA Factory

使用零代码命令行与 Web UI 轻松微调百余种大模型

目录

项目特色

  • 多种模型: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 微调。
  • 先进算法GaLoreBAdamAPOLLOAdam-miniMuonOFT、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
  • 实用技巧FlashAttention-2UnslothLiger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
  • 广泛任务:多轮对话、工具调用、图像理解、视觉定位、视频识别和语音理解等等。
  • 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow、SwanLab 等等。
  • 极速推理:基于 vLLMSGLang 的 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

官方博客

全部博客

更新日志

[25/08/22] 我们支持了 OFTOFTv2 模型的微调。查看 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-Z1Kimi-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-AudioMiniCPM-o-2.6 模型。

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

[25/01/15] 我们支持了 APOLLO 优化器。详细用法请参照 examples

[25/01/14] 我们支持了 MiniCPM-o-2.6MiniCPM-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] 我们支持了 Qwen2GLM-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-ChatLlama3-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 提出的 S2S^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: truemax_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] 我们对齐了示例 APIOpenAI API 的格式,您可以将微调模型接入任意基于 ChatGPT 的应用中。

[23/06/03] 我们实现了 4 比特的 LoRA 训练(也称 QLoRA)。详细用法请参照 examples

[!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
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 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
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 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) 0.6B/1.7B/4B/8B/14B/32B/235B qwen3/qwen3_nothink
Qwen2-Audio 7B qwen2_audio
Qwen2.5-Omni 3B/7B qwen2_omni
Qwen2-VL/Qwen2.5-VL/QVQ 2B/3B/7B/32B/72B qwen2_vl
Seed Coder 8B 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
预训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
指令监督微调 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
奖励模型训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
PPO 训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
DPO 训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
KTO 训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
ORPO 训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
SimPO 训练 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

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

数据集

预训练数据集
指令微调数据集
偏好数据集

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

bash 复制代码
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]
此步骤为必需。

从源码安装

bash 复制代码
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

从镜像安装

bash 复制代码
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 环境:

bash 复制代码
uv sync --extra torch --extra metrics --prerelease=allow

在环境中运行 LLaMA-Factory:

bash 复制代码
uv run --prerelease=allow llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml
Windows 用户指南

安装 PyTorch

Windows 平台需要额外手动安装 GPU 版本的 PyTorch 依赖包,您可以参考官方网站和以下命令安装并测试 PyTorch 是否正确安装。

bash 复制代码
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 版本情况选择适合的发布版本

bash 复制代码
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,安装方法请参考安装教程或使用以下命令:

bash 复制代码
# 请替换 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

下载预构建 Docker 镜像:32GB | 64GB

安装 BitsAndBytes

如果要在 Ascend NPU 上进行基于 bitsandbytes 的 QLoRA 量化微调,请执行如下步骤:

  1. 手动编译 bitsandbytes:请参考安装文档完成 NPU 版的 bitsandbytes 安装,编译要求环境 cmake 版本不低于 3.22.1,g++ 版本不低于 12.x。
bash 复制代码
# 从源码安装 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 .
  1. 安装 transformers 的 main 分支版本。
bash 复制代码
git clone -b main https://github.com/huggingface/transformers.git
cd transformers
pip install .
  1. 在训练参数中设置 double_quantization: false,可参考示例

数据准备

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

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

您也可以使用 Easy DatasetDataFlowGraphGen 构建用于微调的合成数据。

快速开始

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

bash 复制代码
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 驱动)

bash 复制代码
llamafactory-cli webui

LLaMA Factory Online 在线微调

详情阅读该文档

构建 Docker

CUDA 用户:

bash 复制代码
cd docker/docker-cuda/
docker compose up -d
docker compose exec llamafactory bash

昇腾 NPU 用户:

bash 复制代码
cd docker/docker-npu/
docker compose up -d
docker compose exec llamafactory bash

AMD ROCm 用户:

bash 复制代码
cd docker/docker-rocm/
docker compose up -d
docker compose exec llamafactory bash
不使用 Docker Compose 构建

CUDA 用户:

bash 复制代码
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 用户:

bash 复制代码
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 用户:

bash 复制代码
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

bash 复制代码
API_PORT=8000 llamafactory-cli api examples/inference/llama3.yaml infer_backend=vllm vllm_enforce_eager=true

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

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

从魔搭社区下载

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

bash 复制代码
export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`

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

从魔乐社区下载

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

bash 复制代码
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 文件中添加下面的参数。

yaml 复制代码
report_to: wandb
run_name: test_run # 可选

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

使用 SwanLab 面板

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

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 / 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

引用

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

bibtex 复制代码
@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}
}

致谢

本项目受益于 PEFTTRLQLoRAFastChat,感谢以上诸位作者的付出。

关于项目

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。
Apache-2.0
Python
59,924
7352
293
2023-05-28
2025-10-09

增长趋势 - stars