本课目录(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/加载路径四项,别上来就重装环境。
本课自测
- 环境自检六连是哪六条?分别排除什么故障?
- 为什么切换 Notebook 实例后必须重新执行全部代码?
- 加载模型时
max_inference_batch_size调小是为了避免什么问题? - 为什么两个首跑实验之间不能直接比较 CPU 与 GPU 的速度?
随堂测
逐题作答,即时反馈
1. 环境自检六连(python 版本/依赖/lscpu/nvidia-smi/free/df)主要解决什么问题?
2. 在 Notebook 里切换运行实例(CPU→GPU)后,必须做什么?
3. 加载模型时把 max_inference_batch_size 调小,是为了避免什么问题?