SWIFT (Scalable lightWeight Infrastructure for Fine-Tuning)
论文 | 中文文档 | Swift2.x中文文档 | Swift3.x中文文档
1. 框架介绍
-
ms-swift 是魔搭社区提供的大模型与多模态大模型微调部署框架,具有丰富的功能和广泛的支持,以下是其主要介绍:
模型与多模态模型支持
- 模型数量及类型:现已支持 450 + 大模型与 150 + 多模态大模型的训练(包括预训练、微调、人类对齐)、推理、评测、量化与部署。具体模型包括 Qwen2.5、InternLM3、GLM4、Llama3.3、Mistral、DeepSeek - R1、Yi1.5、TeleChat2、Baichuan2、Gemma2 等大模型,以及 Qwen2.5 - VL、Qwen2 - Audio、Llama3.2 - Vision、Llava、InternVL2.5、MiniCPM - V - 2.6、GLM4v、Xcomposer2.5、Yi - VL、DeepSeek - VL2、Phi3.5 - Vision、GOT - OCR2 等多模态大模型。
- 全流程支持:支持 All - to - All 全模态模型的训练到部署全流程。
训练技术汇集
汇集了最新的训练技术,包括 LoRA、QLoRA、Llama - Pro、LongLoRA、GaLore、Q - GaLore、LoRA + 、LISA、DoRA、FourierFt、ReFT、UnSloth、和 Liger 等。
推理、评测与部署
- 加速支持:支持使用 vLLM 和 LMDeploy 对推理、评测和部署模块进行加速。
- 量化支持:支持使用 GPTQ、AWQ、BNB 等技术对大模型和多模态大模型进行量化。
其他功能特点
-
数据集支持
- 内置数据集:内置 150 + 预训练、微调、人类对齐、多模态等各种类型的数据集。
- 自定义支持:支持自定义数据集。
-
硬件支持:支持 CPU、RTX 系列、T4/V100、A10/A100/H100、Ascend NPU 等硬件。
-
分布式训练:支持分布式数据并行(DDP)、device_map 简易模型并行、DeepSpeed ZeRO2 ZeRO3、FSDP 等分布式训练技术。
-
界面支持:提供基于 Gradio 的 Web - UI 界面。
-
插件化与拓展:支持自定义模型和数据集拓展,支持对 loss、metric、trainer、loss - scale、callback、optimizer 等组件进行自定义。
-
工具箱能力:除了对大模型和多模态大模型的训练支持外,还支持其推理、评测、量化和部署全流程。
-
推理加速:支持 PyTorch、vLLM、LmDeploy 推理加速引擎,并提供 OpenAI 接口,为推理、部署和评测模块提供加速。
-
模型评测:以 EvalScope 作为评测后端,支持 100 + 评测数据集对纯文本和多模态模型进行评测。
支持的模型和训练集
支持的模型和数据集 — swift 3.1.0.dev0 文档
模型类型 | 模型标识 |
---|---|
DeepSeek 系列 | deepseek, deepseek_coder, deepseek_vl, deepseek_janus, deepseek_v2_5, deepseek_r1, deepseek_vl2, deepseek_janus_pro |
Emu3 系列 | emu3_gen, emu3_chat |
Gemma 系列 | gemma, paligemma |
ChatGLM 系列 | chatglm2 |
GLM 系列 | glm4v, glm4, glm_edge_v |
CodeGeeX 系列 | codegeex4 |
LongWriter 系列 | longwriter_llama |
CogAgent 系列 | cogagent_chat, cogagent_vqa |
CogVLM 系列 | cogvlm, cogvlm2, cogvlm2_video |
Llama 系列 | llama, llama3, llama3_2, llama3_2_vision, llama3_1_omni |
Qwen 系列 | qwen, qwen2_5, qwen2_5_math, qwen2_5_math_prm, qwen_vl, qwen_audio, qwen2_audio, qwen2_vl, qwen2_5_vl |
Qvq 系列 | qvq |
Ovis 系列 | ovis1_6, ovis1_6_llama3 |
Marco 系列 | marco_o1 |
Got OCR 系列 | got_ocr2 |
Idefics 系列 | idefics3 |
InternLM 系列 | internlm, internlm2, internlm2_reward |
XComposer 系列 | ixcomposer2, xcomposer2_5, xcomposer2_4khd |
Florence 系列 | florence |
Phi 系列 | phi3, phi4, phi3_vision |
InternVL 系列 | internvl, internvl_phi3, internvl2, internvl2_phi3, internvl2_5 |
Llava 系列 | llava1_5_hf, llava_next_video_hf, llava1_6_mistral_hf, llava1_6_vicuna_hf, llava1_6_yi_hf, llama3_llava_next_hf, llava_next_qwen_hf, llava_onevision_hf, llava_llama3_1_hf, llava_llama3_hf, llava1_6_mistral, llava1_6_yi, llama3_llava_next, llava_next_qwen |
Default 系列 | default |
ModelScope Agent 系列 | modelscope_agent |
Baichuan 系列 | baichuan |
Numina 系列 | numina |
Mistral 系列 | mistral_nemo |
Xverse 系列 | xverse |
Yuan 系列 | yuan |
Ziya 系列 | ziya |
Skywork 系列 | skywork, skywork_o1 |
Bluelm 系列 | bluelm |
CodeFuse 系列 | codefuse_codellama, codefuse |
Zephyr 系列 | zephyr |
Sus 系列 | sus |
Orion 系列 | orion |
Telechat 系列 | telechat, telechat2 |
Dbrx 系列 | dbrx |
Mengzi 系列 | mengzi |
C4AI 系列 | c4ai |
WizardLM 系列 | wizardlm2, wizardlm2_moe |
Atom 系列 | atom |
Aya 系列 | aya |
Megrez 系列 | megrez, megrez_omni |
Minicpm 系列 | minicpm, minicpmv, minicpmv2_5, minicpmv2_6, minicpmo2_6 |
Minimax 系列 | minimax, minimax_vl |
Molmo 系列 | molmo |
Mplug Owl 系列 | mplug_owl2, mplug_owl3, mplug_owl3_241101 |
Doc Owl 系列 | doc_owl2 |
OpenBuddy 系列 | openbuddy, openbuddy2 |
Pixtral 系列 | pixtral |
Valley 系列 | valley |
Yi 系列 | yi_coder, yi_vl |
支持的训练方法
方法 | 全参数 | LoRA | QLoRA | Deepspeed | 多模态 |
---|---|---|---|---|---|
预训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
指令监督微调 | ✅ | ✅ | ✅ | ✅ | ✅ |
DPO训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
奖励模型训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
PPO训练 | ✅ | ✅ | ✅ | ✅ | ❌ |
KTO训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
CPO训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
SimPO训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
ORPO训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
分类模型训练 | ✅ | ✅ | ✅ | ✅ | ✅ |
2. 快速接入指南
使用pip进行安装:
pip install ms-swift -U -i https://mirrors.aliyun.com/pypi/simple/
运行环境:
范围 | 推荐 | 备注 | |
---|---|---|---|
python | >=3.8 | 3.10 | |
cuda | cuda12 | 使用cpu、npu、mps则无需安装 | |
torch | >=2.0 | ||
transformers | >=4.33 | 4.48.1 | |
modelscope | >=1.19 | ||
peft | >=0.11.0,<0.15.0 | ||
trl | >=0.13,<0.15 | 0.14.0 | RLHF |
vllm | >=0.5.1 | 0.6.5 | 推理/部署/评测 |
lmdeploy | lmdeploy>=0.5,<0.6.5 | 0.6.4 | 推理/部署/评测 |
deepspeed | 0.14.5 | 训练 |
更多可选依赖可以参考这里。
最简示例
这里给出使用ms-swift进行训练到部署到最简示例,具体可以查看examples。
- 若想使用其他模型或者数据集(含多模态模型和数据集),你只需要修改--model指定对应模型的id或者path,修改--dataset指定对应数据集的id或者path即可。
- 默认使用ModelScope进行模型和数据集的下载。如果要使用HuggingFace,指定--use_hf true即可。
-
高速下载方法:modelscope 魔搭社区模型下载
常用链接
常用链接 |
---|
🔥命令行参数 |
支持的模型和数据集 |
自定义模型, 🔥自定义数据集 |
大模型教程 |
3. 版本追踪站(核心动态区)
大更新
- 🎁 2025.01.23: SWIFT支持了sample命令, 这是一个对CoT和RFT非常重要的命令。同时, 我们支持了一个强化微调脚本。
- 🎁 2024.12.04: SWIFT3.0大版本更新。请查看发布说明和更改。
- 🎉 2024.08.12: SWIFT论文已经发布到arXiv上,可以点击这里阅读。
- 🔥 2024.08.05: 支持使用evalscope作为后端进行大模型和多模态模型的评测。
- 🔥 2024.07.29: 支持使用vllm, lmdeploy对大模型和多模态大模型进行推理加速,在infer/deploy/eval时额外指定--infer_backend vllm/lmdeploy即可。
- 🔥 2024.07.24: 支持对多模态大模型进行人类偏好对齐训练,包括DPO/ORPO/SimPO/CPO/KTO/RM/PPO。
- 🔥 2024.02.01: 支持Agent训练!训练算法源自这篇论文。
小更新
🆕 v3.1.0 亮点速览
- 新增数据采样、强化微调训练等功能。
- 支持多种新模型。
- 增添新数据集。
🆕 v3.0 亮点速览
- 发布 ms-swift3.0,支持众多大模型与多模态大模型的训练、推理等。
- 汇集最新训练技术。
- 支持多种推理、量化加速技术。
- 提供 Web-UI 界面及丰富实践。
- 推出魔搭模型评测框架 EvalScope,支持多种模型和评测场景。
📅 更新日志墙
版本 | 发布日期 | 关键特性 | 文档直达 |
---|---|---|---|
3.1.0 | 2025.02.07 | 强化微调 | ms-swift3.1.0 发布,多项新特性与新模型数据集来袭 |
3.0 | 2025.02.05 | 模型训练与评测全链路支持 | SWIFT & EvalScope:魔搭社区大模型微调部署与评测的强大利器 |
4. 深度技术解析
- 🔍 LoRA-Pro混合训练原理图解
- 🎯 多模态对齐训练实战(附数据集)
- ⚡ 量化部署性能优化手册
todo: 待更
5. 最佳实践
- 🐳V100 上用 ms-swift 框架部署 DeepSeek-R1-Distill-Qwen-7B 超全攻略
- 🐳V100 上用 ms-swift 框架部署 DeepSeek-R1-Distill-Qwen-14B 超全攻略
- 🌐 多模态问答系统搭建
todo: 待更