Chapter 12

阿里云 DSW / PAI 部署

📌 commit b58b1bdms-swift 的"原生"云环境

ms-swift 是阿里魔搭出品,在阿里云 PAI(Platform for AI)和 DSW(Data Science Workshop)上有原生集成。本章把这条路过一遍。

12.1阿里云 DSW 简介

DSW = 在线 JupyterLab + GPU 实例,按小时计费:

规格GPU典型用途
ecs.gn7iA10 × 1验证 7B LoRA
ecs.gn7eA100-80GB × 1训 13B
ecs.ebmgn7ixA800 × 8训 70B
ecs.ebmgn8vH800 × 8训 100B+

12.2预装镜像

DSW 提供预装 ms-swift 的镜像:

选择镜像 → 模型训练 → modelscope:1.20.0-pytorch2.4.0-gpu-py310-cu124-ubuntu22.04

启动后已经装好 ms-swift + transformers + peft + DeepSpeed + flash-attn,swift 命令直接可用。

12.3典型流程

  1. 创建 DSW 实例,挂 OSS 数据盘;
  2. 从魔搭下载模型(DSW 内访问免费);
  3. swift sft,结果写到 OSS;
  4. swift export 合并 LoRA + 量化;
  5. 推到 PAI-EAS 部署。

12.4OSS 挂载 + 数据持久化

# DSW 控制台 → 创建实例时配 OSS bucket
# 在 DSW 终端
ls /mnt/oss        # 看到挂载的 bucket

# 数据集放 OSS
swift sft --dataset /mnt/oss/datasets/my_data.jsonl ...

# 输出也写 OSS
swift sft --output_dir /mnt/oss/outputs/run_001 ...

关键:DSW 实例本地盘按计费结束就清空,OSS 才永久保留。所有大数据 / 模型 ckpt 都该挂 OSS。

12.5PAI-DLC:多机训练

DSW 是单机,要训 70B+ 上多机用 PAI-DLC(Deep Learning Container):

# DLC 作业 YAML(提交到 PAI)
apiVersion: training.kubeflow.org/v1
kind: PyTorchJob
metadata:
  name: swift-train-llama-70b
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      template:
        spec:
          containers:
          - name: pytorch
            image: registry-vpc.cn-shanghai.aliyuncs.com/pai-dlc/swift:latest
            command: ["torchrun", "--nproc_per_node=8", ...
                       "swift", "sft", "--model", "Qwen/Qwen2.5-72B", ...]
            resources:
              limits:
                nvidia.com/gpu: 8
    Worker:
      replicas: 3
      template:
        spec:
          containers: [...]   # 同 Master

实战中 PAI 控制台有"提交 DLC 训练任务"的可视化界面,自动生成 YAML。

12.6PAI-EAS:推理部署

PAI-EAS = Elastic Algorithm Service,把模型部署成 HTTP 服务:

# 1) 上传模型到 OSS
ossutil cp -r ./merged_model oss://my-bucket/models/

# 2) 在 PAI 控制台 → EAS → 部署服务
- 模型路径:oss://my-bucket/models/merged_model
- 镜像:eas/inference/qwen-vllm
- GPU:A100-80GB × 1
- 服务名:my-qwen-prod
- 自动伸缩:QPS 阈值 / 实例数

部署完拿到 HTTP endpoint,可以用 OpenAI 兼容 client 调用。

12.7魔搭 Notebook 一键训

魔搭社区里"打开 Notebook"按钮可以直接跳到 DSW,模型卡片预先填好,最简一键体验:

魔搭 → 模型库 → Qwen2.5-7B-Instruct → "在 ModelScope NoteBook 中打开"

这种方式适合验证,不适合长期生产任务。

12.8成本对照

训 Qwen2.5-7B SFT LoRA 1 epoch 50k 样本(实际数):

方式GPU 小时大概费用
DSW A100-80GB × 1~6 h~¥240
DLC A800 × 8(同步训)~1 h~¥320
抢占式实例(spot)3-7 折

12.9Web UI:7 个 tab 完整功能

本章前面只提了"DSW 上跑训练"。其实 ms-swift 自带 Gradio Web UI,本地或 DSW 都能开:swift web-ui 默认 0.0.0.0:7860。看 swift/ui/app.py 的 7 个 tab:

tab位置能做什么
LLMTrain swift/ui/llm_train/ 全参 / LoRA SFT 表单 + 训练监控
LLMRLHF swift/ui/llm_rlhf/ DPO / KTO / RM / CPO / SimPO / ORPO / PPO 一表搞定
LLMGRPO swift/ui/llm_grpo/ GRPO 一族算法(DAPO / GSPO / SAPO / CISPO / RLOO / REINFORCE++)
LLMInfer swift/ui/llm_infer/ 5 个 infer engine 切换 + chat 界面
LLMExport swift/ui/llm_export/ 4 种量化导出 + Ollama
LLMEval swift/ui/llm_eval/ EvalScope 100+ benchmark
LLMSample swift/ui/llm_sample/ 数据采样 / API 蒸馏

关键设计点:

12.10Agent 训练:20+ 模型族模板

ms-swift 把"训练工具调用 LLM"做成一等公民。swift/agent_template/ 下 20+ 个模板覆盖:

文件对应模型族tool 格式关键词
qwen.py Qwen2 / Qwen3 / Qwen3.5(中英版) ✿FUNCTION✿ / ✿ARGS✿ / ✿RESULT✿
glm4.py GLM-4 / GLM-4.5 JSON function call
deepseek_v3_1.py / deepseek_v4.pyDeepSeek V3.1 / V4 结构化 tool
mistral.py Mistral 系 tool-use 扩展
llama.py Llama 3+ / Llama 4 native tool calling
kimi_k25.py Kimi K1.5+
minimax_m2.py MiniMax M2
hermes.py Nous-Hermes
qwen3_coder.py Qwen3-Coder 专用
react.py ReAct 通用 Thought: / Action: / Observation:

基类 BaseAgentTemplate + mixin ReactCompatMixin 提供工具描述解析、多轮 Action→Observation 循环、多任务训练、reward shaping。

训练入口:

swift sft \
    --model Qwen/Qwen3-32B \
    --dataset agent_data \
    --agent_template qwen_en   # 选 ReAct + Qwen 风格

12.11云上多机 Ray YAML(生产首选)

DLC 上手动写 torchrun 多节点配置容易出错。v4 之后推荐用 Ray YAMLexamples/yaml/megatron_ray/):

# grpo_ray.yaml
rlhf_type: grpo
model: Qwen/Qwen2.5-7B-Instruct
dataset: dapo_math
algorithm: dapo

ray:
  train:
    num_workers: 8           # Megatron TP/PP/EP worker
    resources: {GPU: 1, CPU: 8}
  rollout:
    num_replicas: 4          # vLLM rollout 副本
    engine: vllm
    resources: {GPU: 2, CPU: 8}

启动:swift rlhf grpo_ray.yamltrain / rollout 各占一片卡,互不抢资源,比传统 DeepSpeed 多机训练易管理。

12.12这章你需要带走的