ms-swift + Qwen实战:构建专属AI助手全过程

你是否想过,自己动手打造一个懂你、听你指挥的AI助手?不是那种千篇一律的聊天机器人,而是真正属于你的——会写代码、能做设计、甚至理解你说话风格的智能体。听起来像科幻?其实只需要ms-swift框架 + Qwen大模型,再加一台带GPU的机器,就能从零开始实现。

本文将带你完整走一遍:如何用 ms-swift 对 通义千问Qwen系列模型 进行微调,训练出一个“认识你自己”的专属AI,并完成推理部署。整个过程无需深厚算法背景,只要你会敲命令行,就能上手。


1. 为什么选择 ms-swift?

在动手之前,先搞清楚我们用的工具到底强在哪。ms-swift 不是又一个“跑个demo”的玩具框架,它是魔搭社区推出的大模型全链路微调与部署平台,一句话概括:从训练到上线,一气呵成。

1.1 全栈支持,覆盖全流程

很多框架只解决某一个环节,比如只做LoRA微调,或者只负责推理加速。而 ms-swift 把整条链路都打通了:

  • 训练:支持预训练、指令微调(SFT)、强化学习(DPO/KTO/GRPO)
  • 推理:集成 vLLM、LmDeploy、SGLang,支持流式输出和高并发
  • 量化:支持 GPTQ、AWQ、BNB 和 FP8,大幅降低显存占用
  • 评测:内置 EvalScope,可对模型能力做系统性打分
  • 部署:一键生成 OpenAI 兼容接口,方便接入现有应用

这意味着你不需要在七八个工具之间来回切换,所有操作都可以通过统一的 swift xxx 命令完成。

1.2 模型广度惊人,主流全覆盖

截至当前,ms-swift 已支持:

  • 600+ 纯文本大模型:包括 Qwen、Llama3、ChatGLM、Mistral、DeepSeek 等
  • 300+ 多模态大模型:如 Qwen-VL、InternVL、Llava、MiniCPM-V 等
  • All-to-All 全模态训练:文本、图像、语音、视频混合输入也不在话下

更重要的是,新发布的模型往往能做到“Day0支持”,比如 Qwen3 发布当天,ms-swift 就已适配完毕。

1.3 资源友好,单卡也能玩转7B

别被“大模型”三个字吓退。ms-swift 提供了多种轻量级训练方式,让普通开发者也能负担得起:

方法显存需求(7B模型)特点
LoRA~12GB只训练少量参数,速度快
QLoRA~9GB加入4-bit量化,更省显存
DoRA~11GB分离幅度与方向,效果更好

也就是说,一块 RTX 3090 / A10 就足以完成一次完整的微调任务。


2. 准备工作:环境搭建与依赖安装

要运行 ms-swift,你需要一台装有 NVIDIA GPU 的 Linux 机器(Windows WSL也可),并确保以下条件满足:

  • Python >= 3.8
  • PyTorch >= 2.0
  • CUDA 驱动正常
  • 至少 24GB 显存(推荐 A10/A100)

2.1 安装 ms-swift

最简单的方式是通过 pip 直接安装:

pip install "modelscope[swift]" -U

如果你需要使用 Hugging Face 模型或数据集,额外安装:

pip install "modelscope[swift-hf]" -U

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

swift --help

你应该能看到一系列子命令:sft, pt, rlhf, infer, deploy 等。

2.2 下载模型(可选)

虽然 ms-swift 支持在线加载模型,但为了加快后续流程,建议提前下载:

from modelscope import snapshot_download

snapshot_download('qwen/Qwen2.5-7B-Instruct')

这样模型会被缓存到本地,避免每次训练都要重新拉取。


3. 实战第一步:微调你的专属AI助手

我们的目标很明确:让 Qwen 学会“认识你”。比如当用户问“你是谁?”时,它不再回答“我是通义千问”,而是说“我是张伟的AI助手,擅长写Python脚本和整理会议纪要”。

这个任务叫做 自我认知微调(Self-Cognition SFT),ms-swift 内置了相关数据集,开箱即用。

3.1 构造训练命令

执行以下命令开始微调:

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: 指定基础模型,这里使用 Qwen2.5-7B-Instruct
  • --train_type lora: 使用 LoRA 微调,只更新低秩矩阵
  • --dataset: 训练数据包含三部分:
    • 中文 Alpaca 数据(500条)
    • 英文 Alpaca 数据(500条)
    • 自我认知数据(500条)
  • --model_author/model_name: 当数据集中包含 swift/self-cognition 时,这两个字段会注入模型记忆
  • --output_dir: 训练结果保存路径

⚠️ 注意:如果你使用自定义数据集,请参考 官方文档 组织 JSON 格式。

3.2 观察训练过程

运行后你会看到类似输出:

Epoch 1: 100%|██████████| 1000/1000 [15:32<00:00,  1.07it/s]
loss: 1.87, acc: 0.72, lr: 1.00e-4

整个训练大约持续15分钟(取决于硬件)。结束后,模型权重会保存在 output/vx-xxx/checkpoint-xxx 目录下。


4. 推理测试:看看你的AI学会了什么

训练完成不代表结束,下一步是验证效果。

4.1 交互式推理

使用 swift infer 启动对话模式:

CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

进入交互界面后,输入:

user: 你是谁?
assistant: 我是 swift-robot,由 swift 训练的AI助手。

看到了吗?它已经记住了你是谁!

再试试复杂一点的问题:

user: 写一段Python代码,读取CSV文件并统计每列缺失值。
assistant: 
import pandas as pd
df = pd.read_csv('data.csv')
print(df.isnull().sum())

不错,基本功能依然在线。

4.2 批量推理(Python脚本)

如果你想批量处理请求,可以用 Python API:

from swift import PtEngine

engine = PtEngine(
    model_id_or_path="qwen/Qwen2.5-7B-Instruct",
    adapters=["output/vx-xxx/checkpoint-xxx"]
)

resp = engine.infer([
    {"role": "user", "content": "介绍一下你自己"}
], max_tokens=512)

print(resp[0].choices[0].message.content)
# 输出:我是 swift-robot,由 swift 训练的AI助手...

这种方式适合集成进自动化流程或Web服务。


5. 性能优化:合并LoRA + vLLM加速

目前的推理是基于原生 PyTorch 引擎,速度一般。要想提升吞吐量,必须上 vLLM。

但注意:vLLM 默认不支持 LoRA 加载。我们需要先将 LoRA 权重合并到主模型中。

5.1 合并LoRA权重

swift export \
    --adapters output/vx-xxx/checkpoint-xxx \
    --merge_lora true \
    --output_dir ./merged-model

这一步会生成一个新的模型目录 merged-model,其中包含了融合后的完整权重。

5.2 使用vLLM加速推理

启动 vLLM 服务:

CUDA_VISIBLE_DEVICES=0 \
swift deploy \
    --model ./merged-model \
    --infer_backend vllm \
    --vllm_max_model_len 8192 \
    --host 0.0.0.0 \
    --port 8080

服务启动后,默认暴露 OpenAI 兼容接口。你可以用标准 OpenAI SDK 调用:

from openai import OpenAI

client = OpenAI(api_key="EMPTY", base_url="http://localhost:8080/v1")

response = client.chat.completions.create(
    model="qwen2.5-7b-instruct",
    messages=[{"role": "user", "content": "你是谁?"}],
    temperature=0,
    max_tokens=512
)

print(response.choices[0].message.content)

实测显示,使用 vLLM 后,推理吞吐提升3倍以上,尤其在 batch > 1 时优势明显。


6. Web界面:零代码训练与推理

如果你不想碰命令行,ms-swift 还提供了图形化界面。

6.1 启动Web UI

swift web-ui

访问 http://<your-ip>:7860 即可进入操作面板:

  • 可视化选择模型、数据集、训练方法
  • 实时查看训练日志和损失曲线
  • 内置推理窗口,支持多轮对话
  • 支持导出模型、推送至ModelScope

web-ui示意图

这对于非技术背景的用户非常友好,哪怕完全不懂代码,也能完成一次完整的微调+部署流程。


7. 高阶玩法:扩展你的AI能力

现在你已经有了一个“认识你”的AI,接下来可以考虑让它变得更强大。

7.1 换更强的模型

只需修改 --model 参数,就能换成更大更强的模型:

--model qwen/Qwen2.5-14B-Instruct

当然,显存要求也会提高(14B约需40GB),但训练逻辑完全一致。

7.2 加入专业领域知识

你可以准备一份自己的简历、项目经历、常用话术,构造成 instruction 数据格式,加入训练集:

{
  "instruction": "请用我的口吻回复客户邮件",
  "input": "客户询问产品交付时间",
  "output": "您好,感谢关注。我们预计下周三完成交付,届时会第一时间通知您。"
}

然后通过 --dataset /path/to/my-data.json 加载,让你的AI学会“像你一样说话”。

7.3 强化学习进阶:让AI更聪明

如果想进一步提升质量,可以使用 DPO 或 GRPO 等偏好学习算法:

swift rlhf \
    --rlhf_type dpo \
    --model qwen/Qwen2.5-7B-Instruct \
    --dataset your-preference-data \
    --train_type lora \
    --output_dir dpo-output

这类方法能让模型更好地区分“好回答”和“坏回答”,特别适合客服、写作等场景。


8. 总结:每个人都能拥有自己的AI

通过这次实战,你应该已经体会到:构建专属AI助手,并没有想象中那么难。

借助 ms-swift 这样的一站式框架,我们可以轻松完成:

  • ✅ 下载模型
  • ✅ 准备数据
  • ✅ LoRA微调
  • ✅ 推理测试
  • ✅ vLLM加速
  • ✅ Web部署

整个过程不超过两小时,成本控制在百元以内(云实例按小时计费)。

更重要的是,这种“个性化微调”正在成为AI落地的核心路径。未来的智能助手不会是通用的,而是懂你、信你、替你思考的数字分身。

而 ms-swift + Qwen 的组合,正是通往这一未来的最低门槛入口。


获取更多AI镜像

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐