一、LLaMA-Factory 是什么?
LLaMA-Factory 是一个开源的大语言模型微调框架,相当于给你的大模型(如 LLaMA、ChatGLM、Qwen 等)提供一个“定制化改造车间”。它的核心目标是:
- 快速适配场景:让预训练好的通用大模型,快速学会特定任务(如写文案、做客服、翻译等)。
- 降低使用门槛:提供开箱即用的脚本和界面,即使不懂代码细节也能上手。
- 支持多种玩法:全量微调、参数高效微调(如 LoRA)、多任务学习等。
二、快速入门步骤
1. 安装准备
- 克隆代码库:
git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory
- 安装依赖:
pip install -r requirements.txt
2. 准备模型和数据
- 下载预训练模型:
从 Hugging Face 或魔塔社区下载模型(如meta-llama/Llama-2-7b-hf
),解压到本地目录。 - 准备数据集:
- 格式要求:支持 Alpaca、ShareGPT 等格式,数据需包含
instruction
(指令)和output
(回答)。 - 示例数据(
train_data.json
):[ {"instruction": "你好", "output": "你好!有什么可以帮你的吗?"}, {"instruction": "今天的天气怎么样?", "output": "今天天气晴朗,适合外出散步。"} ]
- 创建
dataset_info.json
:{ "my_dataset": { "file_name": "train_data.json", "columns": {"prompt": "instruction", "response": "output"} } }
- 格式要求:支持 Alpaca、ShareGPT 等格式,数据需包含
3. 启动微调
- 命令行微调:
python train.py \ --model_name_or_path /path/to/llama-2-7b-hf \ --train_data /path/to/train_data.json \ --output_dir ./fine_tuned_model \ --method lora \ # 可选 full(全量微调)或 lora(高效微调) --num_train_epochs 3 \ --learning_rate 2e-5
- WebUI 可视化操作:
在界面中填写模型路径、数据集路径、微调参数等,点击“开始训练”。llamafactory-cli webui # 启动后访问 http://localhost:7860
4. 推理与部署
- 加载微调后的模型:
from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("./fine_tuned_model") tokenizer = AutoTokenizer.from_pretrained("./fine_tuned_model")
- 简单推理:
input_text = "你好,今天心情怎么样?" inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0])) # 输出微调后的回答
- 部署为 Web 服务:
gradio demo.py # 启动 Gradio 界面,与模型交互
三、关键概念解释
- 全量微调(Full Fine-Tuning):更新模型所有参数,效果最好但资源消耗大。
- LoRA 微调:只训练少量新增参数,适合显存不足的场景(如消费级 GPU)。
- 数据集格式:需符合 Alpaca/ShareGPT 规范,确保模型能理解“指令-回答”结构。
四、实用技巧
- 显存不足?:
- 降低
per_device_train_batch_size
(批量大小)。 - 使用
--fp16
启用混合精度训练。
- 降低
- 想加速训练?:
- 启用多 GPU 分布式训练(需配置
CUDA_VISIBLE_DEVICES
)。
- 启用多 GPU 分布式训练(需配置
- 数据不够?:
- 用
data_augmentation
工具增强数据(如回译、同义替换)。
- 用
五、典型应用场景
- 定制对话机器人:
- 微调模型学会企业专属知识库,回答客服问题。
- 文案生成:
- 训练模型按特定风格写小红书文案、广告语。
- 代码辅助:
- 微调模型理解代码注释,自动生成代码片段。
通过 LLaMA-Factory,你可以像“拼乐高”一样快速改造大模型,无需从零开始训练。