LLaMA-Factory 入门(一):Mac 搭建大模型微调部署的本地交互服务流程
·
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 上完成大模型微调部署的本地交互服务搭建。后续可根据需求进一步扩展功能或优化性能。
更多推荐
所有评论(0)