30 分钟跑通第一个开源模型

约 40 分钟L0L1T4T1

课程来源

[来源]《ModelScope Cookbook · 魔搭紫皮书》第 7 章〈30 分钟带你快速看到第一个结果〉与第 10 章〈把模型放到云端跑〉 · ModelScope ms-cookbook 团队与共建者著

原文:github.com/modelscope/ms-cookbook(Apache License 2.0)

[收录说明] 本课为蒸馏改编收录(非全文照录),面向 FDE 培训场景重构结构与补充实验指引;代码以原著及模型卡片为准。

本课目录(6 节)

30 分钟跑通第一个开源模型

模型下载下来,可以在笔记本上跑,也可以放云端。第一次的目标只有一个:用最短路径看到第一个结果——环境通、模型载入、推理出活,三步闭环走通,后面所有章节都在这条路径上加深度。

一、开环境:从模型页面直达 Notebook

魔搭模型页面(如 Qwen/Qwen3-ASR-1.7B)右侧有"Notebook 快速开发"入口,点进去创建实例 → "连接运行时"选 CPU 或 GPU → 按模型依赖选预装镜像(课程实验用 ubuntu22.04-cuda12.8.1-py312-torch2.10.0 系)。页面开在自己电脑上,模型跑在云端实例里。

注意:切换实例后,原 Python 进程和已加载的模型不会自动搬过去,要在新环境重新检查依赖、重新执行代码。

二、环境自检六连

新环境先跑六条命令,把"环境是否就绪"变成确定性答案:

!python3 --version   # Python 版本
!pip3 show qwen-asr  # 模型专属依赖(按模型卡片确认包名,缺就 pip install)
!lscpu               # CPU 配置
!nvidia-smi          # GPU 型号与显存
!free -h             # 内存
!df -h               # 磁盘

这套自检值得养成肌肉记忆——将来在客户服务器上排查"模型起不来",前三分钟做的就是这几条:依赖缺、显存不够、磁盘满了,六条命令全暴露。

三、首跑实验一:语音识别(GPU)

按模型卡片示例加载 Qwen3-ASR-1.7B(自动下载,或换成 snapshot_download 到 /mnt/workspace 的本地路径):

import torch
from qwen_asr import Qwen3ASRModel

model = Qwen3ASRModel.from_pretrained(
    "Qwen/Qwen3-ASR-1.7B",
    dtype=torch.bfloat16,
    device_map="cuda:0",
    max_inference_batch_size=32,  # 调小可避免 OOM
    max_new_tokens=256,
)
results = model.transcribe(audio="your_audio.wav", language=None)
print(results[0].language, results[0].text)

一段音频进、一段文字出,第一个结果到手。传自己上传的音频文件时,把 audio 换成本地路径即可。

四、首跑实验二:CPU 推理与 GPU 生图各来一次

CPU 跑 0.5B 情感分类(Qwen2.5-0.5B-Instruct,device_map="cpu"):提示词限定"仅输出正面/负面/中性三词之一",验证小模型在 CPU 上做轻任务完全可行——这是"低端客户环境也能交付"的证据。

GPU 跑文生图(Z-Image-Turbo + diffusers/ZImagePipeline):一段中文描述生成 1024×1024 图片,num_inference_steps=9 少步数出图。注意两个实验任务和模型都不同,不能用耗时直接比较 CPU 与 GPU 谁快。

五、FDE 视角:首跑路径就是驻场交付的彩排

  • 标准动作清单:环境自检六连 → 按模型卡片装依赖 → 指定本地路径加载 → 最小输入推理。把这套动作写进你的交付手册,任何新模型都是同一套路;
  • 客户演示:Notebook 是最低成本的演示环境——客户只看到浏览器里的输入输出,不需要提前准备任何环境;演示音频让客户现场说一段,效果远好于放预制样本;
  • 排障口径:起不来时按"依赖 → 显存 → 磁盘 → 路径"顺序排查,对应自检六连的第 2/4/6/加载路径四项,别上来就重装环境。

本课自测

  1. 环境自检六连是哪六条?分别排除什么故障?
  2. 为什么切换 Notebook 实例后必须重新执行全部代码?
  3. 加载模型时 max_inference_batch_size 调小是为了避免什么问题?
  4. 为什么两个首跑实验之间不能直接比较 CPU 与 GPU 的速度?

随堂测

逐题作答,即时反馈

0 / 3 已作答
  1. 1. 环境自检六连(python 版本/依赖/lscpu/nvidia-smi/free/df)主要解决什么问题?

  2. 2. 在 Notebook 里切换运行实例(CPU→GPU)后,必须做什么?

  3. 3. 加载模型时把 max_inference_batch_size 调小,是为了避免什么问题?