LLaMA-Factory 入门(一):Mac 搭建大模型微调部署的本地交互服务流程

在 Mac 上搭建大模型微调部署的本地交互服务,需要完成一系列环境配置和工具安装。以下是详细的操作流程。

环境准备

确保 Mac 系统版本为 macOS 10.15 或更高,并安装 Xcode 命令行工具。打开终端,运行以下命令安装 Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装 Python 3.10 或更高版本:

brew install python

验证 Python 安装是否成功:

python3 --version

安装依赖库

创建一个虚拟环境以隔离依赖:

python3 -m venv llama-env
source llama-env/bin/activate

安装 PyTorch 和相关依赖:

pip3 install torch torchvision torchaudio
pip3 install transformers datasets accelerate sentencepiece

下载 LLaMA-Factory

克隆 LLaMA-Factory 仓库到本地:

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

安装项目依赖:

pip3 install -r requirements.txt

模型准备

下载所需的大模型权重文件(如 LLaMA-7B),并将其放置在 models 目录下。确保模型文件结构符合以下格式:

models/
└── llama-7b/
    ├── config.json
    ├── pytorch_model.bin
    └── tokenizer.model

配置微调参数

修改 train.sh 脚本以配置微调参数。以下是一个示例配置:

python src/train_bash.py \
    --model_name_or_path models/llama-7b \
    --dataset_dir data \
    --output_dir output \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 8 \
    --num_train_epochs 3 \
    --save_steps 500 \
    --logging_steps 10 \
    --learning_rate 2e-5 \
    --fp16

启动微调任务

运行微调脚本:

bash train.sh

微调过程会显示训练进度和损失值。完成后,模型权重将保存在 output 目录中。

部署本地交互服务

使用 FastAPI 部署本地交互服务。创建一个名为 app.py 的文件,内容如下:

from fastapi import FastAPI
from transformers import AutoModelForCausalLM, AutoTokenizer

app = FastAPI()
model_path = "output"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path)

@app.post("/generate")
def generate_text(prompt: str):
    inputs = tokenizer(prompt, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=50)
    return {"response": tokenizer.decode(outputs[0], skip_special_tokens=True)}

安装 FastAPI 和 Uvicorn:

pip3 install fastapi uvicorn

启动服务:

uvicorn app:app --reload

服务默认运行在 http://127.0.0.1:8000。可以通过以下命令测试接口:

curl -X POST "http://127.0.0.1:8000/generate" -H "Content-Type: application/json" -d '{"prompt":"Hello, how are you?"}'

优化与调试

如果遇到性能问题,可以尝试以下优化措施:

  • 启用量化以减少显存占用:
    model = AutoModelForCausalLM.from_pretrained(model_path, load_in_8bit=True)
    

  • 调整生成参数以控制输出长度和质量:
    outputs = model.generate(**inputs, max_length=100, num_beams=5, early_stopping=True)
    

通过以上步骤,可以在 Mac 上完成大模型微调部署的本地交互服务搭建。后续可根据需求进一步扩展功能或优化性能。

更多推荐