ms-swift 全流程指南:600+ 大模型与 400+ 多模态大模型的训练、强化学习、推理与部署
【免费下载链接】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
ms-swift(Scalable lightWeight Infrastructure for Fine-Tuning)是 ModelScope 社区提供的大模型与多模态大模型微调、部署框架,覆盖预训练、微调、人类对齐、推理、评估、量化与部署的完整链路,并已由 AAAI 2025 收录论文。本文以仓库 README.md 为主线,结合 swift/cli/main.py、swift/rlhf_trainers 等源码与 examples 下真实训练脚本,系统讲解 ms-swift 的核心能力、安装方式、命令行与 Python 双接口、以及从自认知微调到 GRPO 强化学习、Megatron 并行训练和推理部署的完整实战路径。读完本文,你将掌握如何用一条命令完成模型微调、如何挑选合适的强化学习与并行训练方案,以及如何将训练产物推理、部署、量化并推送回模型库。
一、项目概览:为什么选择 ms-swift
1.1 定位与覆盖面
根据 README 的介绍,ms-swift 的核心定位是大模型与多模态大模型训练到部署的全流程框架,当前已支持:
- 模型类型:600+ 纯文本大模型与 400+ 多模态大模型,以及 All-to-All 全模态模型,覆盖 Qwen3、Qwen3.5、InternLM3、GLM4.5、Mistral、DeepSeek-R1、Llama4 等文本模型,以及 Qwen3-VL、Qwen3-Omni、Kimi-K3、Llava、InternVL3.5、MiniCPM-V-4、Ovis2.5、GLM4.5-V、DeepSeek-VL2 等多模态模型,并提供热门模型的 Day-0 支持;
- 数据集:内置 150+ 预训练、微调、对齐、多模态等任务数据集,同时支持自定义数据集,用户只需准备好数据即可一键训练;
- 硬件:支持 A10/A100/H100、RTX 系列、T4/V100、AMD GPU(MI300 系列等)、CPU、MPS 以及国产昇腾 NPU 等;
- 训练任务:预训练与指令微调,以及 DPO、GKD、KTO、RM、CPO、SimPO、ORPO 等偏好学习算法,并支持 Embedding/Reranker 与序列分类任务;
- 强化学习:内置丰富的 GRPO 算法族,包括 GRPO、DAPO、GSPO、SAPO、CISPO、CHORD、RLOO、Reinforce++ 等;
- 并行训练:除 DDP、device_map、DeepSpeed ZeRO2/ZeRO3、FSDP/FSDP2 外,还支持 Megatron 的 TP/PP/SP/CP/ETP/EP/VPP 并行策略,显著加速 MoE 模型训练;
- 推理加速:支持 Transformers、vLLM、SGLang、LMDeploy 四种推理后端,并提供 OpenAI 接口用于推理、部署与评估模块加速;
- 量化:支持 AWQ、GPTQ、FP8、BNB 等量化导出,导出模型可使用 vLLM/SGLang/LMDeploy 加速推理;
- 评估:以 EvalScope 为评估后端,支持 100+ 评估数据集。
1.2 轻量化与内存优化手段
框架在轻量化与显存优化上的投入非常具体:
- 轻量微调方法:LoRA、QLoRA、DoRA、LoRA+、LLaMAPro、LongLoRA、LoRA-GA、ReFT、RS-LoRA、Adapter、LISA 等;
- 量化训练:支持在 BNB、AWQ、GPTQ、AQLM、HQQ、EETQ 量化模型上直接训练,README 指出 7B 模型仅需约 9GB 训练资源;
- 显存优化:GaLore、Q-GaLore、UnSloth、Liger-Kernel、Flash-Attention 2/3,以及 Ulysses 与 Ring-Attention 序列并行技术;其中 Ulysses 可以与 Ring-Attention 组合使用,使序列可以切分为任意数量的分块(不再受注意力头数限制),对应参数仍为
--sequence_parallel_size N(见 examples/train/sequence_parallel); - 多模态加速:支持多模态 packing 技术(README 称训练速度可提升 100%+)、文本/图像/视频/音频混合模态数据训练,并可独立控制 vit/aligner/llm 的更新。
这些能力在参数解析层也有对应实现,例如 swift/arguments/sft_args.py 的_check_padding_free中约束了padding_free/packing功能必须配合flash_attn、flash_attention_2、flash_attention_3、flash_attention_4等注意力实现使用,否则直接抛出ValueError,从源码层面保证了组合参数的合法性。
二、安装与环境要求
2.1 pip 安装
pip install ms-swift -U # 使用 uv pip install uv uv pip install ms-swift -U --torch-backend=auto2.2 源码安装
git clone https://github.com/modelscope/ms-swift.git cd ms-swift # main 分支对应 swift 4.x;如需安装 swift 3.x,请执行: # git checkout release/3.12 pip install -e . # 使用 uv uv pip install -e . --torch-backend=auto2.3 运行环境矩阵
README 给出了推荐的运行环境范围,安装前建议对照核验:
| 组件 | 范围 | 推荐 | 备注 |
|---|---|---|---|
| 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 | — | |
| flash_attn | — | 2.8.3/4.0.0b15 | |
| trl | >=0.15,<1.0 | 0.29.1 | RLHF |
| deepspeed | >=0.14 | 0.18.9 | 训练 |
| vllm | >=0.5.1 | 0.11.0/0.23.0 | 推理/部署 |
| sglang | >=0.4.6 | — | 推理/部署 |
| evalscope | >=1.0 | — | 评估 |
| gradio | — | 5.32.1 | Web-UI/App |
更多可选依赖可参考 requirements/install_all.sh(仓库 requirements 目录下还按用途拆分了 framework.txt、eval.txt、megatron.txt、ray.txt、npu.txt 等)。
2.4 CLI 入口:swift 与 megatron 两个命令
从源码看,setup.py 注册了两个 console 脚本:swift=swift.cli.main:cli_main与megatron=swift.cli._megatron.main:cli_main。其中swift命令的路由表定义在 swift/cli/main.py:
ROUTE_MAPPING = { 'pt': 'swift.cli.pt', 'sft': 'swift.cli.sft', 'infer': 'swift.cli.infer', 'merge-lora': 'swift.cli.merge_lora', 'web-ui': 'swift.cli.web_ui', 'deploy': 'swift.cli.deploy', 'rollout': 'swift.cli.rollout', 'rlhf': 'swift.cli.rlhf', 'sample': 'swift.cli.sample', 'export': 'swift.cli.export', 'eval': 'swift.cli.eval', 'app': 'swift.cli.app', }此外,swift/cli/main.py 还支持以 JSON/YAML 配置文件作为首参展开为命令行参数(parse_yaml_args),并支持通过NPROC_PER_NODE、NNODES、MASTER_ADDR等环境变量自动切换 torchrun 多卡/多机启动(use_torchrun/get_torchrun_args),这也是后面所有多卡示例使用NPROC_PER_NODE=8这类前缀的原理所在。
三、快速开始:单卡 10 分钟自认知微调
README 给出了一个极具代表性的快速开始示例:在单张 3090 上对 Qwen3-4B-Instruct-2507 做自认知微调。
3.1 命令行方式(推荐)
# 约 13GB 显存 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 \ --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 \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --model_author swift \ --model_name swift-robot关键参数说明:
--model:指定模型 ID 或本地路径,换模型只需修改此参数;--tuner_type lora:使用 LoRA 轻量微调;仓库 examples/train/lora_sft.sh 给出了 Qwen2.5-7B-Instruct 的同类 LoRA 示例(约 22GB 显存),并额外展示了--system 'You are a helpful assistant.'等参数;--dataset:可传多个数据集,#500表示取该数据集前 500 条,swift/self-cognition是自认知数据集,--model_author与--model_name仅在该数据集存在时生效;--target_modules all-linear:将 LoRA 作用到所有线性层;- 数据集默认从ModelScope下载,如需使用 HuggingFace,加
--use_hf true; - 自定义数据集可参考 Customization/Custom-dataset.md 整理格式后用
--dataset <dataset_path>传入。
swift sft对应的参数在 swift/arguments/sft_args.py 中定义,其__post_init__会校验数据集非空、自动初始化 deepspeed/fsdp/device 等配置,若同时启用了padding_free或packing会强制校验注意力实现类型,从代码层面避免非法参数组合。
3.2 训练后推理
训练完成后,用--adapters指定训练生成的 checkpoint 目录推理。由于适配器目录中保存了训练参数文件args.json,无需再单独指定--model、--system,swift 会自动读取;如需关闭此行为,可设置--load_args false。
# 使用交互式命令行推理 CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --temperature 0 \ --max_new_tokens 2048 # 合并 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 20483.3 推送模型到 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 false3.4 Web-UI:零门槛训练与部署
ms-swift 基于 Gradio 提供了 Web-UI 训练与部署界面,启动命令为:
SWIFT_UI_LANG=en swift web-ui其实现位于 swift/ui,覆盖训练(llm_train)、推理(llm_infer)、评估(llm_eval)、导出(llm_export)、GRPO(llm_grpo)、RLHF(swift/ui/llm_rlhf)与采样(swift/ui/llm_sample)等完整流程。
3.5 Python API 方式
ms-swift 同样支持纯 Python 训练与推理(详细 notebook 示例见 examples/notebook/qwen2_5-self-cognition)。
训练:
from peft import LoraConfig, get_peft_model from swift import get_model_processor, get_template, load_dataset, EncodePreprocessor from swift.trainers import Seq2SeqTrainer, Seq2SeqTrainingArguments # 获取模型与模板,并挂载可训练的 LoRA 模块 model, tokenizer = get_model_processor(model_id_or_path, ...) template = get_template(tokenizer, ...) lora_config = LoraConfig(...) model = get_peft_model(model, lora_config) # 下载并加载数据集,将文本编码为 token train_dataset, val_dataset = load_dataset(dataset_id_or_path, ...) train_dataset = EncodePreprocessor(template=template)(train_dataset, num_proc=num_proc) val_dataset = EncodePreprocessor(template=template)(val_dataset, num_proc=num_proc) # 训练模型 training_args = Seq2SeqTrainingArguments(...) trainer = Seq2SeqTrainer( model=model, args=training_args, template=template, train_dataset=train_dataset, eval_dataset=val_dataset, ) trainer.train()推理:
from swift import TransformersEngine, InferRequest, RequestConfig # 使用原生 Transformers 引擎推理 engine = TransformersEngine(model_id_or_path, adapters=[lora_checkpoint]) infer_request = InferRequest(messages=[{'role': 'user', 'content': 'who are you?'}]) request_config = RequestConfig(max_tokens=max_new_tokens, temperature=temperature) resp_list = engine.infer([infer_request], request_config) print(f'response: {resp_list[0].choices[0].message.content}')这些高层 API 在 swift/init.py 中通过_LazyModule惰性导出,训练侧包括get_model_processor、get_template、load_dataset、EncodePreprocessor、Seq2SeqTrainer等,推理侧包括TransformersEngine、VllmEngine、SglangEngine、LmdeployEngine、InferRequest、RequestConfig等(详见 swift/infer_engine 目录)。
四、任务矩阵:支持的训练方法与组合
README 用一张矩阵总结了各训练方法在不同训练方式(全参/LoRA/QLoRA/DeepSpeed/多机/多模态)下的支持情况。归纳如下:
| 方法 | 全参 | LoRA | QLoRA | DeepSpeed | 多机 | 多模态 |
|---|---|---|---|---|---|---|
| 预训练 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 有监督微调 SFT | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| GRPO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| GKD | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| PPO | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| DPO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| KTO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 奖励模型 RM | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| SimPO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ORPO | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Embedding | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Reranker | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 序列分类 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
对应的示例脚本位于 examples/train 下的各子目录,例如:
- 全参 SFT:examples/train/full;
- QLoRA:examples/train/qlora;
- 多卡 DeepSpeed:examples/train/multi-gpu/deepspeed;
- 多机:examples/train/multi-node;
- 多模态:examples/train/multimodal;
- 偏好学习:examples/train/rlhf(内含 dpo/kto/gkd/ppo/orpo/simpo/cpo/rm 等);
- Embedding/Reranker/序列分类:examples/train/embedding、examples/train/reranker、examples/train/seq_cls。
4.1 三类核心命令示例
预训练(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 \ ...微调:
CUDA_VISIBLE_DEVICES=0 swift sft \ --model Qwen/Qwen3-4B-Instruct-2507 \ --dataset AI-ModelScope/alpaca-gpt4-data-en \ --tuner_type lora \ --output_dir output \ ...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的分发逻辑在 swift/cli/rlhf.py,训练器实现位于 swift/rlhf_trainers,其中按算法拆分为dpo_trainer.py、kto_trainer.py、cpo_trainer.py、orpo_trainer.py、grpo_trainer.py、ppo_trainer.py、gkd_trainer.py、reward_trainer.py等模块,方便按需阅读具体算法的底层实现。
五、强化学习:GRPO 算法族
ms-swift 内置了丰富的 GRPO 家族强化学习算法,README 中给出了支持矩阵:
| 方法 | 全参 | LoRA | 多模态 | 多机 |
|---|---|---|---|---|
| GRPO | ✅ | ✅ | ✅ | ✅ |
| DAPO | ✅ | ✅ | ✅ | ✅ |
| GSPO | ✅ | ✅ | ✅ | ✅ |
| SAPO | ✅ | ✅ | ✅ | ✅ |
| CISPO | ✅ | ✅ | ✅ | ✅ |
| CHORD | ✅ | ✅ | ✅ | ✅ |
| RLOO | ✅ | ✅ | ✅ | ✅ |
| Reinforce++ | ✅ | ✅ | ✅ | ✅ |
相关算法文档位于 docs/source_en/Instruction/GRPO(如 DAPO、GSPO、SAPO、CISPO、CHORD、RLOO、REINFORCEPP 等),入门文档为 docs/source_en/Instruction/GRPO/GetStarted/GRPO.md。
5.1 基础 GRPO 命令
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 \ ...5.2 真实示例:8 卡全参 GRPO
仓库 examples/train/grpo/external/grpo_7b.sh 给出了一个 6 卡训练 + 2 卡 roll out 的全参 GRPO 示例(使用独立的 vLLM server 模式):
# 8 * 80G(6 卡训练,2 卡 rollout) # 另开终端执行: # CUDA_VISIBLE_DEVICES=6,7 swift rollout \ # --model Qwen/Qwen2.5-7B-Instruct \ # --data_parallel_size 2 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5 \ NPROC_PER_NODE=6 \ swift rlhf \ --rlhf_type grpo \ --model Qwen/Qwen2.5-7B-Instruct \ --reward_funcs accuracy \ --use_vllm true \ --vllm_mode server \ --vllm_server_host 127.0.0.1 \ --vllm_server_port 8000 \ --tuner_type full \ --torch_dtype bfloat16 \ --dataset AI-MO/NuminaMath-TIR#1000 \ --load_from_cache_file true \ --split_dataset_ratio 0 \ --max_completion_length 2048 \ --num_train_epochs 3 \ --per_device_train_batch_size 2 \ --learning_rate 1e-6 \ --gradient_accumulation_steps 2 \ --save_total_limit 2 \ --logging_steps 1 \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --dataset_num_proc 4 \ --num_generations 8 \ --temperature 1.0 \ --top_p 0.9 \ --top_k 50 \ --deepspeed zero2 \ --log_completions true \ --num_iterations 1 \ --report_to tensorboard wandb \ --beta 0.04该脚本展示了 GRPO 的关键工程要素:--reward_funcs accuracy指定奖励函数、--vllm_mode server/colocate选择 rollout 引擎的部署方式、--num_generations 8控制每个 prompt 的采样组大小、--beta为 KL 正则系数。GRPO 的引擎侧实现可见 swift/infer_engine/grpo_vllm_engine.py,奖励函数定义在 swift/rewards(含 orm.py、prm.py、rm_plugin.py)。
5.3 扩展能力
- 多轮 GRPO:支持训练多轮对话场景(如 Agent 工具调用),文档见 docs/source_en/Instruction/GRPO/DeveloperGuide/multi_turn.md;
- 自定义奖励模型处理逻辑:GRPO 支持对奖励模型做自定义处理,GenRM 示例见 docs/source_en/Instruction/GRPO/DeveloperGuide/reward_model.md;
- LMDeploy 引擎:GRPO 也可使用 LMDeploy 作为 rollout 引擎(examples/train/grpo/internal/full_lmdeploy.sh);
- 72B 混合模式:examples/train/grpo/internal/vllm_72b_4gpu.sh 展示了 4×80G 训练 72B 模型的方案;
- Ray 分布式 GRPO:见 docs/source_en/Instruction/Ray.md 与 examples/ray/grpo。
六、Megatron-SWIFT:大规模并行训练
当模型规模超出单机或需要极致吞吐时,可使用 Megatron-SWIFT。它支持 TP/PP/SP/CP/ETP/EP/VPP 等并行策略,对 MoE 模型训练提升显著,并支持 300+ 纯文本大模型与 100+ 多模态大模型的全参与 LoRA 训练。入口为megatron命令(swift/cli/_megatron)。
支持的训练方法矩阵:
| 方法 | 全参 | LoRA | MoE | 多模态 | FP8 |
|---|---|---|---|---|---|
| 预训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
| SFT | ✅ | ✅ | ✅ | ✅ | ✅ |
| GRPO | ✅ | ✅ | ✅ | ✅ | ✅ |
| GKD | ✅ | ✅ | ✅ | ✅ | ✅ |
| DPO | ✅ | ✅ | ✅ | ✅ | ✅ |
| KTO | ✅ | ✅ | ✅ | ✅ | ✅ |
| RM | ✅ | ✅ | ✅ | ✅ | ✅ |
| Embedding | ✅ | ✅ | ✅ | ✅ | ✅ |
| Reranker | ✅ | ✅ | ✅ | ✅ | ✅ |
| 序列分类 | ✅ | ✅ | ✅ | ✅ | ✅ |
基础命令示例:
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 \ ...文档入口:docs/source_en/Megatron-SWIFT/Quick-start.md。其中 docs/source_en/Megatron-SWIFT/Mcore-Bridge.md 介绍的 Mcore-Bridge 让 Megatron 训练像 transformers 一样简单易用(2025.11.04 版本引入)。
6.1 Megatron GRPO 示例
仓库 examples/megatron/grpo/dense_colocate.sh 是一个 8 卡、vLLM 同卡共置(colocate)的 Qwen2.5-VL-3B 多模态 GRPO 训练脚本,其中大量 Megatron 特有参数值得留意:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \ NPROC_PER_NODE=8 \ MAX_PIXELS=602112 \ MASTER_PORT=29600 \ megatron rlhf \ --rlhf_type grpo \ --model Qwen/Qwen2.5-VL-3B-Instruct \ --save_safetensors true \ --context_parallel_size 1 \ --tensor_model_parallel_size 1 \ --pipeline_model_parallel_size 1 \ --dataset AI-ModelScope/clevr_cogen_a_train#10000 \ --num_train_epochs 1 \ --global_batch_size 128 \ --micro_batch_size 4 \ --steps_per_generation 4 \ --num_generations 8 \ --external_plugins examples/train/grpo/plugin/plugin.py \ --reward_funcs external_r1v_acc format \ --use_vllm true \ --vllm_mode colocate \ --vllm_gpu_memory_utilization 0.7 \ --vllm_mm_processor_cache_gb 0 \ --vllm_max_model_len 10240 \ --max_length 8192 \ --max_completion_length 2048 \ --tuner_type full \ --lr 1e-6 \ --bf16 true \ --beta 0.001 \ --importance_sampling_level token \ --epsilon 0.2 \ --epsilon_high 0.2 \ --dynamic_sample false \ --overlong_filter true \ --loss_type grpo \ --sleep_level 2 \ --offload_model true \ --offload_bridge false \ --offload_optimizer true \ --logging_steps 1 \ --recompute_granularity selective \ --finetune \ --dataloader_num_workers 8 \ --dataset_num_proc 8 \ --no_save_optim \ --no_save_rng \ --attention_backend flash \ --temperature 1.0 \ --system examples/train/grpo/prompt.txt \ --padding_free true \ --log_completions true \ --report_to wandb \ --train_iters 100 \ --eval_steps 1000 \ --save_steps 1000脚本头部的注释给出了批次换算逻辑:DP size = 总卡数 / (CP×TP×PP);global_batch_size = micro_batch_size × DP × gradient_accumulation_steps;generation_batch_size = global_batch_size × steps_per_generation;prompt/训练样本数分别由 generation_batch_size 除以num_generations得到。这类脚本在 examples/megatron/grpo 目录下还有 moe_colocate_full、moe_colocate_lora、opd_rl、sapo 等多个变体。
七、推理、部署、采样、评估与量化
7.1 推理
CUDA_VISIBLE_DEVICES=0 swift infer \ --model Qwen/Qwen3-4B-Instruct-2507 \ --stream true \ --infer_backend transformers \ --max_new_tokens 2048--infer_backend可选 transformers / vllm / sglang / lmdeploy,对应引擎实现分别位于 swift/infer_engine/transformers_engine.py、swift/infer_engine/vllm_engine.py、swift/infer_engine/sglang_engine.py、swift/infer_engine/lmdeploy_engine.py。此外 examples/infer 下还按 lmdeploy/sglang/transformers/vllm 提供了更细的推理脚本,以及demo_agent.py、demo_mllm.py、demo_reranker.py、demo_reward_model.py等垂直场景演示。
7.2 界面化推理(App)
CUDA_VISIBLE_DEVICES=0 swift app \ --model Qwen/Qwen3-4B-Instruct-2507 \ --stream true \ --infer_backend transformers \ --max_new_tokens 20487.3 部署(OpenAI 兼容接口)
CUDA_VISIBLE_DEVICES=0 swift deploy \ --model Qwen/Qwen3-4B-Instruct-2507 \ --infer_backend vllm7.4 采样
CUDA_VISIBLE_DEVICES=0 swift sample \ --model Qwen/Qwen3-4B-Instruct-2507 \ --sampler_engine transformers \ --num_return_sequences 5 \ --dataset AI-ModelScope/alpaca-gpt4-data-zh#5采样用于生成蒸馏数据等场景,相关脚本见 examples/sampler(distill 为 API 蒸馏采样、sample 为本地采样),强化微调(RFT)的采样指南见 docs/source_en/Instruction/Reinforced-Fine-tuning.md。
7.5 评估
CUDA_VISIBLE_DEVICES=0 swift eval \ --model Qwen/Qwen3-4B-Instruct-2507 \ --infer_backend sglang \ --eval_backend OpenCompass \ --eval_dataset ARC_c评估后端为 EvalScope/OpenCompass,支持 100+ 评估数据集,可同时评估文本与多模态模型。
7.6 量化
CUDA_VISIBLE_DEVICES=0 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更多量化方案(AWQ/GPTQ/FP8/BNB 等)的导出脚本见 examples/export/quantize。
7.7 推送模型
swift export \ --model <model-path> \ --push_to_hub true \ --hub_model_id '<model-id>' \ --hub_token '<sdk-token>'八、许可证与引用
ms-swift 采用 Apache License 2.0(见仓库 LICENSE)。对于其训练/评估所使用的模型与数据集,请遵循各原始资源页对应的 License。
如需在论文中引用 ms-swift,可参考 README 提供的 BibTeX:
@misc{zhao2024swiftascalablelightweightinfrastructure, title={SWIFT:A Scalable lightWeight Infrastructure for Fine-Tuning}, author={Yuze Zhao and Jintao Huang and Jinghan Hu and Xingjun Wang and Yunlin Mao and Daoze Zhang and Zeyinzi Jiang and Zhikai Wu and Baole Ai and Ang Wang and Wenmeng Zhou and Yingda Chen}, year={2024}, eprint={2408.05517}, archivePrefix={arXiv}, primaryClass={cs.CL}, url={https://arxiv.org/abs/2408.05517}, }九、继续深入:文档与示例地图
仓库的文档(docs,含 docs/source 中文版与 docs/source_en 英文版)与示例(examples)按使用场景做了清晰分层,推荐按以下路径继续探索:
- 命令行参数全表:docs/source_en/Instruction/Command-line-parameters.md;
- 支持模型与数据集清单:docs/source_en/Instruction/Supported-models-and-datasets.md;
- 自定义模型/数据集:docs/source_en/Customization/Custom-model.md、docs/source_en/Customization/Custom-dataset.md;
- GRPO 全系:docs/source_en/Instruction/GRPO/GetStarted/GRPO.md;
- Megatron 并行:docs/source_en/Megatron-SWIFT/Quick-start.md;
- Ray 分布式:docs/source_en/Instruction/Ray.md;
- 预训练与微调:docs/source_en/Instruction/Pre-training-and-Fine-tuning.md、docs/source_en/Instruction/Use-tuners.md;
- RLHF 全览:docs/source_en/Instruction/RLHF.md;
- 最佳实践:docs/source_en/BestPractices(覆盖 NPU/AMD 昇腾支持、GRPO 多模态与代码训练、Reranker、DeepSeek-V4 等专题)。
总的来说,ms-swift 的价值在于把"模型选择—数据准备—训练(含并行与强化学习)—推理—评估—量化—部署—发布"这条链路压缩到极低的使用门槛:CLI 一行命令、Python API 数十行、Web-UI 零代码,而源码层面又提供了 GRPO 算法族、Megatron 并行、多引擎推理等深入可扩展的实现,适合从快速原型验证到大规模集群训练的不同阶段。
【免费下载链接】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),仅供参考