完整的端到端解决方案,从模型训练到生产部署
使用 ms-swift 框架进行 LoRA 微调,支持多卡训练,大幅降低资源需求
支持 int4 量化,模型大小从 15.8G 压缩至 4.2G,推理速度提升
通过 Ollama 实现一键部署,支持跨平台运行,数据完全本地化
使用 llama.cpp 将模型转换为 GGUF 格式,兼容性更强
支持自定义数据集、调整训练参数,满足不同应用场景需求
支持推送到 Ollama 模型库,方便分享和协作
六大步骤完成从模型训练到部署的全流程
下载 Qwen1.5-7B-chat 基座模型,为微调做准备。
git lfs clone https://www.modelscope.cn/qwen/qwen1.5-7b-chat.git
使用 ms-swift 框架进行 LoRA 微调,支持自定义数据集。
swift sft --model_type qwen1half-7b-chat \ --dataset AI-ModelScope/ruozhiba \ --sft_type lora --num_train_epochs 3
将训练好的 LoRA 权重合并到基础模型中。
swift export --ckpt_dir output/checkpoint-16461 --merge_lora true
使用 llama.cpp 将模型转换为 GGUF 格式并量化。
python convert_hf_to_gguf.py checkpoint-16461-merged --outtype f16./llama-quantize input.gguf output.gguf q4_0
创建 Modelfile 并使用 Ollama 构建模型。
echo "FROM model.gguf" > Modelfileollama create samge/qwen1half-7b-chat-ruozhiba:int4 -f Modelfile
本地测试模型,然后推送到 Ollama 模型库。
ollama run samge/qwen1half-7b-chat-ruozhiba:int4ollama push samge/qwen1half-7b-chat-ruozhiba:int4
关于模型微调和部署的常见疑问解答
LoRA (Low-Rank Adaptation) 微调只训练少量额外参数,大大降低了显存需求和训练时间。对于 7B 参数的模型,LoRA 微调只需要几张 GPU 就可以完成,而全量微调需要数十张 GPU。同时,LoRA 在很多任务上能达到与全量微调相当的效果。
int4 量化通常会有 1-3% 的精度损失,但对于大多数实际应用场景影响很小。通过使用 Q4_0 量化方法,可以在模型大小和性能之间取得很好的平衡。如果对精度要求很高,可以考虑使用 int8 或 f16 量化。
ms-swift 支持 JSONL 和 CSV 格式的自定义数据集。数据集需要包含 instruction、input、output 等字段。具体格式要求可以参考 ms-swift 官方文档中关于自定义数据集的说明。
Ollama 支持 Windows、macOS 和 Linux 平台。量化后的模型在普通家用电脑上即可运行,不需要专门的 GPU。对于 int4 量化的 7B 模型,通常需要 8-16GB 内存即可流畅运行。