【大模型微调与部署01】—— ms-swift-3.12入门:安装、快速上手

大家好,我今天开始更新大模型微调与部署系列教程,专注用最简单、最落地的方式,带你从零上手大模型训练、微调、推理、量化、部署全流程。

第一篇就从目前国内最易用、支持最全面的大模型微调框架 ms-swift 3.12(官方稳定版) 讲起,完全依据官方文档编写,包含安装、核心优势、快速启动命令、完整使用链路,新手也能直接跑通。


一、ms-swift 是什么?为什么选它?

ms-swift 是魔搭 ModelScope 社区 开源的大模型与多模态大模型训练、微调、推理、评测、量化、部署一体化框架。

简单说:想快速微调大模型,用 ms-swift 最省事。

核心优势(来自官方 3.12 文档)

  • 模型全 :支持 600+ 纯文本大模型 、300+ 多模态大模型,主流模型 Day0 支持
  • 任务全 :覆盖预训练、SFT 指令微调、人类对齐(DPO/ORPO/KTO)、强化学习(GRPO 家族)
  • 轻量化强 :支持 LoRA、QLoRA、DoRA、LongLoRA 等十余种轻量微调,7B 模型仅需 9GB 显存
  • 显存优化强:支持 GaLore、UnSloth、Flash-Attention 2/3、序列并行
  • 推理加速:集成 vLLM / SGLang / LMDeploy 三大推理引擎
  • 量化完善:支持 AWQ / GPTQ / BNB / FP8 训练与导出
  • 硬件友好:支持 NVIDIA 全系列显卡、CPU、MPS、昇腾 NPU
  • 使用简单:命令行、Web-UI、Notebook 三端可用

一句话总结:从新手炼丹到工业级部署,一个框架全搞定。


二、ms-swift 3.12 安装(官方标准方式)

1. pip 安装(官方推荐)

bash 复制代码
# 基础安装
pip install 'ms-swift' -U

# 全能力安装(训练+推理+评测+部署)
pip install 'ms-swift[all]' -U

2. 源码安装

bash 复制代码
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e '.[all]'

3. 环境要求(官方)

  • Python ≥ 3.9
  • CUDA 12.x 推荐
  • PyTorch ≥ 2.0
  • 显卡:A10/A100/RTX 20/30/40/T4/V100

三、10 分钟快速上手:单卡 3090 跑通 Qwen2.5 微调

官方示例:10 分钟在单卡 3090 上对 Qwen2.5-7B-Instruct 进行自我认知微调

1. SFT 指令微调(官方标准命令)

bash 复制代码
# 22GB
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Qwen/Qwen2.5-7B-Instruct \
    --train_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 \
    --system 'You are a helpful assistant.' \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4 \
    --model_author swift \
    --model_name swift-robot

2. 训练完成 → 推理测试

(1)普通交互式推理

bash 复制代码
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

(2)merge LoRA + vLLM 加速推理

bash 复制代码
# 使用交互式命令行进行推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

# merge-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

3. 模型导出 + 推送到 ModelScope

bash 复制代码
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

四、官方小贴士(非常重要)

  1. 自定义数据集

    按照官方格式整理后,直接指定 --dataset <你的数据集路径> 即可。

  2. model_name / model_author

    只有在数据集包含 swift/self-cognition 时才生效。

  3. 切换模型

    只需要修改 --model <模型ID或路径>,其他参数基本不用动。

  4. 使用 HuggingFace

    添加 --use_hf true,自动从 HF 下载模型与数据集。

  5. 自动加载参数

    使用 --adapters 时,Swift 会自动读取 args.json,无需重复指定 --model、--system。


五、ms-swift 3.12 支持的核心能力

1. 训练方式

  • 预训练 PT
  • 监督微调 SFT
  • 偏好学习:DPO / ORPO / SimPO / KTO / CPO / RM
  • 强化学习:GRPO 家族(GRPO、DAPO、GSPO、SAPO、CISPO、RLOO 等)
  • Embedding / Reranker / 序列分类

2. 轻量化微调

LoRA、QLoRA、DoRA、LoRA+、LLaMAPro、LongLoRA、LoRA-GA、ReFT、RS-LoRA、Adapter、LISA

3. 推理加速引擎

transformers、vLLM、SGLang、LMDeploy

4. 量化训练与导出

BNB、AWQ、GPTQ、AQLM、HQQ、EETQ、FP8

5. 分布式训练

DDP、DeepSpeed ZeRO2/3、FSDP、Megatron(TP/PP/CP/EP)


六、总结

ms-swift 3.12 是官方稳定版,兼容性最好、坑最少、教程最完善,非常适合新手入门与实际项目使用。

这篇文章完全依据官方 Quick-Start 编写,命令 100% 可直接运行。

你只需要复制 → 粘贴 → 运行,就能从零跑通大模型微调全流程。


下一篇预告

  • 自定义数据集格式详解
  • LoRA 核心参数 rank / alpha 调优
  • dataset_info.json 配置实战
  • 多轮医疗对话数据集训练教程

标签

#ms-swift #大模型微调 #LoRA #Qwen2.5 #大模型部署 #AI实战 #新手教程

相关推荐
朝朝辞暮i16 分钟前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
SHARK_pssm1 小时前
【C++——类和对象(下)】
开发语言·c++·经验分享·笔记
凯哥Java1 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
Ai-_Man2 小时前
您您这可以把Dola的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。用AI导出鸭,答案是可以的
开发语言·前端·人工智能·小程序
Java后端的Ai之路2 小时前
Python进阶探索23 - Python中的Time与Datetime模块
开发语言·数据库·python·datetime·time
沫璃染墨2 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
Java后端的Ai之路2 小时前
Python进阶探索24_应用案例_linux系统的监控
linux·开发语言·python·应用·探索
程序员清风3 小时前
PydanticAI 实战:用类型安全构建可靠的 Python Agent
开发语言·python·安全
落魄实习生3 小时前
Agent Scope Java 2.x 系列【10】Middleware
java·开发语言·ai
Ramble_Naylor3 小时前
async/await:让一个线程同时等很多件事
开发语言·rust