LoRA 权重合并
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
# 加载带 LoRA 的模型
model = AutoPeftModelForCausalLM.from_pretrained(
"./lora-output",
torch_dtype="bfloat16"
)
tokenizer = AutoTokenizer.from_pretrained("./lora-output")
# 将 LoRA 权重合并进基座模型
merged_model = model.merge_and_unload()
# 保存合并后的完整模型
merged_model.save_pretrained("./merged-model", safe_serialization=True)
tokenizer.save_pretrained("./merged-model")
量化格式对比
| 格式 | 来源 | 精度损失 | 推理速度 | 适用场景 |
|---|---|---|---|---|
| GGUF (Q4_K_M) | llama.cpp | 低 | CPU/GPU 均可 | 本地部署(Ollama) |
| GGUF (Q8_0) | llama.cpp | 极低 | 中等 | 高精度本地推理 |
| AWQ (4-bit) | MIT Han Lab | 极低 | 很快(GPU) | GPU 服务器部署 |
| GPTQ (4-bit) | IST Austria | 低 | 快(GPU) | GPU 服务器部署 |
| BF16 原始 | — | 无 | 最快(大 GPU) | 高精度 API 服务 |
转换为 GGUF(Ollama 本地部署)
# 安装 llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && pip install -r requirements.txt
# 转换为 GGUF 格式
python convert_hf_to_gguf.py \
--outfile my-model-q4.gguf \
--outtype q4_k_m \
./merged-model
# 用 Ollama 运行
cat > Modelfile <<EOF
FROM ./my-model-q4.gguf
SYSTEM "你是专业的代码助手..."
EOF
ollama create my-finetune -f Modelfile
ollama run my-finetune
AWQ 量化(GPU 高性能部署)
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model = AutoAWQForCausalLM.from_pretrained("./merged-model")
tokenizer = AutoTokenizer.from_pretrained("./merged-model")
# 量化(需要 128 条校准数据)
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
model.quantize(tokenizer, quant_config=quant_config)
model.save_quantized("./my-model-awq")
# 用 vLLM 部署 AWQ 模型
# vllm serve ./my-model-awq --quantization awq --max-model-len 4096
vLLM 高性能服务部署
# 安装 vLLM
pip install vllm
# 启动 OpenAI 兼容服务
vllm serve ./merged-model \
--served-model-name my-finetune \
--max-model-len 4096 \
--gpu-memory-utilization 0.9 \
--tensor-parallel-size 1 \
--port 8000
# 调用(兼容 OpenAI 格式)
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "my-finetune", "messages": [{"role": "user", "content": "你好"}]}'
部署选型建议
个人或团队内部使用 → GGUF + Ollama(零运维成本)。生产 API 服务 → AWQ/GPTQ + vLLM(高吞吐)。研究/高精度场景 → BF16 原始权重 + vLLM。
本章小结
LoRA 合并 → 选择量化格式 → 部署为服务。GGUF+Ollama 适合本地,AWQ+vLLM 适合生产 API。下一章用完整端到端项目串联所有知识。