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
半夜调参时显存又炸了:7B 模型,batch size 给到 2,OOM 日志刷了满屏。缺的不是显卡,而是一条把模型、数据、显存这些事都替你处理好的流水线——SWIFT(ms-swift)就是干这个的:它是魔搭社区推出的大模型微调部署框架,覆盖 600+ 大模型从训练到上线的完整链路。
能力版图:训练、评测、量化、部署一张表
SWIFT 做的事不止"微调":预训练、SFT、偏好对齐(DPO/KTO)、GRPO 族强化学习、评测、量化、部署,都收在同一条swift命令行下。文本侧覆盖 Qwen3、DeepSeek、GLM、Llama4 等 600+ 模型,多模态侧有 Qwen3-VL、InternVL、Ovis 等 400+ 模型;硬件从消费级 RTX、T4 到 A100/H100、昇腾 NPU 都能跑。单卡 8GB 显存靠 4bit 量化 LoRA 也能训 7B,多机集群有 DeepSpeed ZeRO3、FSDP2 和 Megatron 并行现成入口。一句话:它面向想把模型尽快跑起来、又不想自己写模板和数据预处理胶水代码的人。
不想敲命令的话,swift web-ui提供可视化界面,训练、推理、评测、量化在页面上就能配完。
| 对比维度 | SWIFT | 自写 transformers 脚本 |
|---|---|---|
| 模型覆盖 | 600+ LLM、400+ MLLM,热门模型 Day0 支持 | 依赖模型自身模板,逐个接入 |
| 数据预处理 | 150+ 内置数据集,4 种常见格式自动识别 | 每种数据格式自己写清洗脚本 |
| 显存门槛 | 7B 量化训练约 10GB(官方示例标注) | 取决于你自己接的量化方案 |
| 部署与评测 | vLLM/SGLang 一键部署,EvalScope 评测 | 推理服务和指标计算自己搭 |
上手路径:安装、第一条训练命令、部署上线
安装:pip 一条命令或源码二选一
下面两条路径任选:pip 装稳定版即可上手,想追最新特性就 clone 源码做开发模式安装。
pip install 'ms-swift' -U # 或源码安装(main 分支为最新 4.x) git clone https://gitcode.com/GitHub_Trending/swift1/swift cd swift && pip install -e .⚠️ 模型和数据集默认走 ModelScope 下载,习惯 HuggingFace 生态的加
--use_hf true即可。
第一次训练:一条命令完成 7B 的 LoRA
这条命令一次做完三件事:拉 Qwen2.5-7B 底模、自动下载 500 条中文 alpaca 样本、启动 LoRA 微调(rank 8,注入全部线性层);单张 30 系卡上约 22GB 显存。
swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --tuner_type lora \ --lora_rank 8 --lora_alpha 32 --target_modules all-linear \ --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \ --learning_rate 1e-4 --num_train_epochs 1 \ --per_device_train_batch_size 1 --gradient_accumulation_steps 16 \ --max_length 2048 --output_dir output训练完,一条命令部署成 vLLM 服务
checkpoint 目录里带着 args.json,推理时不用重复指定模型和 system 提示;要起常驻服务则把 LoRA 合并后用 deploy 启动。
# 交互式验证:直接指向 checkpoint swift infer --adapters output/v0-xxx/checkpoint-xxx --infer_backend vllm # 合并后用 vLLM 起 OpenAI 兼容服务 swift deploy --model output/merged-model \ --infer_backend vllm --served_model_name demo深度体验:GRPO、分布式与量化
GRPO 强化学习:vLLM 与训练同卡跑
GRPO 是 SWIFT RLHF 里的核心模块:模型先用 vLLM 并行采样一组回答,再按组内相对优势计算策略梯度,奖励函数决定哪条路线更优。框架内置 GRPO、DAPO、GSPO、SAPO、RLOO、Reinforce++ 一整族算法,用--rlhf_type切换,奖励函数还能插插件扩展。
下面的例子让 vLLM 和训练挤在同一批 GPU 上(colocate 模式),采样不用单独申请推理集群:
swift rlhf \ --rlhf_type grpo \ --model Qwen/Qwen2.5-VL-7B-Instruct \ --use_vllm true --vllm_mode colocate \ --vllm_gpu_memory_utilization 0.5 \ --reward_funcs accuracy format \ --num_generations 8 --max_completion_length 1024 \ --learning_rate 1e-6它解决的实际麻烦:朴素 RLHF 实现要单独部署推理集群、手动在训练与推理间同步权重,这里全被use_vllm的同卡/服务模式收走了。更多配方看 examples/train/grpo/ 和 GRPO 最佳实践。
显存不够:DeepSpeed、FSDP2 与量化训练
单卡装不下时,仓库里现成的 DeepSpeed ZeRO2/ZeRO3 和 FSDP2 配置加一行参数就能用;大 MoE 模型可以切到 Megatron 入口,TP/PP/EP 并行直接可用。7B 级别想再省显存,量化训练更现实——4bit 量化加 LoRA,官方示例标注 10GB 就能跑起来。
# 一行接入 ZeRO3 swift sft ... --deepspeed swift/config/zero3.json # 4bit 量化 LoRA(约10GB显存) swift sft --model Qwen/Qwen2.5-7B-Instruct \ --tuner_type lora --quant_method hqq --quant_bits 4 \ --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \ --learning_rate 1e-4 --max_length 2048端到端案例:电商商品描述改写
输入是商品标题加原始参数描述,输出是符合平台规范的营销文案。全程三步:先把历史运营数据整理成 messages 格式 jsonl,再 LoRA 微调,最后合并权重上线。
{"messages": [{"role": "user", "content": "改写:XX保温杯,316不锈钢,500ml"}, {"role": "assistant", "content": "316不锈钢内胆,500ml黄金容量……"}]}swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --tuner_type lora --lora_rank 8 --lora_alpha 32 \ --dataset ./rewrite.jsonl \ --num_train_epochs 3 --learning_rate 2e-4 \ --max_length 1024 --output_dir output/rewrite swift deploy --model output/rewrite-merged \ --infer_backend vllm --served_model_name rewrite训完业务后台调http://localhost:8000/v1/chat/completions传入原始标题,模型返回的文案直接进人工审核队列。相比"提示词工程加大模型 API",这套方案风格稳定、边际成本几乎为零,还不用把商品数据外发。
选型与避坑:新手最常问的四个问题
Q:单张 8GB 显存的卡,能训 7B 吗?能。LoRA 加 4bit 量化(如--quant_method hqq --quant_bits 4),官方示例 7B 约 10GB 跑通;8GB 就把--max_length调小、batch 设 1。
Q:和自己写 transformers 脚本比,实际省在哪?省在不用为每个模型手写聊天模板、数据预处理和评测胶水代码,600+ 模型统一走一个 sft 入口,少掉的是整整一周的接线工作。
Q:多机多卡怎么扩?单机多卡NPROC_PER_NODE=4即可,多机再配NNODES/NODE_RANK;ZeRO3、FSDP2 配置在 swift/config/ 里现成。
Q:喂自己的数据麻烦吗?messages、sharegpt、alpaca、query-response 四种格式自动识别,--dataset直接指向 jsonl/csv 路径,列名对不上用--columns转换。
如果只记一条建议:先拿 500 条样本试跑一轮再上全量,十分钟的运行能提前暴露九成配置问题。
如果需求是把现成模型微调进业务场景并尽快上线,SWIFT 是当前接线最少的一条路。下一步:把仓库 clone 下来,用examples/train/lora_sft.sh把 7B LoRA 示例从头到尾完整跑一遍。
【免费下载链接】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),仅供参考