ms-swift框架入门:从安装到训练,完整流程手把手教学

1. 引言

如果你对AI大模型感兴趣,想自己动手微调一个专属的智能助手,但又被复杂的代码和配置劝退,那么今天这篇文章就是为你准备的。

想象一下,你手头有一个通用的大语言模型,比如Qwen或者Llama,你想让它学会你的专业知识,或者按照你的风格说话,甚至让它看懂图片、听懂语音。传统的方法需要你精通深度学习框架,写一堆复杂的训练脚本,光是环境配置就能折腾好几天。

但现在,有一个工具能让你在10分钟内,用简单的命令行就完成大模型的微调训练。这就是ms-swift——一个由魔搭社区推出的、专门为大模型和多模态模型设计的微调部署框架。

简单来说,ms-swift就像是大模型训练的“瑞士军刀”。它把训练大模型需要的所有复杂步骤都封装成了简单的命令,你不需要懂底层原理,只需要告诉它“用什么模型”、“用什么数据”、“想怎么训练”,它就能帮你搞定一切。

这篇文章,我将带你从零开始,手把手教你如何使用ms-swift框架。无论你是AI新手,还是有一定经验的开发者,都能跟着这篇教程,快速上手大模型微调。

2. 为什么选择ms-swift?

在开始动手之前,你可能想知道:市面上大模型训练工具也不少,为什么我要选择ms-swift?

让我用大白话给你解释几个关键优势:

2.1 支持的模型多到惊人

ms-swift支持600多种纯文本大模型和300多种多模态大模型。这意味着无论你想训练Qwen、Llama、GLM、Mistral这些主流模型,还是想训练能看懂图片的Qwen-VL、Llava,或者是能处理视频的模型,ms-swift都能支持。

而且热门模型都是“Day 0支持”——就是模型一发布,ms-swift马上就能用。你不用等社区适配,第一时间就能尝鲜。

2.2 训练方式灵活多样

你想怎么训练你的模型?ms-swift给了你多种选择:

  • 轻量微调:如果你的显卡不够强,可以用LoRA、QLoRA这些方法,用很少的显存就能训练大模型。7B的模型,9GB显存就能跑起来。
  • 全参数训练:如果你有足够的算力,想从头开始训练,也完全支持。
  • 强化学习:想让模型更智能?ms-swift内置了GRPO、DPO、KTO等多种强化学习算法,能让模型学会“思考”和“判断”。
  • 多模态训练:不仅能训练文本模型,还能训练能看懂图片、视频、语音的多模态模型。

2.3 硬件要求亲民

你不需要有A100、H100这些昂贵的专业显卡。ms-swift支持从消费级的RTX系列显卡(比如RTX 3090、4090),到云服务器常用的T4、V100,甚至CPU都能跑。这意味着你用自己的电脑就能开始训练。

2.4 操作简单,门槛低

这是ms-swift最大的优势。它提供了三种使用方式:

  1. 命令行:一条命令就能开始训练,适合喜欢敲代码的开发者
  2. Web界面:点点鼠标就能训练,完全零代码,适合所有人
  3. Python API:如果你想深度定制,也可以用Python代码灵活控制

无论你是哪种用户,都能找到适合自己的方式。

3. 环境准备与快速安装

好了,理论说再多不如动手试试。现在我们就来一步步搭建ms-swift的环境。

3.1 硬件和系统要求

在开始之前,先确认你的设备是否符合要求:

  • 操作系统:Linux(推荐Ubuntu 20.04/22.04)、macOS、Windows(通过WSL)
  • 显卡:NVIDIA GPU(推荐8GB以上显存),支持RTX 20/30/40系列、T4、V100、A100等
  • 内存:至少16GB RAM
  • 存储:至少50GB可用空间(用于存放模型和数据集)

如果你没有独立显卡,也可以用CPU训练,但速度会比较慢。对于入门学习,建议至少有一张8GB显存的显卡。

3.2 安装步骤

ms-swift的安装非常简单,只需要几个命令。打开你的终端(Linux/macOS)或者命令提示符(Windows),跟着我做:

# 1. 创建并激活Python虚拟环境(推荐,避免包冲突)
python -m venv swift-env
source swift-env/bin/activate  # Linux/macOS
# 或者 swift-env\Scripts\activate  # Windows

# 2. 安装PyTorch(根据你的CUDA版本选择)
# 如果你有CUDA 11.8,用这个:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 如果你有CUDA 12.1,用这个:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 如果你没有CUDA,用CPU版本:
pip install torch torchvision torchaudio

# 3. 安装ms-swift
pip install ms-swift

安装完成后,验证一下是否安装成功:

swift --version

如果看到类似“swift, version 3.x.x”的输出,说明安装成功了!

3.3 常见安装问题解决

如果你在安装过程中遇到问题,别着急,这里有几个常见问题的解决方法:

问题1:安装速度慢或超时

# 使用国内镜像源加速
pip install ms-swift -i https://pypi.tuna.tsinghua.edu.cn/simple

问题2:提示缺少依赖

# 先升级pip,然后重新安装
pip install --upgrade pip
pip install ms-swift

问题3:CUDA版本不匹配

# 查看你的CUDA版本
nvidia-smi
# 然后根据显示的CUDA版本,选择对应的PyTorch安装命令

环境准备好了,接下来我们进入最激动人心的部分——实际训练一个模型!

4. 10分钟快速上手:训练你的第一个大模型

现在,我要带你完成一个完整的训练流程。我们将用Qwen2.5-7B-Instruct这个模型,教它认识自己是谁(自我认知微调)。

4.1 准备训练命令

打开终端,确保你在虚拟环境中,然后输入以下命令:

# 单卡训练命令(适合RTX 3090/4090等24GB显存显卡)
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

让我解释一下这个命令里几个关键参数是什么意思:

  • --model Qwen/Qwen2.5-7B-Instruct:指定要训练的模型,这里用的是Qwen2.5的7B指令版本
  • --train_type lora:使用LoRA微调方法,这是一种轻量级的训练方式,显存占用少
  • --dataset:指定训练数据,我们用了三个数据集,每个取500条数据
  • --output_dir output:训练结果会保存在output文件夹里
  • --model_author swift --model_name swift-robot:给训练好的模型起个名字

4.2 开始训练

输入命令后,按回车键。你会看到类似这样的输出:

Downloading model Qwen/Qwen2.5-7B-Instruct...
Downloading dataset AI-ModelScope/alpaca-gpt4-data-zh...
Preprocessing data...
Initializing training...
Epoch 1/1:   0%|          | 0/1000 [00:00<?, ?it/s]

训练开始了!整个过程大概需要10-30分钟,具体时间取决于你的显卡性能。在RTX 3090上,大概15分钟就能完成。

训练过程中,你会看到进度条和日志信息,包括当前的训练损失、学习率变化等。这些都是正常的,说明训练正在顺利进行。

4.3 训练完成后的文件

训练完成后,到output目录下看看:

ls output/

你会看到类似这样的文件结构:

output/
├── checkpoint-50/      # 第50步的检查点
├── checkpoint-100/     # 第100步的检查点
├── ...                # 其他检查点
├── last/              # 最后一个检查点(通常是最好的)
└── args.json          # 训练参数配置文件

每个checkpoint文件夹里都保存了训练好的模型权重。last/文件夹里是训练最后保存的权重,通常效果最好。

5. 测试训练好的模型

模型训练好了,现在我们来试试效果。用训练好的模型进行推理:

5.1 基础推理测试

# 使用交互式命令行进行推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/last/checkpoint-xxx \  # 替换成你的checkpoint路径
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

运行这个命令后,你会进入一个交互式对话界面。试试问它一些问题:

用户:你是谁?
模型:我是swift-robot,一个由swift训练的AI助手。
用户:你能做什么?
模型:我可以回答各种问题,帮助你解决问题,进行对话交流。

看到了吗?模型已经学会了我们教给它的“自我认知”——它知道自己叫swift-robot,是由swift训练的。

5.2 使用vLLM加速推理

如果你想获得更快的推理速度,可以合并LoRA权重并使用vLLM加速:

# merge-lora并使用vLLM进行推理加速
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/last/checkpoint-xxx \
    --stream true \
    --merge_lora true \
    --infer_backend vllm \
    --vllm_max_model_len 8192 \
    --temperature 0 \
    --max_new_tokens 2048

vLLM是一个专门为大模型推理优化的引擎,能显著提升推理速度。--merge_lora true会把LoRA权重合并到基础模型里,这样推理时就不需要额外加载LoRA模块了。

6. 进阶功能:使用自己的数据训练

刚才我们用的是公开数据集,但实际应用中,你肯定想用自己的数据训练模型。别担心,ms-swift支持自定义数据集,而且格式很简单。

6.1 准备自定义数据集

创建一个JSONL格式的文件,比如叫my_data.jsonl,内容像这样:

{"query": "什么是机器学习?", "response": "机器学习是人工智能的一个分支,让计算机从数据中学习规律。"}
{"query": "Python有什么特点?", "response": "Python语法简洁,有丰富的库,适合快速开发。"}
{"query": "如何学习编程?", "response": "从基础语法开始,多写代码,参与实际项目。"}

每行是一个JSON对象,包含query(问题)和response(回答)。你也可以用其他格式,ms-swift支持多种数据格式。

6.2 使用自定义数据训练

准备好数据后,训练命令只需要改一下数据集路径:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Qwen/Qwen2.5-7B-Instruct \
    --train_type lora \
    --dataset ./my_data.jsonl \  # 使用本地文件
    --torch_dtype bfloat16 \
    --num_train_epochs 3 \       # 可以多训练几轮
    --per_device_train_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --gradient_accumulation_steps 16 \
    --max_length 2048 \
    --output_dir my_output \
    --system '你是一个专业的技术顾问。'

这样,模型就会用你的数据学习,成为你的专属助手。

6.3 多轮对话数据格式

如果你的数据是多轮对话,可以这样组织:

{
  "conversations": [
    {"role": "user", "content": "你好"},
    {"role": "assistant", "content": "你好!有什么可以帮助你的吗?"},
    {"role": "user", "content": "推荐几本编程书"},
    {"role": "assistant", "content": "《Python编程从入门到实践》《算法导论》都不错。"}
  ]
}

ms-swift会自动识别这种格式,并进行正确处理。

7. Web界面:零代码训练体验

如果你不想敲命令,ms-swift还提供了Web界面,点点鼠标就能训练模型。

7.1 启动Web界面

swift web-ui

然后在浏览器中打开 http://localhost:7860,你会看到一个友好的界面:

Web界面示意图

7.2 界面功能一览

Web界面主要分为几个区域:

  1. 模型选择:下拉菜单选择要训练的模型
  2. 训练配置:设置训练参数(学习率、批次大小等)
  3. 数据集管理:上传或选择训练数据
  4. 训练监控:实时查看训练进度和损失曲线
  5. 推理测试:训练完成后直接测试模型效果

7.3 通过界面训练模型

操作步骤很简单:

  1. 在“模型选择”里选一个模型(比如Qwen2.5-7B-Instruct)
  2. 在“数据集”里上传你的数据文件
  3. 调整训练参数(新手可以用默认值)
  4. 点击“开始训练”
  5. 等待训练完成,然后在“推理测试”里试试效果

整个过程完全可视化,不需要写任何代码。特别适合不熟悉命令行的用户,或者想快速验证想法的场景。

8. 更多训练场景示例

ms-swift的功能远不止基础的微调。下面我介绍几个常见的进阶用法。

8.1 预训练(从头开始训练)

如果你想用大量无标注数据训练模型,可以用预训练模式:

# 8卡A100训练示例
NPROC_PER_NODE=8 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
swift pt \
    --model Qwen/Qwen2.5-7B \
    --dataset swift/chinese-c4 \
    --streaming true \
    --train_type full \
    --deepspeed zero2 \
    --output_dir output \
    --max_steps 10000

这个命令会使用8张A100显卡,用中文C4数据集对Qwen2.5-7B进行预训练。--streaming true表示流式读取数据,适合处理超大规模数据集。

8.2 强化学习训练(DPO)

如果你想用偏好数据让模型学会“什么回答更好”,可以用DPO训练:

CUDA_VISIBLE_DEVICES=0 swift rlhf \
    --rlhf_type dpo \
    --model Qwen/Qwen2.5-7B-Instruct \
    --dataset hjh0119/shareAI-Llama3-DPO-zh-en-emoji \
    --train_type lora \
    --output_dir output_dpo

DPO训练需要的数据格式比较特殊,包含“选择的回答”和“拒绝的回答”。这种训练能让模型学会生成更符合人类偏好的内容。

8.3 多模态模型训练

ms-swift也支持训练多模态模型(能看懂图片的模型):

CUDA_VISIBLE_DEVICES=0 swift sft \
    --model Qwen/Qwen2.5-VL-7B-Instruct \
    --dataset 'path/to/your/multimodal_data' \
    --train_type lora \
    --output_dir output_vl

多模态数据需要包含图片和对应的文本描述。训练完成后,模型就能理解图片内容并回答相关问题了。

9. 模型部署与分享

训练好的模型,你肯定想分享给别人用,或者部署成服务。ms-swift也提供了简单的方法。

9.1 推送模型到魔搭社区

swift export \
    --adapters output/last/checkpoint-xxx \
    --push_to_hub true \
    --hub_model_id 'your-username/your-model-name' \
    --hub_token 'your-sdk-token'

这样就把训练好的模型推送到魔搭社区了,其他人可以直接下载使用。

9.2 部署为API服务

# 使用vLLM部署
CUDA_VISIBLE_DEVICES=0 swift deploy \
    --model Qwen/Qwen2.5-7B-Instruct \
    --adapters output/last/checkpoint-xxx \
    --infer_backend vllm \
    --port 8000

部署后,你就可以通过HTTP API调用模型了:

curl -X POST http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen2.5-7B-Instruct",
    "messages": [
      {"role": "user", "content": "你好"}
    ]
  }'

9.3 量化模型减小体积

如果模型太大,可以用量化技术减小模型体积:

CUDA_VISIBLE_DEVICES=0 swift export \
    --model Qwen/Qwen2.5-7B-Instruct \
    --adapters output/last/checkpoint-xxx \
    --quant_bits 4 \
    --quant_method awq \
    --output_dir Qwen2.5-7B-Instruct-4bit

这个命令会把模型量化为4位精度,模型文件大小会减少到原来的1/4左右,推理速度也会更快。

10. 总结与下一步建议

通过这篇教程,你应该已经掌握了ms-swift的基本用法。我们来回顾一下重点:

10.1 核心收获

  1. ms-swift是什么:一个简单易用的大模型微调框架,支持600+文本模型和300+多模态模型
  2. 三种使用方式:命令行(适合开发者)、Web界面(适合所有人)、Python API(适合深度定制)
  3. 完整训练流程:从安装环境、准备数据、开始训练,到测试效果、部署服务
  4. 多种训练模式:支持SFT微调、预训练、强化学习、多模态训练等
  5. 硬件要求友好:从消费级显卡到专业卡都支持,甚至CPU也能跑

10.2 给新手的建议

如果你是第一次接触大模型训练,我建议:

  1. 从简单的开始:先用公开数据集(比如alpaca-gpt4-data)训练一个基础模型,熟悉整个流程
  2. 用小模型练手:7B左右的模型在24G显存的显卡上就能训练,成本低,速度快
  3. 多用Web界面:特别是刚开始的时候,可视化界面能帮你理解各个参数的作用
  4. 保存实验记录:每次训练都记录下参数设置和结果,方便对比和优化

10.3 进阶学习方向

当你掌握了基础用法后,可以尝试:

  1. 尝试不同的训练方法:除了LoRA,还可以试试全参数训练、QLoRA、DoRA等
  2. 使用自己的数据:收集或整理你的专业领域数据,训练专属模型
  3. 探索多模态:试试训练能看懂图片或视频的模型
  4. 优化训练效果:调整学习率、批次大小等超参数,找到最佳配置
  5. 参与社区:关注ms-swift的GitHub和文档,学习其他人的经验

10.4 常见问题快速参考

问题可能原因解决方法
显存不足模型太大或批次太大使用--train_type lora,减小--per_device_train_batch_size
训练速度慢显卡性能不足使用--gradient_accumulation_steps累积梯度,增大有效批次
模型效果不好数据质量差或训练轮数少清洗数据,增加--num_train_epochs
下载模型失败网络问题使用国内镜像源,或手动下载模型到本地

10.5 资源推荐

大模型训练听起来很高深,但有了ms-swift这样的工具,其实门槛已经降低了很多。现在,你完全有能力训练属于自己的AI助手了。从今天开始,动手试试吧!


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

更多推荐