SWIFT大模型微调指南:单卡跑通600+模型
【免费下载链接】swiftUse PEFT or Full-parameter to CPT/SFT/DPO/GRPO 600+ LLMs (Qwen3.6, DeepSeek-V4, GLM-5.1, InternLM3, Llama4, ...) and 300+ MLLMs (Qwen3-VL, Qwen3-Omni, InternVL3.5, Ovis2.5, GLM4.5v, Gemma4, Llava, Phi4, ...) (AAAI 2025).项目地址: https://gitcode.com/GitHub_Trending/swift1/swift
你手头有一张24G显存的显卡,想把7B模型按业务需求调一版。SWIFT(ms-swift)是魔搭社区的大模型微调框架,它替你解决三件事:自动下载模型和数据、把训练参数收敛成一条命令、训练完直接接上推理与部署。框架覆盖600多个文本模型和400多个多模态模型,单卡LoRA微调7B模型最低约13GB显存。
单卡跑通第一个SWIFT微调任务
安装一条命令:
pip install ms-swift -U需要源码版本时,先git clone https://gitcode.com/GitHub_Trending/swift1/swift,再执行pip install -e .。
装完直接跑第一条训练命令。这是官方文档里的10分钟示例:单卡3090对Qwen3-4B做LoRA微调,显存占用约13GB:
CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model Qwen/Qwen3-4B-Instruct-2507 \ --tuner_type lora \ --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \ --torch_dtype bfloat16 \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --max_length 2048 \ --output_dir output几个参数:--tuner_type lora表示只训练低秩矩阵,不动原始权重;#500表示从内置数据集采样500条,适合先验证流程;模型默认从ModelScope下载,换用HuggingFace加--use_hf true。
训练时终端会持续打印 loss、学习率、显存占用和训练速度,判断是否正常就看这几列:
能力拆解:四个最常用的部分
显存不够时的LoRA与QLoRA轻量微调
能做什么:LoRA把7B模型的训练显存压到13GB级别;QLoRA再把权重量化到4位,8G显存的显卡也能跑。怎么用:加--tuner_type lora即可开启LoRA;QLoRA只需多两个参数:
swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --quant_method bnb \ --quant_bits 4 \ --tuner_type lora \ --per_device_train_batch_size 1适合谁:消费级显卡(8–24G)上做参数高效微调的人。完整示例在 examples/train/qlora/。
GRPO强化学习:SFT之后的对齐训练
能做什么:内置GRPO、DAPO、GSPO、SAPO等GRPO族算法,用规则或奖励模型给输出打分,把模型往"做对题"的方向推,常用于数学、代码和Agent任务。怎么用:入口命令是swift rlhf --rlhf_type grpo,examples/train/grpo/ 下有按场景分好的脚本可直接抄。适合谁:已经做完SFT、想进一步提升推理准确率的人。
Web UI:不开终端的训练面板
能做什么:在界面上选模型、数据集、超参数,启动训练、推理、导出、评测四类任务,多卡机器上可并行开多个任务。怎么用:终端执行swift web-ui --lang zh,然后打开浏览器即可。适合谁:不熟悉命令行的人,或需要同时管理多个实验的人。
量化导出与部署上线
能做什么:训练完用swift export导出AWQ、GPTQ等4位量化权重,再用swift deploy配vLLM或SGLang起OpenAI兼容服务,从"模型调好了"走到"接口可调了"。怎么用:参考 examples/deploy/ 和 examples/export/ 里的脚本。适合谁:要把微调结果交给业务方调用的最后一步。
一个真实需求:24G单卡SWIFT微调客服问答
场景:Qwen2.5-7B-Instruct,自有客服问答jsonl约5000条,硬件单张RTX 4090(24G),目标是让模型回复贴合客服口径,训练完推到预发环境验证。关键命令片段:
swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset ./data/customer-service.jsonl \ --tuner_type lora \ --lora_rank 8 \ --num_train_epochs 3 \ --learning_rate 2e-4 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 8 \ --output_dir output/customer-service| 参数 | 建议值 | 理由 |
|---|---|---|
--lora_rank | 8 | 7B模型上8足够,效果不够再升到16 |
--learning_rate | 2e-4 | LoRA常用区间1e-4到5e-4 |
--gradient_accumulation_steps | 8 | 显存只放得下batch 1时,用累积等效到batch 8 |
--num_train_epochs | 3 | 5000条数据偏少,超过5轮容易过拟合 |
训练完先跑swift infer带上新adapter对话验证,没问题再swift deploy --infer_backend vllm起服务。
常见坑:4个高频问题
Q1:7B模型LoRA训练OOM?结论:上4位量化,显存直接降一个量级。修复:加--quant_method bnb --quant_bits 4。
Q2:加了量化还紧张?结论:开梯度检查点,用约30%的训练速度换显存。修复:加--gradient_checkpointing true。
Q3:想先花几分钟验证流程再正式跑?结论:限制步数即可。修复:加--max_steps 10,确认数据加载和保存都正常。
Q4:模型或数据集下载失败?结论:默认走ModelScope源,网络不通就换源。修复:加--use_hf true。
到这里,安装、训练、量化、部署四个环节各有一条最短路径。SWIFT大模型微调的完整参数清单见 docs/README.md,按模型分类的现成脚本在 examples/。建议先用上面的10分钟示例跑通第一个任务,再换成你自己的模型和数据。
【免费下载链接】swiftUse PEFT or Full-parameter to CPT/SFT/DPO/GRPO 600+ LLMs (Qwen3.6, DeepSeek-V4, GLM-5.1, InternLM3, Llama4, ...) and 300+ MLLMs (Qwen3-VL, Qwen3-Omni, InternVL3.5, Ovis2.5, GLM4.5v, Gemma4, Llava, Phi4, ...) (AAAI 2025).项目地址: https://gitcode.com/GitHub_Trending/swift1/swift
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考