持续更新 | 大模型与多模态训练部署利器:魔搭社区ms-swift框架完全指南

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​

支持的训练方法

方法全参数LoRAQLoRADeepspeed多模态
预训练
指令监督微调
DPO训练
奖励模型训练
PPO训练
KTO训练
CPO训练
SimPO训练
ORPO训练
分类模型训练

2. 快速接入指南

使用pip进行安装:

pip install ms-swift -U -i https://mirrors.aliyun.com/pypi/simple/

运行环境:

范围推荐备注
python>=3.83.10
cudacuda12使用cpu、npu、mps则无需安装
torch>=2.0
transformers>=4.334.48.1
modelscope>=1.19
peft>=0.11.0,<0.15.0
trl>=0.13,<0.150.14.0RLHF
vllm>=0.5.10.6.5推理/部署/评测
lmdeploylmdeploy>=0.5,<0.6.50.6.4推理/部署/评测
deepspeed0.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.02025.02.07强化微调ms-swift3.1.0 发布,多项新特性与新模型数据集来袭
3.02025.02.05模型训练与评测全链路支持SWIFT & EvalScope:魔搭社区大模型微调部署与评测的强大利器

4. 深度技术解析

  • 🔍 LoRA-Pro混合训练原理图解
  • 🎯 多模态对齐训练实战(附数据集)
  • ⚡ 量化部署性能优化手册

todo: 待更

5. 最佳实践

todo: 待更

6. 开发者生态

### 如何使用 MS-Swift 郱署多模态大模型 MS-Swift 是一种用于部署机器学习模型的工具集,特别适用于大规模和复杂的模型架构。为了实现多模态大模型部署,可以遵循以下方法论: #### 工具准备环境配置 在开始之前,需确保安装并配置好必要的依赖项以及框架支持。通常情况下,这包括但不限于 Python 环境、PyTorch 或 TensorFlow 的版本兼容性验证,以及其他可能涉及的数据处理库。 对于 BigQuery 和 K-Means 聚类的应用场景[^1],虽然其主要关注的是数据分析而非模型部署,但它提供了一种思路——通过分析数据特征来优化模型输入结构。这种技术同样可应用于多模态模型中的数据预处理阶段。 ```bash pip install ms-swift torch torchvision transformers datasets ``` 上述命令展示了如何设置基础开发环境以支持后续操作。 #### 数据预处理 多模态模型的特点在于它能够同时处理多种类型的信息源(如图像、文本)。因此,在实际应用前,必须对不同形式的数据进行标准化转换。例如: - 图像可以通过 `torchvision.transforms` 进行尺寸调整、归一化等; - 文本则利用 Hugging Face 提供的 `transformers` 库完成分词编码工作。 以下是简单的代码片段展示这一过程: ```python from PIL import Image import requests from transformers import CLIPProcessor, CLIPModel model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True) outputs = model(**inputs) logits_per_image = outputs.logits_per_image # this is the image-text similarity score probs = logits_per_image.softmax(dim=1) # we can take the softmax to get probability distribution over texts print(probs) ``` 此部分重点介绍了基于 CLIP 模型的跨模态匹配逻辑[^2],其中包含了图片加载、文字描述向量化的过程。 #### 模型训练微调 当准备好高质量的数据之后,下一步便是构建或者迁移已有的大型预训练网络至特定领域任务上。考虑到资源消耗较大,建议采用分布式计算策略加速收敛速度。具体而言,可通过 PyTorch Lightning 来简化实验流程管理;而 DDP (Distributed Data Parallel) 技术则是提升 GPU 利用率的有效手段之一。 值得注意的是,尽管 Symfony PHP 生态圈内的某些组件并非直接关联于此话题,但从软件工程角度出发,借鉴这些成熟项目的模块设计理念有助于提高整体系统的稳定性和扩展能力。 #### 推理服务搭建 最后一步就是将经过充分测试后的最终产物发布出去供外部访问。这里推荐几种常见的做法: 1. **RESTful API**: 使用 Flask/Django 构建轻量级接口服务器。 2. **gRPC**: 对于低延迟需求较高的实时应用场景更为合适。 3. **ONNX Runtime**: 如果目标平台不完全支持原生框架运行时,则考虑导出 ONNX 文件作为中间媒介再转接给其他执行引擎解析执行。 综上所述,整个项目周期涵盖了从原始素材收集整理到线上功能上线等多个环节,每一步都需要精心规划才能达成预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歌刎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值