LLaMA-Factory是一个开源的大模型训练微调框架,具有模块化设计和多种高效的训练方法,能够满足不同用户的需求。用户可以通过命令行或Web界面进行操作,实现个性化的语言模型微调。
LLaMA-Factory 是一个专注于 高效微调 LLaMA 系列模型 的开源框架(GitHub 项目地址:https://github.com/hiyouga/LLaMA-Factory)。它以极简配置、低资源消耗和对中文任务的深度优化著称,特别适合中小团队和个人研究者。以下从 核心功能、优势、适用场景 到 实战操作 为你全面解析:
功能模块 | 能力说明 |
---|---|
多模态支持 | 支持 LLaMA-2、Mistral、Yi、Qwen、Baichuan、ChatGLM 等主流架构 |
⚡ 高效微调 | 仅需 24GB 显存 微调 LLaMA2-13B(QLoRA技术) |
中文优化 | 内置 中文分词器适配 和 中文指令数据集(COIG、Alpaca-CN 等) |
即插即用 | 提供 Web UI / 命令行 双界面,无需代码基础启动训练 |
丰富算法 | 支持 Full/LoRA/QLoRA 微调,DPO/ORPO 对齐训练,模型合并/量化 |
极速推理 | 集成 vLLM 推理加速(吞吐量提升 5-10 倍),支持 OpenAI API 兼容协议 |
痛点 | LLaMA-Factory 方案 | 传统方案(e.g. HuggingFace) |
---|---|---|
入门门槛 | 可视化训练⤵️ 10分钟完成配置 | 需编写训练脚本 + 调试环境 |
中文支持 | 原生优化分词 + 中文数据集模板 | 需手动处理中文分词冲突 |
资源消耗 | QLoRA 微调 7B 模型仅需 10GB 显存 | Full Fine-tuning 需 80GB+ 显存 |
生态整合 | 内置 TensorBoard / W&B 监控 | 需自行集成 |
工业部署 | 一键导出 vLLM / TensorRT 部署格式 | 需手动转换模型 |
实测数据:在 1×RTX4090 上微调 Qwen1.5-7B 仅需 14小时(Alpaca 格式 50k 数据)
垂直领域模型定制
示例:法律/医疗问答机器人(注入专业领域数据)
操作:使用 QLoRA + 领域指令数据 微调 Mistral-7B
低成本学术研究
示例:探索 DPO 对齐对模型偏见的影响
操作:Web UI 中切换不同 RLHF 算法 对比效果
企业私有化部署
示例:金融行业合规助手(数据不出内网)
操作:导出 量化版 4-bit 模型 部署到本地服务器
需要从头预训练大模型 → 考虑 Megatron-LM / DeepSpeed
千卡集群分布式训练 → 选 ColossalAI
bash
git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python=3.10 conda activate llama_factory pip install -r requirements.txt
bash
CUDA_VISIBLE_DEVICES=0 python src/train_web.py
访问 http://localhost:7860
进入操作界面
yaml
# 微调参数 model_name_or_path: Qwen/Qwen1.5-7B # 从HuggingFace加载 dataset: alpaca_zh # 使用中文Alpaca数据集 quantization: qlora # 4-bit量化微调 lora_rank: 64 # LoRA矩阵秩 per_device_train_batch_size: 4 # RTX4090建议值
点击「Start Training」→ 监控显存占用(约 14GB)
python
from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("./saved_model") tokenizer = AutoTokenizer.from_pretrained("./saved_model") input_text = "感冒了该怎么办?" inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=100) print(tokenizer.decode(outputs[0]))
梯度累积 + CPU Offload
修改配置:
yaml
gradient_accumulation_steps: 8 offload_param: cpu # 将优化器状态卸载到CPU
动态课程学习
在 dataset_info.json
中配置数据集难度权重:
json
"medical_data": {"weight": 3.0, "difficulty": "hard"}, "general_qa": {"weight": 1.0, "difficulty": "easy"}
vLLM 推理加速
bash
python -m vllm.entrypoints.openai.api_server \ --model ./saved_model \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9
调用方式兼容 OpenAI API:
python
openai.api_base = "http://localhost:8000/v1" openai.ChatCompletion.create(model="custom_model", messages=[...])
硬件 | 模型 | 方法 | 吞吐量(tokens/s) | 显存占用 |
---|---|---|---|---|
RTX 3090 24GB | Qwen1.5-7B | QLoRA | 1800 | 13.2 GB |
RTX 4090 24GB | LLaMA2-13B | LoRA | 950 | 19.8 GB |
A100 40GB | Yi-34B | Full FT | 320 | 37.4 GB |
提示:QLoRA 相比 Full Fine-tuning 仅损失 1-3% 性能,显存减少 75%
数据标注 → doccano(导出 Alpaca 格式)
效果评估 → OpenCompass
知识库检索 → LangChain + FAISS
前端交互 → Chatbot UI
✅ 需要 快速微调中文模型 且 硬件资源有限
✅ 希望 可视化操作 避免编写复杂训练脚本
✅ 追求 从微调到部署的全流程轻量化
❌ 需 100B+ 大模型全参数训练 → 转向 DeepSpeed/Megatron
❌ 开发非主流架构模型 → 直接使用 PyTorch Lightning
项目定位:让大模型微调像训练 CNN 一样简单 —— 降低大模型落地门槛。