LLM Inference Lab
8 × A800 · vLLM · 2026-09

通过亲手部署来理解大模型

这是一份学习记录:一台百度云上的 8 卡 A800 机器,把 GLM-5.3-Flash、Qwen3.6-35B-A3B、Qwen3.8-27B 部署上线,设计一套性能和质量指标跑完评测,把推理过程中 GPU 到底在做什么做成可以拨弄的实验台,最后从零训练一个自己的模型。各部分可以按任意顺序看。

原理实验台
六个可交互的实验:一次生成的全景、prefill 与 decode 的算力墙和带宽墙、KV cache 分页的 3D 视图、多卡并行方案、训练与推理的内存账、指标对号入座。参数取自真实部署。
原理问答
学习过程中问过的原理问题:decode 每步多久、312 TFLOPS 怎么来、批处理为什么能共享权重、TP4 × PP2、宽度是什么、自训模型相当于几 B、8 张卡从零训练的天花板。每个答案都对上了实测数字。
指标解读
vLLM 是什么;TTFT、TPOT、吞吐、P99、KV 容量各对应推理的哪个阶段;GSM8K、HumanEval、C-Eval、大海捞针、JSON、工具调用怎么判分,以及这套评测的局限。
评测报告
三个模型在同一套脚本下的性能矩阵(并发 1 到 32、输入 128 到 32K)和质量成绩,附图表、思考模式开销和测试过程中修正的三处不公平。
部署实录
机器分析、模型选型、失败的路线 A 和成功的路线 B、chroot 代替 Docker、CUDA 前向兼容、下载和编译的坑,按时间线记录,脚本全部开源。
训练实录
从零训练一个会聊天的模型:分词器、预训练、SFT、强化学习,每个阶段的原理、8 卡上的真实曲线和时间账,以及没跑但常用的 LoRA、DPO、蒸馏等手段。

先看结论

GLM-5.3-Flash 单流
50 tok/s
官方 FP8,8 卡 TP4×PP2,1M 上下文
Qwen3.6-35B-A3B 单流
173 tok/s
MoE 激活 3B,2 卡 TP2
Qwen3.8-27B 单流
49 tok/s
稠密 27B,2 卡 TP2
GSM8K 最高
98.5%
GLM-5.3-Flash,200 题
128K 大海捞针
15 / 15
GLM,10 秒内返回
从零训练 d24
CORE 0.258
13.8 亿参数,8 卡 5.1 小时,GPT-2 量级
强化学习后 d32 的 GSM8K
23.7%
SFT 后只有 4.4%,代价是 HumanEval 掉 6 个点
编译 SM80 扩展
12 分钟
64 核,9 个依赖本地化

建议的学习路径

  1. 先打开实验台第 2 站,把并发从 1 拖到 32,理解为什么吞吐涨而单请求变慢。
  2. 读指标解读,把 TTFT、TPOT、吞吐和刚才看到的现象对上。
  3. 遇到"为什么"的时候翻原理问答,把算式一步步对上实测数字。
  4. 看评测报告的并发曲线,验证 MoE 激活参数小的模型为什么快 3.5 倍。
  5. 读部署实录,了解把这些模型跑起来要过哪些关。
  6. 最后看训练实录,从分词器到强化学习把模型的一生走一遍。

仓库里有什么

目录内容
docs/本站页面,静态 HTML,可直接打开
src/原理实验台的源文件,bench/build_site_pages.py 用它生成 docs/lab.html
bench/评测套件:quality.py、perf.sh、report.py、run_model.sh
deploy/部署脚本:不用 Docker 拉镜像、chroot 运行、SM80 编译、权重校验、服务启动
train/从零训练的流水线、国内网络补丁、日志解析和页面生成脚本
results/三个模型的原始结果 JSON 和汇总 report.md