1. 项目背景与目标
LLaMA-Factory 是一个整合主流高效训练与微调技术的框架,支持主流开源大模型(如 LLaMA、Qwen、Baichuan 等),提供便捷的接口和工作台,降低大模型微调门槛。
2. 流程概览
2.1 前置准备
硬件与驱动支持
确保硬件环境满足需求(如 RTX 3090/4090)。
- 使用
nvidia-smi
命令验证 GPU 状态。
- 使用
安装 CUDA 和 PyTorch 环境
- 克隆项目代码并安装依赖:
git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python=3.10 conda activate llama_factory cd LLaMA-Factory pip install -e '.[torch,metrics]'
- 校验环境:
import torch torch.cuda.current_device() torch.cuda.get_device_name(0) torch.__version__
- 克隆项目代码并安装依赖:
下载模型文件
- 通过 Huggingface 下载:
git clone https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
- 通过 ModelScope 下载(国内推荐):
git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
- 通过 Huggingface 下载:
验证模型文件
- 运行原始推理代码,确保模型文件和环境正确:
import transformers import torch model_id = "/path/to/Meta-Llama-3-8B-Instruct" pipeline = transformers.pipeline( "text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto", )
- 运行原始推理代码,确保模型文件和环境正确:
2.2 原始模型直接推理
- 使用
webchat
参数启动 Gradio 前端页面:CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat \ --model_name_or_path /path/to/Meta-Llama-3-8B-Instruct \ --template llama3
- 通过浏览器访问:
http://localhost:7860
2.3 自定义数据集构建
数据集格式
LLaMA-Factory 支持 Alpaca 和 ShareGPT 格式,示例如下:
单轮数据格式 (Alpaca):
{ "instruction": "写一个有效的比较语句", "input": "篮球和足球", "output": "篮球和足球都是受欢迎的运动。" }
多轮数据格式 (ShareGPT):
{ "instruction": "谢谢", "output": "不用谢! 很高兴我提供的信息能够帮助到你!", "history": [ ["请你给我写一个面试准备计划", "微软官网找招聘信息..."] ] }
示例:数据集构建流程
系统自带数据集 (identity.json) 修改:
- 使用
sed
进行批量替换:sed -i 's/{{name}}/PonyBot/g' data/identity.json sed -i 's/{{author}}/LLaMA Factory/g' data/identity.json
- 使用
自定义商品文案生成数据集:
- 原始格式:
{ "content": "类型#裤*版型#宽松", "summary": "宽松的阔腿裤...设计感更强。" }
- 步骤:
- 将数据集放置于
data
目录下。 - 修改
data/dataset_info.json
进行注册:"adgen_local": { "path": "data/adgen.json", "columns": {"instruction": "content", "output": "summary"} }
- 将数据集放置于
- 结果: 自定义数据集名称为
adgen_local
,可在训练时调用。
- 原始格式:
2.4 指令微调 (SFT) 训练
使用 LoRA + SFT 技术微调大模型,示例命令:
llamafactory-cli train \
--model_name_or_path /path/to/Meta-Llama-3-8B-Instruct \
--dataset adgen_local \
--template llama3 \
--output_dir ./output
2.5 推理与验证
动态合并 LoRA 微调结果:
llamafactory-cli webchat \ --model_name_or_path /path/to/Meta-Llama-3-8B-Instruct \ --adapter ./output
批量预测与训练效果评估:
llamafactory-cli eval \ --model_name_or_path /path/to/Meta-Llama-3-8B-Instruct \ --dataset adgen_local
2.6 模型合并与导出
合并 LoRA 微调后的模型:
llamafactory-cli export \ --model_name_or_path /path/to/Meta-Llama-3-8B-Instruct \ --adapter ./output \ --output_dir ./merged_model
导出 GGUF 格式,适配 Ollama 推理:
llamafactory-cli export --output_format gguf
2.7 可视化 WebUI 使用
- 启动 WebUI 工作台:
llamafactory-cli webui
- 访问地址:
http://localhost:7860
2.8 API 服务部署与调用
- 启动 API 服务:
llamafactory-cli api \ --model_name_or_path /path/to/Meta-Llama-3-8B-Instruct
- 通过 HTTP 请求调用接口。
总结
LLaMA-Factory 提供了全链路大模型微调与推理的工具链,包括:
- 硬件环境与依赖准备
- 模型下载与验证
- 数据集构建
- LoRA 微调与推理
- 可视化 WebUI 和 API 部署