LLaMA-Factory 快速入门:Mac 下大模型微调与部署的零门槛流程

环境准备与工具安装

确保系统为 macOS 10.15 或更高版本,配备至少 16GB 内存与 20GB 可用磁盘空间。推荐使用 Python 3.8 或以上版本,通过 Homebrew 安装依赖工具:

brew install cmake git-lfs

克隆 LLaMA-Factory 仓库并安装 Python 依赖:

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -r requirements.txt

模型下载与配置

从 Hugging Face 下载基础模型(如 Llama-2-7b-hf),需提前申请访问权限。将模型权重放置在 ./models 目录下,修改 configs/model_config.py 中的路径配置:

model_path = "./models/Llama-2-7b-hf"

数据准备与格式转换

准备训练数据为 JSON 格式,每条数据包含 instruction(指令)、input(输入)和 output(输出)。示例数据文件 data/train.json

[
  {"instruction": "翻译为中文", "input": "Hello, world!", "output": "你好,世界!"}
]

使用内置脚本转换为训练集:

python scripts/prepare_data.py --data_path data/train.json

启动微调任务

运行以下命令启动 LoRA 微调(低资源适配):

python src/train_bash.py \
    --model_name_or_path ./models/Llama-2-7b-hf \
    --dataset train_data \
    --lora_rank 8 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 4 \
    --num_train_epochs 3

关键参数说明:

  • lora_rank: LoRA 矩阵的秩,影响微调参数量。
  • per_device_train_batch_size: 根据显存调整批次大小。
模型测试与交互

微调完成后,合并 LoRA 权重并启动交互式测试:

python src/export_model.py \
    --model_name_or_path ./models/Llama-2-7b-hf \
    --adapter_name_or_path ./outputs/checkpoint-final

python src/cli_demo.py --model_name_or_path ./merged_model

本地化部署

使用 Gradio 快速构建 Web 界面:

from transformers import AutoModelForCausalLM, AutoTokenizer
import gradio as gr

model = AutoModelForCausalLM.from_pretrained("./merged_model")
tokenizer = AutoTokenizer.from_pretrained("./merged_model")

def predict(text):
    inputs = tokenizer(text, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=100)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

gr.Interface(fn=predict, inputs="textbox", outputs="text").launch()

保存为 app.py 后运行 python app.py,即可通过浏览器访问本地服务。

性能优化建议
  • 量化部署:使用 bitsandbytes 进行 4-bit 量化,减少显存占用:
    model = AutoModelForCausalLM.from_pretrained("./merged_model", load_in_4bit=True)
    

  • 缓存管理:通过 vllm 加速推理:
    pip install vllm
    python -m vllm.entrypoints.api_server --model ./merged_model
    

常见问题排查
  • 显存不足:降低批次大小或启用梯度检查点:
    python src/train_bash.py --gradient_checkpointing
    

  • 分词错误:检查 tokenizer_config.json 是否与模型匹配。

通过上述流程,可在 Mac 环境下高效完成从微调到部署的全流程,无需复杂配置即可实现定制化模型应用。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐