ms-swift框架入门:从安装到训练,完整流程手把手教学
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最大的优势。它提供了三种使用方式:
- 命令行:一条命令就能开始训练,适合喜欢敲代码的开发者
- Web界面:点点鼠标就能训练,完全零代码,适合所有人
- 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,你会看到一个友好的界面:

7.2 界面功能一览
Web界面主要分为几个区域:
- 模型选择:下拉菜单选择要训练的模型
- 训练配置:设置训练参数(学习率、批次大小等)
- 数据集管理:上传或选择训练数据
- 训练监控:实时查看训练进度和损失曲线
- 推理测试:训练完成后直接测试模型效果
7.3 通过界面训练模型
操作步骤很简单:
- 在“模型选择”里选一个模型(比如Qwen2.5-7B-Instruct)
- 在“数据集”里上传你的数据文件
- 调整训练参数(新手可以用默认值)
- 点击“开始训练”
- 等待训练完成,然后在“推理测试”里试试效果
整个过程完全可视化,不需要写任何代码。特别适合不熟悉命令行的用户,或者想快速验证想法的场景。
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 核心收获
- ms-swift是什么:一个简单易用的大模型微调框架,支持600+文本模型和300+多模态模型
- 三种使用方式:命令行(适合开发者)、Web界面(适合所有人)、Python API(适合深度定制)
- 完整训练流程:从安装环境、准备数据、开始训练,到测试效果、部署服务
- 多种训练模式:支持SFT微调、预训练、强化学习、多模态训练等
- 硬件要求友好:从消费级显卡到专业卡都支持,甚至CPU也能跑
10.2 给新手的建议
如果你是第一次接触大模型训练,我建议:
- 从简单的开始:先用公开数据集(比如alpaca-gpt4-data)训练一个基础模型,熟悉整个流程
- 用小模型练手:7B左右的模型在24G显存的显卡上就能训练,成本低,速度快
- 多用Web界面:特别是刚开始的时候,可视化界面能帮你理解各个参数的作用
- 保存实验记录:每次训练都记录下参数设置和结果,方便对比和优化
10.3 进阶学习方向
当你掌握了基础用法后,可以尝试:
- 尝试不同的训练方法:除了LoRA,还可以试试全参数训练、QLoRA、DoRA等
- 使用自己的数据:收集或整理你的专业领域数据,训练专属模型
- 探索多模态:试试训练能看懂图片或视频的模型
- 优化训练效果:调整学习率、批次大小等超参数,找到最佳配置
- 参与社区:关注ms-swift的GitHub和文档,学习其他人的经验
10.4 常见问题快速参考
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 显存不足 | 模型太大或批次太大 | 使用--train_type lora,减小--per_device_train_batch_size |
| 训练速度慢 | 显卡性能不足 | 使用--gradient_accumulation_steps累积梯度,增大有效批次 |
| 模型效果不好 | 数据质量差或训练轮数少 | 清洗数据,增加--num_train_epochs |
| 下载模型失败 | 网络问题 | 使用国内镜像源,或手动下载模型到本地 |
10.5 资源推荐
- 官方文档:Swift Documentation - 最全面的参考资料
- GitHub仓库:modelscope/ms-swift - 查看源码和示例
- 示例代码:examples目录 - 各种训练场景的示例
- 社区讨论:魔搭社区论坛 - 和其他用户交流经验
大模型训练听起来很高深,但有了ms-swift这样的工具,其实门槛已经降低了很多。现在,你完全有能力训练属于自己的AI助手了。从今天开始,动手试试吧!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)