I·Infra Notes AI Infra 工程实践指南 ← 返回主博客
生产服务与端侧 / READING NOTES

17.3 从需求到部署、压测与监控

选型决策、技术叠加与端到端交付

一条请求的源码与数据流复盘

假设系统收到 1024 token prompt、最多生成 32 token、当前有其他运行请求。追踪时不要先问“用了哪些优化”,先在每一步记录状态:

阶段 输入/输出 状态改变 应测量/验证
API/tokenizer 文本→token_ids 建 Request token 数、模板和特殊 token
Admission/Scheduler waiting→本轮计划 占 token 预算与 KV 块 排队时间、block free、prefix hit
Prefill packed tokens→最后 logits 写 1024 份 KV(可分 chunk) position、mask、TTFT、GEMM/Attention 时间
Sampler logits→首 token 更新输出与停止条件 seed、top-p/top-k、logit 差异
Decode loop 1 token→下一个 logits 每步追加 KV、动态混批 TPOT、KV 带宽、Graph 命中
完成/取消 输出→流式响应 释放或缓存 KV 请求生命周期、块守恒、尾延迟

工程练习 A:实现。在一张 GPU 上跑 RMSNorm → RoPE → Attention → logits 的最小 PyTorch reference;分别替换一个 CUDA/Triton Kernel,每次用固定输入检查 allclose 与边界 shape。工程练习 B:服务。运行 CPU-only 的 MiniEngine 示例,以两条不同长度请求模拟连续批处理,打印每轮 request_id / computed / scheduled / physical blocks / free blocks;再自行扩展到三条请求与 Prefix 共享。工程练习 C:诊断。人为注入错误的 RoPE position 与缺少 release,分别使用逐层比较和块守恒定位;再给一个 GEMM 做 Roofline/NCU 记录。

验收标准:能画出 API→Scheduler→KV Manager→ModelRunner→Attention Backend→Sampler 调用链;能解释 vLLM 的分页缓存与迭代调度、FlashAttention 的 IO tiling、PagedAttention 的逻辑到物理映射;能用一个实测指标和一个反证排除错误瓶颈假设。源码导读从上一章的链接进入,按固定版本记录,不把“框架一定如此”写成跨版本定论。

可交付的部署实验包

按“需求与输入分布 → 环境和模型版本 → Baseline → 单项实验 → 组合验证 → 容量与上线”组织目录。每一步保存可复现命令、原始请求 / 响应统计与变更原因,而不只保留最终最佳值。

交付物至少包含配置表、任务质量表、压力曲线、错误 / 取消记录、内存账本、关键时间线、容量估计和回退路径。第 14 章检查产品协议,第 16 章检查长期服务,第 18 章检查资源受限设备;同一个模型在这些环境里的最佳方案可能不同。