@suraj_sharma14:如果你想精通推理工程,这个资源是一座金矿:https://github.com/elizabetht/10…
摘要
一个GitHub仓库,提供结构化的100天LLM推理工程学习计划,涵盖从CUDA内核到自动扩展的主题,并配有可运行的脚本。
查看缓存全文
缓存时间: 2026/09/01 15:45
如果你想在推理工程方面变得非常出色,这个资源库是绝佳宝矿:https://github.com/elizabetht/100-days-of-inference…
elizabetht/100-days-of-inference
来源:https://github.com/elizabetht/100-days-of-inference
100天LLM推理实践
这是一套结构化的推理工程深度学习体系——涵盖从CUDA内核到多云自动扩展的全部内容——基于菲利普·基利(Philip Kiely)所著《推理工程 (https://www.baseten.co/library/inference-engineering/)》(Baseten Books, 2026)构建。
每个条目都是可运行的脚本。所有实验都在配备两台NVIDIA DGX Spark的本地集群上运行。
何为推理工程?
“要做好推理,需关注三个层面:运行时、基础设施与工具链。” — 菲利普·基利,《推理工程》
推理工程是关于在生产环境中部署生成式AI模型的学科——目标是更快、更经济、更可靠。它贯穿从CUDA内存布局到Kubernetes自动扩展策略的完整技术栈。本学习挑战系统性地覆盖所有三个层面。
实践计划
第一阶段 — 运行时:单实例优化
充分榨取单块GPU的性能。这是大多数效益产生的关键。
| 天数 | 主题 | 书籍章节 |
|---|---|---|
| 01 | LLM推理机制:端到端文本生成 | 第2.2章 |
| 02 | 从零开始实现推理:模型内部结构与分词 | 第2.2章 |
| 03 | 嵌入向量:从整数到向量表示 | 第2.2.1章 |
| 04 | Transformer模块与注意力机制深入解析 | 第2.2.2–2.2.3章 |
| 05 | KV缓存 | 第2.2章 |
| 06 | 计算操作数/字节比与算术强度 | 第2.4章 |
| 07 | CUDA内核、内核选择与内核融合 | 第4.1章 |
| 08 | PyTorch、模型文件格式、ONNX与TensorRT | 第4.2章 |
| 09 | vLLM:分页注意力与连续批处理 | 第4.3.1章 |
| 10 | SGLang:基数注意力与结构化输出 | 第4.3.2章 |
| 11 | TensorRT-LLM:编译与插件系统 | 第4.3.3章 |
| 12 | NVIDIA Dynamo:解耦式服务 | 第4.4章 |
| 13 | 量化:数值格式(FP8, INT8, INT4, NVFP4) | 第5.1.1章 |
| 14 | 量化算法:GPTQ, AWQ, SmoothQuant | 第5.1.2章 |
| 15 | 投机解码:草稿-目标模型、Medusa、EAGLE | 第5.2章 |
| 16 | KV缓存:前缀缓存与缓存感知路由 | 第5.3章 |
| 17 | 模型并行:张量、专家、流水线与数据并行 | 第5.4章 |
| 18 | 解耦架构:预填充/解码阶段分离 | 第5.5章 |
第二阶段 — 基础设施:跨集群扩展
充分利用跨云和跨区域的多GPU资源。
| 天数 | 主题 | 书籍章节 |
|---|---|---|
| 19 | GPU架构:SM、内存层次、HBM | 第3.1章 |
| 20 | GPU世代:Hopper, Ada, Blackwell, Rubin | 第3.2章 |
| 21 | 多GPU实例与多实例GPU(MIG) | 第3.3章 |
| 22 | 容器化:Docker与NVIDIA NIM | 第7.1章 |
| 23 | 自动扩展:并发、批处理与冷启动 | 第7.2章 |
| 24 | 路由、负载均衡与队列管理 | 第7.2.3章 |
| 25 | 多云容量管理 | 第7.3章 |
| 26 | 零停机部署与成本估算 | 第7.4章 |
第三阶段 — 工具链:提升生产力与可观测性
使上述两个层面具备可调试性的监控层。
| 主题 | 书籍章节 |
|---|---|
| 性能基准测试:工具与分析 | 第4.5章 |
| 可观测性:指标、追踪与仪表板 | 第7.4.3章 |
| 客户端代码:流式处理、异步与协议支持 | 第7.5章 |
第四阶段 — 深入实践:从零构建
书本解释了概念,现在动手实现它们。
| 项目 |
|---|
| 从零实现BPE分词器 |
| 在PyTorch中构建一个基础的自回归解码循环 |
| 实现带掩码的缩放点积注意力(SDPA) |
| 实现Flash Attention(简化版,使用Python实现分块) |
| 分析不同序列长度下注意力机制的内存增长 |
| 构建INT8量化流水线:量化 → 反量化 → 误差测量 |
| 实现带Hessian加权的GPTQ式四舍五入 |
| 扫描不同量化位宽并绘制困惑度与压缩率关系图 |
| 模拟草稿-目标投机解码与接受采样 |
| 构建简单的KV缓存管理器(块分配器、淘汰策略) |
| 实现基于哈希去重的前缀缓存 |
| 模拟张量并行:将矩阵乘法分割到N个工作节点 |
| 实测不同矩阵尺寸下的计算操作数/字节比 |
CUDA性能分析:使用torch.profiler分析PyTorch模型 |
| 通过Triton编写自定义逐元素CUDA内核 |
| 构建带有CUDA后端的PyTorch自定义操作 |
| 在spark-01上部署vLLM,基准测试TTFT与吞吐量 |
| 部署SGLang,基准测试结构化输出延迟 |
| TensorRT-LLM:编译模型并与PyTorch eager模式比较 |
| NVIDIA Dynamo:运行解耦式预填充实验 |
| 模拟连续批处理:请求队列、动态批次形成 |
| 可视化分页注意力块布局与内存碎片 |
| 基准测试不同批处理大小下TTFT与吞吐量的权衡 |
第五阶段 — 生产系统:从Notebook到集群
投入生产。
| 项目 |
|---|
| 为vLLM推理服务器编写生产级Dockerfile |
| 构建并推送兼容NIM的容器 |
| 模拟自动扩展策略:每秒请求数 → 副本数量 |
| 测量冷启动延迟:不同规模模型的加载时间 |
| 实现轮询与最小连接数负载均衡器 |
| 构建带批次形成机制的优先级请求队列 |
| 跨spark-01和spark-02的多GPU张量并行基准测试 |
| 在Spark GPU上配置MIG:分析不同分区大小的性能 |
| GPU成本模型:不同利用率下各实例类型的$/token成本 |
| 蓝绿部署:零停机模型版本切换 |
| 从推理服务器中输出Prometheus指标 |
| 构建Grafana仪表板:TTFT、TBT、队列深度、GPU利用率 |
| 为推理请求添加分布式追踪(OpenTelemetry) |
| 使用Locust进行负载测试:流量递增、寻找饱和点 |
| 使用Nsight Systems分析:识别内核启动开销 |
| 使用SSE构建流式推理客户端 |
使用asyncio + aiohttp构建异步批量推理客户端 |
| 多云路由:基于地理位置与延迟的请求路由 |
| GPU内存分析:了解内存预算去向 |
| 在实际吞吐量上基准测试不同量化级别:FP16 vs INT8 vs INT4 |
| 测量不同草稿模型规模下投机解码的接受率 |
| 测量真实流量模式下的KV缓存命中率 |
| 张量并行扩展:吞吐量和延迟与GPU数量的关系 |
| 端到端延迟分析:分词 → TTFT → TBT → 反分词 |
| 构建可复用的推理基准测试工具套件 |
第六阶段 — 多模态:超越文本
本书涵盖视觉、音频与视频。推理工程适用于所有这些领域。
| 主题 | 书籍章节 |
|---|---|
| 视觉语言模型(VLM)推理:图像预处理与批处理 | 第6.1章 |
| 嵌入模型推理:批处理与吞吐量优化 | 第6.2章 |
| ASR(Whisper):单片段与长文件延迟优化 | 第6.3章 |
| TTS:流式实时文本转语音 | 第6.4章 |
| 图像生成:扩散模型推理与内核优化 | 第6.5章 |
| 视频生成:上下文并行与注意力优化 | 第6.6章 |
| 多模态批处理:混合文本与图像请求 | 第6.1–6.2章 |
| 嵌入相似度搜索流水线:嵌入 → 索引 → 查询 | 第6.2章 |
| 语音到语音流水线:ASR → LLM → TTS 端到端延迟 | 第6.3–6.4章 |
| 长上下文:RoPE缩放、跨GPU上下文并行 | 第5.3.4章 |
第七阶段 — 高级技术
前沿的推理研究,转化为实用方案。
| 主题 |
|---|
| EAGLE投机解码:特征级草稿 vs 标记级 |
| Medusa:多头投机解码,测量加速比 |
| 从零实现MoE路由:Top-K门控、负载均衡损失 |
| 专家并行:模拟跨N个专家分片的路由 |
| 使用NVIDIA Dynamo的动态解耦 |
| 缓存感知路由:将请求路由至最大化KV缓存命中的节点 |
| 无上下文并行的长上下文处理:分块预填充 |
| 为推理质量微调小模型 vs 使用大型量化模型 |
| 用于推理的蒸馏:教师-学生模型的延迟/质量权衡 |
| 智能评估:为已部署模型构建评估工具套件 |
第八阶段 — 毕业设计:生产级推理栈
构建真实应用。
| 毕业设计任务 |
|---|
| 设计:为真实用例勾勒完整推理栈 |
| 构建:FastAPI + vLLM 推理服务器,包含健康检查与指标监控 |
| 部署:通过负载均衡将其部署到本地集群 |
| 优化:运行基准测试工具套件,定位瓶颈并修复 |
| 反思:我的收获、若重来会做何不同、未来方向 |
环境准备
硬件: 两台NVIDIA DGX Spark (spark-01: 192.168.1.76, spark-02: 192.168.1.77)
每个Notebook都是独立的。 可独立运行任何主题:
``bash ssh [email protected] cd ~/src/github.com/elizabetht/100-days-of-inference/dayNN jupyter notebook
**使用Claude Code技能生成Notebook:**
``bash
/learn-inference-eng next # 生成下一个notebook
/learn-inference-eng 7 # 跳转到主题07:vLLM
/learn-inference-eng quantization # 模糊匹配到主题11
进度
| 阶段 | 状态 |
|---|---|
| 运行时层 | 18 / 18 |
| 基础设施层 | 8 / 8 |
| 工具链层 | 0 / 3 |
| 深入实践 | 0 / 23 |
| 生产系统 | 0 / 25 |
| 多模态 | 0 / 10 |
| 高级技术 | 0 / 10 |
| 毕业设计 | 0 / 5 |
| 总计 | 26 / 102 |
参考资料
- 书籍: 《推理工程》— 菲利普·基利 (Baseten Books, 2026)
- 集群: spark-01
192.168.1.76· spark-02192.168.1.77 - 开始日期: 2026-03-31
相似文章
@akshay_pachaar: LLM工程师手册(每天30分钟,10周,50课)一个面向LLM推理服务的路线图,一切都指向一个服务,而不是分散在多个演示中。
一个为期10周、每天30分钟的工程师学习LLM推理服务的路线图,涵盖vLLM、SGLang、负载测试、量化以及优化技术,以构建一个可复现的基准测试。
@divaagurlxw: 我花了几个月时间学习 LLM 推理。以下是我遇到过的最佳资源。1. 基础……
一条推文串分享了一份精心挑选的 LLM 推理学习资源清单,涵盖分词、GPU 硬件、量化与推测解码等优化技术,以及 vLLM 和 SGLang 等推理引擎,并附有 NVIDIA 架构师演讲的总结。
@trawasthi_ai: 如果你对LLM推理——从内核和内存级别——非常感兴趣,不妨看一下。以后再感谢我。
一条推荐资源的推文,适合对内核和内存级别的LLM推理感兴趣的人。
@asmah2107: 给所有询问推理工程应该构建什么的人:> 推理服务器(C++/Rust)> 分页KV缓存(如vLL…
一条推文列出了在推理工程中应构建的关键项目,以理解生产级LLM系统,包括推理服务器、分页KV缓存、推测解码、量化库和防护措施。
@pallavishekhar_: 学习LLM推理工程 - Prefill vs Decode - KV Cache - PagedAttention - Flash Attention - Continuous Batching…
LLM推理工程关键概念的教育概述,涵盖KV cache、PagedAttention、Flash Attention和连续批处理等技术,以优化推理性能。