离线速查 / 2026-11-08
4070 Ti 本地实验台
以下硬件与环境检查描述作者在2026年11月的验证环境,不是在检测访问者设备。GPU合成实验尚未实际执行;请下载完整课程后在自己的机器运行。
12GB显存、64GB主存、WSL Ubuntu。先用CPU模拟把状态走对,再用小型CUDA实验测量真实硬件。无需下载模型。
WSL已运行的调度轨迹 · 含抢占的对照轨迹。每一步展示请求状态、物理块、引用数、positions与slot_mapping。迭代编号不是毫秒。
01 / 不装依赖,先看一个请求怎么完成
cd ~/vllm-learn
python3 labs/scheduler_sim.py
python3 labs/scheduler_sim.py --blocks 4 --budget 4 --out labs/results/scheduler-tight默认4条合成请求,共16个输出toy token。改变块数、token预算、prefix开关和调度策略后生成新的JSON与可交互HTML。报告已验证引用计数、完整块前缀、free队列和完成状态。两种策略只模拟教学概念,不是框架实现的替身。
02 / 数值证明Transformer缓存等价
python3 labs/transformer_lab.py all
python3 labs/inference_lab.py all这7个CPU实验需要NumPy。两层toy decoder比较完整、逐token、chunked前向;错误mask是必须失败的负对照。EPLB与DSpark使用明确的缩小算例,不需要大型模型或多卡。
03 / 用4070 Ti做四组小型GPU实验
| 实验 | 变量与输出 | 能解释什么 |
|---|---|---|
| correctness | full/token/chunk最大误差 | 带缓存的非方阵mask必须对齐绝对位置 |
| attention | T=256/512/1024,耗时与峰值分配 | 物化分数矩阵与SDPA auto的开销 |
| memory | 标准BF16 KV张量实际字节 | 112KiB/token,不把主存当显存 |
| graph | 同输入buffer的eager/replay | 静态地址与内容可变的区别 |
bash labs/run-wsl.sh diagnose
# 先激活已安装CUDA PyTorch的环境,然后:
bash labs/run-wsl.sh gpu
bash labs/run-wsl.sh bf16
# 或显式选择已有解释器
LAB_PYTHON=/你的环境/bin/python bash labs/run-wsl.sh gpu
CPU模拟已在WSL运行,NumPy实验在宿主Python运行通过。此次检测Ubuntu默认/usr/bin/python3没有PyTorch,因此GPU实验脚本已完成,尚未在这台GPU上执行;没有填造性能结果。完整环境与命令见本地实验手册。
逐元素验证维度转换
配合维度图解运行 python3 labs/dimension_lab.py。标准库即可跑分头、转置、QKV切片、attention、packed、SwiGLU与TP的数值反例。
先预测,再比较结果
- 固定policy/blocks/budget,仅关闭prefix,预测输入计算量变化。
- 固定其它变量,仅减少blocks,观察排队、复算和抢占;不保证所有场景都会抢占。
- 固定dtype/shape,只比较naive与SDPA;auto不保证FlashAttention,两者精度路径也不同。
- 图捕获后只修改buffer内容,验证replay;不要直接替换输入张量。
GPU报告成功运行后自动生成JSON、CSV、HTML。计时做warmup与同步,报告CUDA事件和墙钟;不把合成算子的耗时写成推理框架吞吐。详见完整手册、复习路线与源码证据。把你预测和实测的差异发给老师,我们据此继续拆解。