Loading...

文章背景图

Swift:魔搭大模型微调框架使用指南

2026-10-27
0
- 字
- 分钟
|

SWIFT(ms-swift):魔搭社区的大模型与多模态微调部署框架

SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning,可扩展轻量微调基础设施)是魔搭社区(ModelScope)开源的大模型与多模态大模型训练、推理、评测、量化与部署一体化框架,GitHub Star 数约 1.6 万,采用 Apache-2.0 协议。它支持 600+ 纯文本大模型与 400+ 多模态大模型的全流程训练,热门模型 Day0 支持,是目前国内生态最完整的大模型微调工具链之一。与 LLaMA Factory 等同类工具相比,ms-swift 的差异化在于:它不仅提供 transformers 后端的轻量微调,还内置了 Megatron 并行(TP/PP/CP/EP)、丰富的 GRPO 族强化学习算法、多模态 packing、vLLM/SGLang/LMDeploy 推理加速,以及从训练到部署的完整闭环。本文基于官方中文 README 完整整理,适合希望在单卡或多卡上微调 Qwen/DeepSeek/GLM 等国产模型、或做多模态大模型对齐的研究者与工程师。阅读后你应该能判断自己的硬件能跑哪类模型、该用 LoRA 还是全参数、SFT/GRPO/DPO 各自对应什么命令,以及如何把训练完的模型部署成 OpenAI 兼容接口,再决定是从单卡 LoRA 起步还是直接上 Megatron 多卡集群跑 MoE 全参数训练。

项目背景

ms-swift 由魔搭社区团队开发,论文 SWIFT: A Scalable lightWeight Infrastructure for Fine-Tuning 已于 2025 年被 AAAI 接收。项目最初面向「轻量微调」(LoRA/QLoRA 等),随着大模型训练范式从 SFT 扩展到 RLHF、GRPO、多模态、Megatron 并行,ms-swift 演进为覆盖预训练、指令微调、人类对齐、强化学习、Embedding/Reranker、推理、评测、量化、部署的全链路框架。2026 年 3 月发布 v4.0 大版本,支持 Qwen3、Qwen3.5、InternLM3、GLM4.5、DeepSeek-R1、Llama4 等主流模型,多模态侧覆盖 Qwen3-VL、Qwen3-Omni、Kimi-K3、InternVL3.5、MiniCPM-V-4、Ovis2.5、GLM4.5-V、DeepSeek-VL2 等。项目代码托管在 GitHub,模型与数据集默认从魔搭社区下载,也可通过 --use_hf true 切到 HuggingFace。对国内用户来说,默认走魔搭的下载速度通常更稳定。

核心特性

  • 模型类型:支持 600+ 纯文本大模型、400+ 多模态大模型以及 All-to-All 全模态模型训练到部署全流程,热门模型 Day0 支持。这意味着新模型发布后往往几天内就能在 ms-swift 里找到对应示例;
  • 数据集类型:内置 150+ 预训练、微调、人类对齐、多模态等各种任务数据集,并支持自定义数据集,用户只需准备数据集即可一键训练;
  • 硬件支持:支持 NVIDIA GPU(A100/H100/RTX 系列等,CUDA)、AMD GPU(MI300 系列等,ROCm)、国产硬件(Ascend NPU、MetaX GPU、摩尔线程 GPU(MUSA))、Apple MPS 与 CPU,覆盖面在同类框架中最广;
  • 轻量训练:支持 LoRA、QLoRA、DoRA、LoRA+、LLaMAPro、LongLoRA、LoRA-GA、ReFT、RS-LoRA、Adapter、LISA 等轻量微调方式,几乎涵盖了学术界主流的参数高效微调算法;
  • 量化训练:支持对 BNB、AWQ、GPTQ、AQLM、HQQ、EETQ 量化模型进行训练,7B 模型训练只需 9GB 训练资源;
  • 显存优化:GaLore、Q-Galore、UnSloth、Liger-Kernel、Flash-Attention 2/3 以及 Ulysses 和 Ring-Attention 序列并行技术支持,降低长文本训练显存占用;
  • 分布式训练:支持分布式数据并行(DDP)、device_map 简易模型并行、DeepSpeed ZeRO2/ZeRO3、FSDP/FSDP2 以及 Megatron 等分布式训练技术;
  • 多模态训练:支持多模态 packing 技术提升训练速度 100%+,支持文本、图像、视频和语音混合模态数据训练,支持 vit/aligner/llm 单独控制;
  • Agent 训练:支持 Agent template,准备一套数据集可用于不同模型的训练;
  • 训练任务:支持预训练和指令微调,以及 DPO、GKD、KTO、RM、CPO、SimPO、ORPO 等训练任务,支持 Embedding/Reranker 和序列分类任务;
  • Megatron 并行技术:提供 TP/PP/SP/CP/ETP/EP/VPP 并行策略,显著提升 MoE 模型训练速度。支持 300+ 纯文本大模型和 100+ 多模态大模型的全参数和 LoRA 训练方法;
  • 强化学习:内置丰富 GRPO 族算法,包括 GRPO、DAPO、GSPO、SAPO、CISPO、CHORD、RLOO、Reinforce++ 等,支持同步和异步 vLLM 引擎推理加速,可使用插件拓展奖励函数、多轮推理调度器以及环境;
  • 全链路能力:覆盖训练、推理、评测、量化和部署全流程,不需要在多个工具之间切换;
  • 界面训练:提供使用 Web-UI 界面的方式进行训练、推理、评测、量化,对新手友好;
  • 推理加速:支持 Transformers、vLLM、SGLang 和 LMDeploy 推理加速引擎,并提供 OpenAI 接口,一行命令即可起服务;
  • 模型评测:以 EvalScope 作为评测后端,支持 100+ 评测数据集对纯文本和多模态模型进行评测;
  • 模型量化:支持 AWQ、GPTQ、FP8 和 BNB 的量化导出,导出的模型支持使用 vLLM/SGLang/LMDeploy 推理加速。

环境要求

依赖 范围 推荐
python >=3.10 3.12
cuda cuda12.8/13.0(CPU/NPU/MPS 无需)
torch >=2.0 2.8.0/2.11.0
transformers >=4.33 4.57.6/5.12.1
modelscope >=1.23
datasets >=3.0,<4.8.5 3.6.0/4.8.4
peft >=0.11,<0.21
trl >=0.15,<1.0 0.29.1(RLHF)
deepspeed >=0.19.3,<0.20 0.19.7
vllm >=0.5.1 0.11.0/0.23.0(推理/部署)
sglang >=0.4.6
evalscope >=1.0
gradio 5.32.1(Web-UI)

安装

pip 安装(推荐):

pip install ms-swift -U
# 或使用 uv
pip install uv
uv pip install ms-swift -U --torch-backend=auto

从源码安装:

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
# main 分支为 swift4.x;swift3.x 请 git checkout release/3.12
pip install -e .

用 uv 安装可以更快解决依赖:uv pip install -e . --torch-backend=auto 会自动选择合适的 PyTorch 后端。

更多可选依赖见仓库 requirements/install_all.sh。如果要做 RLHF 实验,还需安装 trl;要做大规模分布式训练,需装 deepspeed;要用 vLLM/SGLang 推理加速,需单独安装对应引擎;Web-UI 依赖 gradio。官方推荐 Python 3.12、PyTorch 2.8/2.11、CUDA 12.8/13.0 组合,新模型对 transformers 版本要求较高,建议按 README 顶部 badge 给出的版本范围安装。

快速开始:10 分钟自我认知微调

官方示例:在单卡 3090 上对 Qwen3-4B-Instruct-2507 进行自我认知微调,约需 13GB 显存。「自我认知」指让模型学会回答「你是谁」,通过混入 swift/self-cognition 数据集并指定 --model_author swift、--model_name swift-robot 来塑造模型身份。

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Qwen/Qwen3-4B-Instruct-2507 \
    --tuner_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 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --gradient_accumulation_steps 16 \
    --max_length 2048 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --model_author swift \
    --model_name swift-robot

要点:--model_author 和 --model_name 仅当数据集包含 swift/self-cognition 时生效;默认从 ModelScope 下载模型与数据集,要切到 HuggingFace 加 --use_hf true;换模型只需改 --model,换数据集只需改 --dataset。这里 #500 表示每个数据集取前 500 条,是快速跑通流程的小数据量设置。

训练完成后用 LoRA 权重推理:

CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

这里 --adapters 指向训练生成的 last checkpoint 文件夹;由于 adapters 目录里包含训练时的 args.json,swift 会自动读取模型名与 system 模板,不需要再手动传 --model;要关闭这个行为加 --load_args false。

合并 LoRA 并用 vLLM 加速推理:

CUDA_VISIBLE_DEVICES=0 \
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 2048

推送到 ModelScope:

CUDA_VISIBLE_DEVICES=0 \
swift export \
    --adapters output/vx-xxx/checkpoint-xxx \
    --push_to_hub true \
    --hub_model_id '<your-model-id>' \
    --hub_token '<your-sdk-token>' \
    --use_hf false

零门槛 Web-UI:执行 swift web-ui 即可在浏览器中完成训练、推理、评测、量化。Python API 也支持,伪代码见官方 notebook。对不熟悉命令行的用户,Web-UI 把模型选择、数据集、超参、输出目录都做成了表单,点一下就能开始训练。

训练到部署全流程示例

预训练(8×A100):

NPROC_PER_NODE=8 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
swift pt \
    --model Qwen/Qwen3-4B-Base \
    --dataset swift/chinese-c4 \
    --streaming true \
    --tuner_type full \
    --deepspeed zero2 \
    --output_dir output \
    --max_steps 10000

预训练用 swift pt 子命令,--streaming true 表示流式加载大语料,避免一次性把数据读进内存;--deepspeed zero2 用 ZeRO2 切分优化器状态。

指令微调(LoRA):

CUDA_VISIBLE_DEVICES=0 swift sft \
    --model Qwen/Qwen3-4B-Instruct-2507 \
    --dataset AI-ModelScope/alpaca-gpt4-data-zh \
    --tuner_type lora \
    --output_dir output

这是最常见的微调入口:--tuner_type lora 启用 LoRA,全参数训练改成 full,QLoRA 改成 qlora。

RLHF(DPO):

CUDA_VISIBLE_DEVICES=0 swift rlhf \
    --rlhf_type dpo \
    --model Qwen/Qwen3-4B-Instruct-2507 \
    --dataset hjh0119/shareAI-Llama3-DPO-zh-en-emoji \
    --tuner_type lora \
    --output_dir output

swift rlhf --rlhf_type 后面接 dpo/kto/cpo/simpo/orpo/rm/ppo/grpo/gkd 等,一行切换偏好对齐算法。

Megatron-SWIFT 加速:

NPROC_PER_NODE=2 CUDA_VISIBLE_DEVICES=0,1 megatron sft \
    --model Qwen/Qwen3-4B-Instruct-2507 \
    --save_safetensors true \
    --dataset AI-ModelScope/alpaca-gpt4-data-zh \
    --tuner_type lora \
    --output_dir output

megatron sft 子命令走 Megatron 并行后端,相比 swift sft 在 MoE 模型上提速显著;Mcore-Bridge 让 Megatron 训练像 transformers 一样简单,不需要学习另一套配置。

GRPO 强化学习(4 卡 + vLLM 协同):

CUDA_VISIBLE_DEVICES=0,1,2,3 NPROC_PER_NODE=4 \
swift rlhf \
    --rlhf_type grpo \
    --model Qwen/Qwen3-4B-Instruct-2507 \
    --tuner_type lora \
    --use_vllm true \
    --vllm_mode colocate \
    --dataset AI-MO/NuminaMath-TIR#10000 \
    --output_dir output

这条命令展示了 ms-swift 的 RL 能力:用 vLLM 在同一张卡上协同做 rollout,GRPO 算法直接在 4 卡上跑数学推理数据集。官方支持的 GRPO 族算法包括 GRPO、DAPO、GSPO、SAPO、CISPO、CHORD、RLOO、Reinforce++,每种都支持全参数与 LoRA、多模态、多机。

其他常用命令:

# 推理
swift infer --model Qwen/Qwen3-4B-Instruct-2507 --infer_backend transformers
# 界面推理
swift app --model Qwen/Qwen3-4B-Instruct-2507 --lang zh
# 部署为 OpenAI 兼容服务
swift deploy --model Qwen/Qwen3-4B-Instruct-2507 --infer_backend vllm
# 采样(用于数据蒸馏/RL 训练数据生成)
swift sample --model Qwen/Qwen3-4B-Instruct-2507 --num_return_sequences 5
# 评测(基于 EvalScope/OpenCompass)
swift eval --model Qwen/Qwen3-4B-Instruct-2507 --infer_backend sglang \
    --eval_backend OpenCompass --eval_dataset ARC_c
# FP8 量化导出
swift export --model Qwen/Qwen3-4B-Instruct-2507 --quant_method fp8 \
    --dataset AI-ModelScope/alpaca-gpt4-data-zh --output_dir Qwen3-4B-Instruct-2507-FP8

这些命令共同构成了 ms-swift 的全链路:infer 是命令行对话,app 是 Gradio 界面,deploy 起 OpenAI 兼容服务,sample 用于批量生成推理数据(常用于 RL 训练或蒸馏),eval 接 EvalScope/OpenCompass 做基准测试,export 做量化导出与推送到 ModelScope。换模型只改 --model,换数据集只改 --dataset。

支持的训练任务

ms-swift 覆盖预训练(PT)、指令监督微调(SFT)、GRPO、GKD、PPO、DPO、KTO、奖励模型(RM)、CPO、SimPO、ORPO、Embedding、Reranker、序列分类等十几种任务;每种任务均支持全参数与 LoRA、QLoRA、DeepSpeed、多机、多模态组合。Megatron-SWIFT 进一步支持 MoE 模型与 FP8,任务覆盖 PT/SFT/GRPO/DPO/KTO/RM/Embedding/Reranker/序列分类。对研究团队而言,这意味着从预训练到对齐到 RL 的完整链路可以在同一套工具里完成,不需要在 transformers、Megatron、trl 等多个框架间手工搬运权重。ms-swift 还支持 Embedding/Reranker 训练,可直接用来做检索增强的向量模型与重排模型定制;序列分类任务则可用于做意图识别、情感分类等下游应用微调。

近期更新亮点

2026 年以来的重要更新包括:支持 EntroPack 灵活码率量化(可根据显存预算精细控制模型码率,支持 Transformers 推理和 LoRA 训练);支持 EmbeddingGemma-2(740M,多模态嵌入模型,支持文本/图像/视频/音频统一向量空间,支持 infonce loss 微调);Day0 支持 NVIDIA Nemotron-3.5-Super-VL-120B;支持 Decision 决策模型(类型化决策 System-1 打分模型,通过单次前向传播输出每个问题选项集上的校准概率,内置 distill_rps、smooth_brier、ce_rps 等 proper scoring rule 损失函数);支持 Xing4.0-29B-A4B 的 transformers 后端训练与推理;支持 DeepSeek-V4.1-Flash 的 Megatron-SWIFT 全参数训练(SFT 与 GRPO)以及 vLLM 推理;支持腾讯混元 WeMM-Embedding 多模态嵌入模型;Day0 支持 Qwen3.8-Flash-Next;支持 OpenMOSS MOSS-VL 与 Muse-Glimmer-30B 多模态模型;支持 moonshotai Kimi-K3 的推理(含 XTML 对话模板、思考通道与工具调用);Megatron-Ray 支持 GRPO/GKD;2025 年 11 月起 Megatron GRPO 与 Mcore-Bridge(让 Megatron 像 transformers 一样简单易用)上线;2025 年 9 月支持 Ulysses 与 ring-attention 结合(输入序列可切分成任意数量块,不再受 num_heads 限制);2026 年 3 月发布 v4.0。整体节奏看,ms-swift 基本保持「新模型发布后几天内出 SFT 示例、新算法发布后几周内集成」的迭代速度。

FAQ

Q:我想自己准备数据集怎么办? A:参考官方自定义数据集文档组织格式,然后 --dataset <dataset_path> 即可;内置 150+ 数据集可直接 AI-ModelScope/xxx#行数 引用。多模态数据集需要把图像/视频路径和文本按 JSON 字段对齐,ms-swift 提供了统一的预处理模板,按字段填好即可。

Q:显存不够怎么办? A:依次尝试 QLoRA、量化训练(BNB/AWQ/GPTQ,7B 仅需 9GB)、GaLore/Liger-Kernel、Flash-Attention、Ulysses/Ring-Attention 序列并行;多卡用 DeepSpeed ZeRO2/3 或 Megatron。官方宣称 QLoRA 路线下 7B 模型只要 9GB 训练资源,一张 16GB 消费级显卡即可起步。

Q:支持国产硬件吗? A:支持华为昇腾 Ascend NPU、天数智芯 MetaX GPU、摩尔线程 MUSA GPU,以及 Apple MPS 与纯 CPU。这意味着没有 NVIDIA 显卡也能跑通大部分微调流程,只是训练速度会比 CUDA 慢一些,适合做实验验证或小数据量微调。

Q:ms-swift 和 LLaMA Factory 怎么选? A:两者都支持 LoRA/SFT/DPO 等常见任务,上手门槛都不高。ms-swift 的优势在 Megatron 并行、MoE 模型训练、GRPO 族 RL 算法、多模态 packing 和国内硬件生态;如果你主要做 Qwen/DeepSeek 系 MoE 的大规模训练或需要国产 NPU 支持,ms-swift 更合适;如果只做单卡 LoRA 实验,两者差异不大;要做多模态或国产硬件,ms-swift 更顺手。 Q:训练完怎么对外提供服务? A:swift deploy --model <path> --infer_backend vllm 会起一个 OpenAI 兼容接口;要先导出量化模型用 swift export --quant_method fp8,再部署。导出的模型可直接用 vLLM/SGLang/LMDeploy 加速,不需要再装 ms-swift 也能跑。

相关链接

ms-swift 的文档体系非常完整,除了命令行参数与模型列表,还提供 Megatron-SWIFT、GRPO 进阶(DAPO/GSPO/SAPO/CISPO/CHORD 等)、自定义模型/数据集、Web-UI、Ray 训练等专题文档,遇到具体问题可以直接查对应章节。仓库 examples 目录按模型和任务组织,每个新模型都有对应 shell 脚本可复制,遇到问题先看 examples 比从头写命令更快。

引用

@misc{zhao2024swiftascalablelightweightinfrastructure,
  title={SWIFT: A Scalable lightWeight Infrastructure for Fine-Tuning},
  author={Yuze Zhao and others},
  year={2024},
  eprint={2408.05517},
  archivePrefix={arXiv},
  primaryClass={cs.CL}
}

总体来看,ms-swift 把「从模型下载到训练、对齐、量化、部署」串成了一条命令行链路:swift sft 做微调,swift rlhf --rlhf_type grpo 做强化学习,swift export 做量化与推送,swift deploy 起服务,swift eval 做评测。对国内研究者和企业用户来说,它既支持消费级显卡上的 LoRA 实验,也能扩到多机 Megatron 集群跑 MoE 大模型,是目前大模型定制化最完整的开源工具之一。如果你的目标是在 Qwen3、DeepSeek、GLM 等国产开源模型上做业务定制,ms-swift 是最值得先试的起点;它同时被魔搭社区作为官方教程与课程(LLM-tutorial)的配套工具,中文文档与示例覆盖度在同类框架中最高,遇到问题通常能在官方文档或 examples 目录找到现成脚本。

评论交流

文章目录