本地部署LLaMA-Factory:一站式大模型微调与推理
本地部署LLaMA-Factory:一站式大模型微调与推理
在如今大语言模型(LLM)技术飞速演进的背景下,越来越多开发者和研究者不再满足于“开箱即用”的通用模型。无论是构建垂直领域的智能客服、企业知识问答系统,还是优化特定任务的表现,如何低成本、高效率地对预训练模型进行定制化微调,已成为实际落地中的核心挑战。
这时候,一个真正能打通“数据 → 训练 → 部署”全链路的工具就显得尤为关键。而 LLaMA-Factory 正是为此诞生的一站式解决方案——它不只是一套代码库,更像是一个专为大模型量身打造的“自动化生产线”。从支持上百种主流架构,到提供可视化操作界面,再到一键导出可部署模型,它的设计理念就是:让微调这件事变得像搭积木一样简单。
硬件准备:你的GPU够用吗?
任何深度学习项目的起点,都是确认硬件是否在线。对于 LLaMA-Factory 来说,虽然它支持多种量化与低资源训练方式(比如 QLoRA),但基础门槛依然是一块具备 CUDA 加速能力的 NVIDIA 显卡。
我们先运行下面这条命令检查显卡状态:
nvidia-smi
如果一切正常,你会看到类似这样的输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.05 Driver Version: 535.86.05 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA RTX 4090 On | 00000000:01:00.0 Off | Off |
| 30% 45C P8 20W / 450W | 1024MiB / 24576MiB | 5% Default |
+-------------------------------+----------------------+----------------------+
重点关注三个点:
- 是否识别出 GPU;
- CUDA 版本是否 ≥ 11.8(PyTorch 对此有要求);
- 显存容量能否支撑目标模型:例如 Qwen-7B 推荐至少 16GB 显存,若低于此值,建议使用 LoRA 或 QLoRA 技术降低内存占用。
⚠️ 如果
nvidia-smi找不到设备或提示驱动未安装,请前往 NVIDIA 官网 下载对应驱动,并根据 PyTorch 官方文档安装匹配版本的cudatoolkit。
获取项目源码:国内用户推荐 Gitee 镜像
接下来创建工作目录并克隆项目:
mkdir ~/llm-training && cd ~/llm-training
由于 GitHub 在国内访问较慢,推荐使用 Gitee 的镜像仓库加快下载速度:
# 国内推荐
git clone https://gitee.com/qzl9999/LLaMA-Factory.git
# 或国际网络
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
进入项目根目录:
cd LLaMA-Factory
这里使用 --depth 1 是为了只拉取最新提交记录,节省时间和磁盘空间。毕竟我们不是要参与开发,而是快速上手使用。
构建独立环境:避免依赖冲突的黄金法则
Python 项目最怕的就是“包冲突”。为了避免影响其他项目,强烈建议使用 Conda 创建专用虚拟环境。LLaMA-Factory 官方推荐 Python 3.10:
conda create -n llama_factory python=3.10 -y
conda activate llama_factory
激活成功后,终端前会显示 (llama_factory) 标识,说明你现在处于隔离环境中。
安装依赖:一次搞定所有组件
项目依赖项较多,包括 PyTorch、Transformers、Peft、Gradio 等。好在 LLaMA-Factory 提供了便捷的安装指令:
pip install -e ".[torch,metrics]"
这个命令做了两件事:
- -e 表示“可编辑模式”,相当于把当前项目当作已安装包,后续修改代码无需重新安装;
- .[torch,metrics] 是 setuptools 中的“可选依赖”语法,自动安装主依赖 + 深度学习框架(torch)+ 评估库(rouge、bleu 等)。
安装过程可能需要几分钟,取决于网络状况。完成后可通过以下命令验证是否成功:
llamafactory-cli version
若返回版本号(如 v0.8.0),说明安装无误。
验证 CUDA 环境:别让训练跑在 CPU 上!
即使你有高端显卡,也有可能因为环境配置问题导致 PyTorch 无法调用 GPU。为了避免“看着进度条走了一天结果发现是在 CPU 上训练”的悲剧,务必做一次简单的验证:
import torch
print("CUDA Available:", torch.cuda.is_available())
print("CUDA Device Count:", torch.cuda.device_count())
print("Current Device:", torch.cuda.current_device())
print("Device Name:", torch.cuda.get_device_name(0))
print("PyTorch Version:", torch.__version__)
理想输出如下:
CUDA Available: True
CUDA Device Count: 1
Current Device: 0
Device Name: NVIDIA GeForce RTX 4090
PyTorch Version: 2.3.0+cu121
如果 CUDA Available 返回 False,请排查:
- 当前 conda 环境是否正确激活;
- 安装的 pytorch 是否带有 CUDA 支持(应为 torch==2.3.0+cu121 形式);
- 显卡驱动是否过旧或损坏。
确认无误后输入 exit() 退出 Python 解释器。
启动 WebUI:告别命令行恐惧症
LLaMA-Factory 最吸引人的地方之一,就是它内置了一个基于 Gradio 的图形化界面。这意味着你可以完全不用记复杂的参数名,通过点击完成整个训练流程。
启动命令非常简洁:
llamafactory-cli webui
首次运行时会自动下载 Gradio 并启动服务,默认地址为:
Running on local URL: http://127.0.0.1:7860
打开浏览器访问该地址,即可进入可视化操作面板。界面包含多个标签页:“模型”、“训练”、“推理”、“导出”、“API”等,覆盖了从加载模型到上线服务的全流程。
相比传统命令行操作,WebUI 的优势在于:
- 实时查看训练日志和 loss 曲线;
- 参数设置所见即所得;
- 支持上传自定义数据集;
- 可视化测试生成效果。
尤其适合刚接触大模型微调的新手,也能极大提升高级用户的调试效率。
下载预训练模型:HF vs ModelScope 怎么选?
LLaMA-Factory 本身不包含模型权重,你需要自行从 Hugging Face 或 ModelScope 下载所需的基础模型。
推荐平台对比:
| 平台 | 优点 | 缺点 |
|---|---|---|
| Hugging Face | 全球最大开源模型社区,更新快 | 国内访问慢,需科学上网 |
| 魔搭 ModelScope | 阿里出品,中文友好,下载速度快 | 部分小众模型缺失 |
对于中文用户,尤其是网络条件一般的情况下,强烈推荐优先使用 ModelScope。
以通义千问系列为例,假设你想微调 Qwen2.5-3B-Instruct 模型,在 ModelScope 搜索该名称,进入详情页后复制 Git 命令即可:
git lfs install
git clone https://www.modelscope.cn/qwen/Qwen2___5-3B-Instruct.git
建议将模型放在 LLaMA-Factory 同级目录下,例如:
~/llm-training/Qwen2___5-3B-Instruct
⚠️ 注意路径中不要包含空格、括号或特殊字符(如
/),否则可能导致加载失败。可以用下划线_替代。
使用 WebUI 进行 LoRA 微调:新手友好实战指南
现在正式开始微调之旅。打开 WebUI 页面后,建议先切换语言为 中文(zh),更便于理解各项配置含义。
1. 设置模型信息
切换至“模型”标签页,填写以下内容:
| 字段 | 填写示例 |
|---|---|
| 模型名称 | qwen2.5-3b-instruct(系统会自动识别别名) |
| 模型路径 | /home/username/llm-training/Qwen2___5-3B-Instruct |
| 量化方式 | none(初学者建议不启用量化) |
| 设备类型 | cuda |
勾选“加载适配器权重”可用于继续训练已有 LoRA 模型,初次训练保持关闭即可。
2. 数据集选择与格式说明
LLaMA-Factory 内置多个常用数据集模板,如:
- alpaca_zh:中文指令微调数据;
- dolly-15k:英文多任务指令集;
- self_cognition:自我认知训练;
也可以上传自己的 JSON 文件,结构如下:
[
{
"instruction": "解释什么是机器学习",
"input": "",
"output": "机器学习是……"
}
]
每条样本由 instruction(任务描述)、input(输入上下文)、output(期望输出)组成,符合标准 Alpaca 格式。
3. 关键训练参数配置
切换到“训练”标签页,重点设置以下参数:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 微调方法 | lora |
初学者首选,仅训练少量参数,节省显存 |
| 学习率 | 2e-4 |
LoRA 通常使用较高学习率 |
| 训练轮数 | 3 |
防止过拟合 |
| 单卡批量大小 | 4 |
视显存调整(RTX 3090/4090 可设为 8) |
| 梯度累积步数 | 8 |
等效 batch size = 4×8=32 |
| 序列长度 | 512 |
平衡性能与内存 |
💡 进阶技巧:若显存紧张,可将“微调方法”改为
qlora,并启用fp16或bf16精度,可在 24GB 显存下微调 7B 模型。
4. LoRA 高级参数调优
| 参数 | 建议值 | 说明 |
|---|---|---|
| target_modules | q_proj,v_proj |
不同模型略有差异(如 LLaMA 系列为 q/v 投影层) |
| lora_rank | 64 |
秩越大表达能力越强,但也更耗资源 |
| lora_alpha | 16 |
控制缩放系数,一般为 rank 的 0.25~0.5 倍 |
| lora_dropout | 0.05 |
防止过拟合 |
这些参数直接影响微调效果。经验法则是:lora_rank=64 和 lora_alpha=16 是一个不错的起点,后续可根据验证集表现微调。
开始训练 & 实时监控
所有配置完成后,点击“预览命令”按钮,系统会生成对应的 CLI 指令,例如:
llamafactory-cli train \
--model_name_or_path /home/username/llm-training/Qwen2___5-3B-Instruct \
--do_train \
--dataset alpaca_zh \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir ./outputs/lora_train \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 8 \
--learning_rate 2e-4 \
--num_train_epochs 3.0 \
--max_seq_length 512 \
--logging_steps 10 \
--save_steps 100 \
--evaluation_strategy steps \
--eval_steps 100
确认无误后点击“开始”,训练进程正式启动。
页面下方会实时滚动输出日志,包括:
- 当前 step 和 loss 值;
- 学习率变化趋势;
- 显存占用情况;
- 评估指标(accuracy、rouge 等);
同时,每个 checkpoint 都会被保存到 output_dir 目录中,支持中断后恢复训练。
推理测试:看看模型学会了什么
训练结束后,可以直接在“推理”标签页中加载原始模型 + LoRA 权重进行测试:
- 模型路径:指向基础模型目录;
- 适配器路径:选择训练输出的
lora_train/checkpoint-xxx; - 输入 prompt,点击“生成”。
系统采用动态加载机制,无需提前合并权重即可实现增强推理,非常适合快速验证效果。
导出融合模型:迈向生产部署的关键一步
如果你希望将微调后的模型独立部署(如接入 vLLM 或 TGI),就需要将 LoRA 权重永久合并进原模型。
在 WebUI 中切换到“导出”标签页,填写:
- 基础模型路径;
- 适配器路径;
- 输出路径(如 ./merged_models/qwen-lora-merged);
点击“导出”按钮,系统会执行权重合并操作。最终输出的是标准 Hugging Face 格式的模型文件夹,包含 config.json、tokenizer.model、pytorch_model.bin 等,可直接用于 Transformers 推理或其他服务框架。
启动 API 服务:让模型真正“活”起来
为了让模型服务于前端应用或业务系统,LLaMA-Factory 提供了轻量级 API 服务功能:
llamafactory-cli api \
--model_name_or_path ./merged_models/qwen-lora-merged \
--port 8080
启动后可通过 POST 请求调用:
curl -X POST "http://127.0.0.1:8080/generate" \
-H "Content-Type: application/json" \
-d '{"prompt": "请解释量子计算的基本原理"}'
返回生成文本结果,轻松集成到网页、App 或自动化流程中。
此外,你还可以结合 Nginx 做反向代理、添加身份认证、启用 HTTPS,进一步提升安全性与可用性。
写在最后:为什么你应该试试 LLaMA-Factory?
LLaMA-Factory 的出现,本质上是在尝试解决一个现实痛点:大模型技术越来越强,但使用门槛并没有同步下降。很多团队明明有能力获取数据、也有硬件资源,却卡在“怎么训”“怎么部署”这种工程细节上。
而 LLaMA-Factory 的价值就在于:
- 统一接口:无论你是用 LLaMA、Qwen 还是 Mistral,操作流程几乎一致;
- 零代码入门:WebUI 让非专业人员也能参与模型定制;
- 端到端闭环:从训练到导出再到 API,一气呵成;
- 持续活跃更新:GitHub 上每周都有新 PR 和 issue 互动,社区生态健康。
哪怕你现在只是想做个简单的行业问答机器人,或者给公司内部系统加个 AI 助手,LLaMA-Factory 都能让你在几小时内跑通完整流程。
未来你可以尝试的方向还有很多:
- 用 QLoRA 在单张消费级显卡上微调 7B 模型;
- 构建专属法律、医疗、金融知识库问答系统;
- 结合 RAG 实现动态检索增强生成;
- 将训练流程封装为自动化脚本,接入 CI/CD 流水线;
随着开源社区不断迭代,这类“平民化”的工具正在成为推动 AI 普惠的重要力量。而你所需要的,或许只是一个晚上,加上一块还能打的游戏显卡。
🔗 项目地址:https://github.com/hiyouga/LLaMA-Factory
📚 官方文档:https://llamafactory.readthedocs.io
别再观望了——动手才是通往 AI 自由的第一步。
更多推荐

所有评论(0)