ms-swift:支持LoRA/QLoRA轻量微调,7B模型仅需9GB显存
ms-swift支持LoRA/QLoRA轻量微调7B模型仅需9GB显存1. 为什么选择ms-swift进行大模型微调在当今大模型技术快速发展的背景下如何高效地进行模型微调成为了许多开发者和研究者的核心需求。ms-swift作为魔搭社区提供的大模型与多模态微调框架凭借其轻量化和高效的特点正在成为越来越多人的首选工具。ms-swift最突出的优势在于其极低的资源需求。通过LoRA/QLoRA等轻量微调技术仅需9GB显存即可完成7B规模大模型的微调训练。这一特性使得普通开发者也能在消费级GPU如RTX 3090上开展大模型研究工作大大降低了技术门槛。除了资源效率外ms-swift还具备以下核心优势广泛的模型支持覆盖600纯文本大模型和300多模态模型包括Qwen3、InternLM3、GLM4.5、Mistral等热门模型全流程支持从训练、推理到评测、量化与部署提供完整的大模型开发生命周期支持先进的训练技术集成Megatron并行技术、GRPO算法族强化学习等前沿方法灵活的训练方式支持全参数训练、LoRA、QLoRA等多种微调策略2. 快速上手10分钟完成7B模型微调2.1 环境准备与安装ms-swift提供了便捷的Docker镜像可以快速搭建开发环境docker pull modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.4.0-py310-torch2.6.0-vllm0.8.5.post1-modelscope1.27.1-swift3.5.3 docker run -it --name qwenvl --networkhost -v /data:/data -v /nfs/lide01/shiwei:/nfs --gpus all --shm-size 32G modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.4.0-py310-torch2.6.0-vllm0.8.5.post1-modelscope1.27.1-swift3.5.3 /bin/bash2.2 单卡3090上的LoRA微调实战以下是在单卡RTX 309022GB显存上对Qwen2.5-7B-Instruct模型进行自我认知微调的完整命令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-robot关键参数说明--train_type lora指定使用LoRA微调方法--lora_rank 8设置LoRA的秩为8--gradient_accumulation_steps 16通过梯度累积减少显存占用--torch_dtype bfloat16使用bfloat16精度节省显存3. 数据准备与格式要求3.1 标准数据格式ms-swift支持多种数据格式对于对话任务推荐使用以下JSON格式{ id: sample_0001, messages: [ { role: user, content: [ {type: image, image: /path/to/img_001.jpg}, {type: text, text: 图中有哪些动物请用中文回答。} ] }, { role: assistant, content: [ {type: text, text: 有两只长颈鹿和一只斑马。} ] } ] }3.2 数据格式转换如果你的数据是其他格式可以使用Python脚本进行转换。以下是将self-llm格式转换为ms-swift格式的示例代码import json import os def convert_format(input_file, output_file): with open(input_file, r, encodingutf-8) as f: data json.load(f) converted_data [] for idx, item in enumerate(data, 1): new_item { id: fsample_{idx:04d}, messages: [] } for conversation in item[conversations]: role conversation[role] value conversation[value] if role user: content [ {type: image, image: value}, {type: text, text: 请识别图片中的公式并用LaTex格式返回。} ] else: content [ {type: text, text: value} ] new_item[messages].append({ role: role, content: content }) converted_data.append(new_item) with open(output_file, w, encodingutf-8) as f: json.dump(converted_data, f, ensure_asciiFalse, indent2) print(f转换完成共处理{len(converted_data)}条数据已保存至{output_file}) if __name__ __main__: input_json latex_ocr_val.json output_json latex_ocr_val_swift.json if os.path.exists(input_json): convert_format(input_json, output_json) else: print(f错误输入文件{input_json}不存在)4. 多模态模型微调实战ms-swift同样支持多模态模型的轻量微调。以下是使用Qwen2.5-VL-3B-Instruct模型进行LaTex OCR任务的微调命令swift sft \ --model ./Qwen2.5-VL-3B-Instruct \ --dataset latex_ocr_train_swift.json \ --output_dir ./outputs/qwen25vl_lora \ --max_pixels 518400 \ --lora_rank 64 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 16 \ --fp16 false \ --num_train_epochs 3 \ --learning_rate 1e-4 \ --save_steps 500 \ --logging_steps 20关键参数说明--max_pixels 518400控制单图分辨率上限防止显存溢出--lora_rank 64多模态任务通常需要更高的LoRA秩--gradient_accumulation_steps 16通过梯度累积平衡显存占用与训练效率5. 模型推理与部署5.1 基础推理训练完成后可以使用以下命令进行交互式推理CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --temperature 0 \ --max_new_tokens 20485.2 高性能推理对于生产环境推荐使用vLLM进行加速推理CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --merge_lora true \ --infer_backend vllm \ --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 20485.3 模型部署将微调后的模型部署为服务CUDA_VISIBLE_DEVICES0 swift deploy \ --model Qwen/Qwen2.5-7B-Instruct \ --infer_backend vllm6. 总结与进阶建议ms-swift作为一款轻量化的大模型微调框架通过LoRA/QLoRA等技术显著降低了资源需求使7B模型的微调仅需9GB显存。本文介绍了从环境搭建、数据准备到模型微调、推理部署的完整流程。对于希望进一步探索的开发者建议尝试不同微调方法除了LoRA还可以实验QLoRA、DoRA等更高效的微调策略优化训练参数调整学习率、批次大小等超参数以获得更好效果探索多模态应用利用ms-swift强大的多模态支持开发创新应用参与社区贡献ms-swift是开源项目欢迎贡献代码和分享使用经验获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。