ms-swift微调框架实战10分钟搞定Qwen2.5-7B模型LoRA微调与合并1. 前言在当今大模型技术快速发展的背景下如何高效地对大型语言模型进行微调成为了许多开发者和研究者的关注焦点。本文将介绍如何使用ms-swift框架在单卡环境下快速完成Qwen2.5-7B模型的LoRA微调与权重合并。ms-swift是魔搭社区提供的大模型微调部署框架支持600纯文本大模型和300多模态大模型的训练、推理、评测、量化与部署全流程。通过本文的实战指南您将掌握使用ms-swift进行LoRA微调的基本流程微调后模型的权重合并方法实际部署和推理的技巧2. 环境准备2.1 硬件要求GPU: NVIDIA Tesla V100 32GB或同等性能显卡显存: 至少22GB可用显存CUDA版本: 12.2或更高2.2 软件安装首先创建并激活conda环境conda create --name swift python3.10 conda activate swift然后安装ms-swift框架pip install ms-swift[all] -U -i https://pypi.tuna.tsinghua.edu.cn/simple2.3 模型下载从ModelScope或Hugging Face下载Qwen2.5-7B-Instruct模型# ModelScope下载 git clone https://www.modelscope.cn/qwen/Qwen2.5-7B-Instruct.git # 或Hugging Face下载 git lfs install git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct3. LoRA微调实战3.1 微调命令使用以下命令启动LoRA微调CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --dataset AI-ModelScope/alpaca-gpt4-data-zh#500 \ AI-ModelScope/alpaca-gpt4-data-en#500 \ swift/self-cognition#500 \ --torch_dtype bfloat16 \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --lora_alpha 32 \ --target_modules all-linear \ --gradient_accumulation_steps 16 \ --eval_steps 50 \ --save_steps 50 \ --save_total_limit 2 \ --logging_steps 5 \ --max_length 2048 \ --output_dir output \ --system You are a helpful assistant. \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --model_author swift \ --model_name swift-robot3.2 参数说明--model: 指定基础模型路径--train_type lora: 使用LoRA微调方法--dataset: 使用的训练数据集--lora_rank和--lora_alpha: LoRA相关参数--target_modules all-linear: 对所有线性层应用LoRA--gradient_accumulation_steps 16: 梯度累积步数有效增大batch size3.3 微调过程监控微调过程中会输出类似以下日志Train: 100%|██████████| 873/873 [09:3400:00, 1.69it/s] {eval_loss: nan, eval_acc: 0.023, eval_runtime: 1.64, epoch: 0.92}训练完成后模型权重会保存在output目录下。4. 模型权重合并4.1 推理时合并在推理时直接合并LoRA权重CUDA_VISIBLE_DEVICES0 \ swift infer \ --ckpt_dir output/vx-xxx/checkpoint-xxx \ --merge_lora true \ --infer_backend vllm \ --max_model_len 8192此方法会在内存中合并权重不会保存合并后的模型。4.2 单独合并并保存如果需要保存合并后的模型使用export命令swift export \ --ckpt_dir output/vx-xxx/checkpoint-xxx \ --merge_lora true合并后的模型会保存在checkpoint-xxx-merged目录中。4.3 合并过程解析合并过程主要完成以下工作加载基础模型和LoRA适配器权重将LoRA权重合并到基础模型中保存合并后的完整模型合并后的模型目录包含config.json: 模型配置文件model.safetensors: 合并后的模型权重generation_config.json: 生成配置5. 模型部署与推理5.1 使用vLLM加速推理安装vLLM依赖pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple启动推理服务CUDA_VISIBLE_DEVICES0 \ swift deploy \ --model output/vx-xxx/checkpoint-xxx-merged \ --infer_backend vllm5.2 Web界面交互启动Web UI:swift web-ui \ --model output/vx-xxx/checkpoint-xxx-merged5.3 Python API调用from swift.llm import PtEngine engine PtEngine(model_id_or_pathoutput/vx-xxx/checkpoint-xxx-merged) response engine.chat(你好你是谁) print(response)6. 总结通过本文的实战指南我们完成了使用ms-swift框架对Qwen2.5-7B模型进行LoRA微调将微调后的LoRA权重与基础模型合并部署合并后的模型并进行推理ms-swift框架的优势在于支持多种微调方法(LoRA/QLoRA/DoRA等)提供从训练到部署的全流程支持优化显存使用单卡即可完成7B模型微调支持多种推理后端(vLLM/LMDeploy等)对于想要尝试大模型微调的开发者ms-swift提供了简单高效的解决方案大大降低了技术门槛。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。