离线速查 / 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实验

实验变量与输出能解释什么
correctnessfull/token/chunk最大误差带缓存的非方阵mask必须对齐绝对位置
attentionT=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的数值反例。

先预测,再比较结果

  1. 固定policy/blocks/budget,仅关闭prefix,预测输入计算量变化。
  2. 固定其它变量,仅减少blocks,观察排队、复算和抢占;不保证所有场景都会抢占。
  3. 固定dtype/shape,只比较naive与SDPA;auto不保证FlashAttention,两者精度路径也不同。
  4. 图捕获后只修改buffer内容,验证replay;不要直接替换输入张量。

GPU报告成功运行后自动生成JSON、CSV、HTML。计时做warmup与同步,报告CUDA事件和墙钟;不把合成算子的耗时写成推理框架吞吐。详见完整手册、复习路线与源码证据。把你预测和实测的差异发给老师,我们据此继续拆解。