@akshay_pachaar:GPU架构详解。普遍的假设是,更快的GPU意味着更强的计算能力,所以一款每秒能执行更多操作的芯片应该每秒能生成更多token……
摘要
本文以NVIDIA H100为例,阐明了GPU在AI推理中的性能受限于内存带宽而非算力,并解释了GPU架构及其对token生成速率的影响。
查看缓存全文
缓存时间: 2026/08/16 01:53
GPU架构详解。常见的假设是更快的GPU意味着更强的算力,因此额定每秒执行更多操作的芯片应该能生成更多tokens/秒。但这个假设很少成立。你可以租用顶级芯片,加载模型,看着利用率居高不下,却仍然只能从理论上能执行千万亿次运算的硬件上获得每秒几十个tokens。算术单元并非瓶颈——它们大部分时间都在等待数据到来。内存带宽决定了数据能以多快的速度送达,而随着每一代硬件更新,内存带宽的增长速度远慢于算术能力。以H100为例:它在16位精度下可执行989万亿次运算/秒,而其内存传输速率为3.35万亿字节/秒。将前者除以后者,得到约295。这意味着芯片每获取一个字节的数据需要执行约295次运算,才能让算术单元保持忙碌。而生成一个token所需运算量远低于此:每个权重值需与一个数字相乘并累加到总和中,即每个权重对应2次运算,且在16位精度下读取每个权重需要消耗2字节内存。这相当于每个字节仅对应1次运算,比芯片所需算力低约300倍。理解这一点后,GPU的布局设计就不再显得随意——所有设计都围绕数据距离组织,因为每次获取数据的旅程都是昂贵的开销。
执行分为四个嵌套层级(从小到大): → 线程(Thread):最小工作单元,处理少量私有数据。 → 线程束(Warp):32个线程同步执行同一指令的组合,是硬件实际调度的单位。 → 线程块(Thread Block):最多32个线程束(1024个线程)的批次,分配给一个计算单元并持续到完成。 → 流式多处理器(SM):包含独立算术单元、存储和调度器的自包含计算模块。H100拥有最多132个SM。
内存层级同样嵌套分布,这是决定性能的关键: → 寄存器:每个SM拥有256KB,按线程划分私有区域。此处数据已邻近处理单元,读取开销可忽略。 → 共享内存与L1缓存:每个SM拥有数百KB。共享内存是唯一由用户显式放置数据的层级,线程块内所有线程均可访问。 → L2缓存:约50MB,位于所有SM下方,是所有SM可见的第一级缓存。访问它意味着离开当前SM。 → 高带宽内存(HBM):约80GB容量,存储模型权重、KV缓存和激活值。它完全独立于处理芯片,访问HBM是GPU最慢的操作。
这种嵌套结构带来了速度优势:任何保持在单一SM内的操作都极快(无需外部访问),而需要全局协调的操作则需承担跨层访问的代价。将所有SM的寄存器容量相加,其总量与下方的L2缓存相当——这与CPU上规整的金字塔式缓存结构截然不同。因此,提升GPU性能的关键在于尽可能减少HBM访问次数。FlashAttention就是最典型的案例:普通注意力机制会将大量中间结果写入HBM再读回,而分块算法将其保留在SM中执行,以相同运算量实现显著加速。
我已撰写完整解析:从上述布局到决定token生成速率的计算比例。下文引用该文章。同时我为工程师整理了为期10周、每日30分钟的实践路线图,指导如何真正将LLM推理部署于生产环境(而非纸上谈兵)。请查看:https://github.com/patchy631/time-to-first-token… (别忘了点星标)
持续关注更多内容!
适用对象
需熟悉Python、Transformer架构及命令行操作,无需具备服务部署、Kubernetes或CUDA经验。若已掌握某些主题,可压缩标有快速浏览的课程,但构建类课程必须完整学习。
最终收获
- 自主配置、监控与调优的推理服务栈
- 展示TTFT、token间延迟、吞吐量、队列深度及单请求成本的Grafana仪表盘
- 可复现的1000+并发请求压力测试工具
- FP16、FP8、INT4、推测解码及KV缓存驱逐的基准对比
- 支持单请求token预算的成本/延迟/质量路由系统
- 包含版本锁定与复现命令的基准测试报告
时间投入
| 项目 | 详情 |
|---|---|
| 课程时长 | 30分钟/课 |
| 每周课程数 | 5课 + 2天缓冲 |
| 总计 | 10周 / 50课 / 25小时 |
| GPU成本 | 租用单张24GB显卡按小时计费,另需2次H100课程使用 |
缓冲日用于追赶进度,不会压缩新内容。
环境配置
GPU获取
7-8B模型约需单张24GB显卡,建议按小时租用并在课程间隙关闭实例。
| 服务商 | 适用场景 |
|---|---|
| RunPod (https://www.runpod.io) | 按秒计费,快速启动 |
| Modal (https://modal.com) | 无服务器架构,适合基准测试脚本 |
| Lambda (https://lambda.ai) / vast.ai (https://vast.ai) | 经济型按需及市场GPU |
| Colab (https://colab.research.google.com) | 纯Python课程,不涉及服务部署 |
第1周全部、第3周大部分、第6周讲座日及第9周阅读无需GPU。请根据构建课程安排租用计划。仅需在两次课程使用H100:第5周的1000并发测试,以及第8周的实际分离架构实验。
工具安装
pip install vllm
pip install guidellm
pip install sglang
另需Docker用于Prometheus与Grafana栈,以及第8周使用的kind或小型托管集群。
第一周:建立心智模型
重点:安装核心模型,理解屋顶线模型、算术强度,以及解码/预填充阶段的内存/计算瓶颈差异。 形式:以视频为主,屋顶线推导适合实时演示。 产出:手推目标模型的算术强度值,能说明带宽瓶颈成因。
| 日期 | 课程 |
|---|---|
| 周一 | 阅读 · Horace He《从第一性原理解构深度学习加速》(https://horace.io/brrr_intro.html) 前半部分:计算/内存带宽/开销模型 |
| 周二 | 阅读 · 完成上文:算子融合、开销本质,及内存受限情况下FLOPS增加无效的原因 |
| 周三 | 阅读 · Stanford CS336 第五讲《GPU》(https://www.youtube.com/watch?v=6OBtO9niT00) 前30分钟:执行模型与内存层级。课件(https://github.com/stanford-cs336/spring2025-lectures) |
| 周四 | 阅读 · CS336 第五讲后30分钟:算术强度、屋顶线模型、数据搬运的主导地位。文本版:《Transformer推理算术》(https://kipp.ly/transformer-inference-arithmetic/) (kipply) |
| 周五 | 构建+快速浏览 · 手推目标模型的算术强度值(重在实践推导而非重读解释) |
| 缓冲日 | CS336 第十讲《推理》(https://www.youtube.com/watch?v=fcgPYo3OtV0),Databricks文章(https://www.databricks.com/blog/llm-inference-performance-engineering-best-practices)的预填充/解码对比章节 |
第三周:度量基础设施
重点:在优化前建立观测体系,本周成果是后续工作的可读性基础。 形式:以文本为主,基准测试方法论的文字资料优于现有视频。 产出:实时Grafana仪表盘,展示TTFT、token间延迟、吞吐量及队列深度。
| 日期 | 课程 |
|---|---|
| 周一 | 阅读 · vLLM度量设计文档(https://docs.vllm.ai/en/latest/design/v1/metrics/):理解num_requests_running、num_requests_waiting及延迟直方图的实际含义 |
| 周二 | 构建 · 为服务部署Prometheus与Grafana栈(https://docs.vllm.ai/en/latest/examples/online_serving/prometheus_grafana/) |
| 周三 | 构建 · 导入仪表盘JSON,在低负载下验证面板响应。立即修正采集配置(勿拖至第5周千级并发测试时) |
| 周四 | 阅读 · Databricks性能工程(https://www.databricks.com/blog/llm-inference-performance-engineering-best-practices)与NVIDIA基准测试基础(https://developer.nvidia.com/blog/llm-inference-benchmarking-fundamental-concepts/):将定义的指标映射到面板(无定义面板删除) |
| 周五 | 阅读 · 《如何基准测试LLM引擎》(https://modal.com/llm-almanac/how-to-benchmark) (Modal):为何扫描请求率而非选取固定值,饱和点为何被剔除 |
| 缓冲日 | 可选:vLLM Office Hours 21:生产栈深度剖析(https://www.youtube.com/watch?v=0ZVu0A4wWQg) 了解部署环境观测性 |
第五周:千级并发压力测试
重点:构建可复现测试框架,理解基准测试可信度的构建要素。 形式:仅提供文档与实操指南。 产出:可执行的千级并发扫描脚本,输出p50/p95/p99指标,经两种独立工具交叉验证。
| 日期 | 课程 |
|---|---|
| 周一 | 阅读 · GuideLLM简介(https://developers.redhat.com/articles/2025/06/20/guidellm-evaluate-llm-deployments-real-world-inference)与安装,支持从… |
相似文章
@akshay_pachaar: https://x.com/akshay_pachaar/status/2087928032904523980
一条科普帖,讲解GPU的工作原理,重点在于主导LLM服务性能的内存-计算不对称性,并说明量化、投机解码和连续批处理等技术如何从这一根本约束出发。
本地 AI 硬件内存带宽(2026 年版)
本文深入解析内存带宽作为本地 AI 硬件性能的关键指标,对比了 NVIDIA、Apple、AMD、Intel 等厂商在不同性能层级下的当前 GPU 与统一内存系统。
@akshay_pachaar: CPU vs GPU vs TPU vs NPU vs LPU,可视化解释:5种硬件架构驱动当今AI。每种都做出了根本性…
一篇对比五种AI硬件架构(CPU、GPU、TPU、NPU、LPU)的解说文章,附带可视化图表,涵盖了它们在灵活性、并行性和内存访问方面针对AI工作负载的权衡。
我比较了这里使用的主要GPU/机器的所有规格,因为带宽不是一切。你们有些人需要认清现实。
作者比较了用于LLM推理的各种GPU,批判了常见的基准测试,并强调了预填充性能比生成速度更重要,针对不同预算和使用场景给出了建议。
@amitiitbhu: GPU如何为深度学习工作?在此阅读:https://outcomeschool.com/blog/how-does-a-gpu-work-for-deep-learning…
本文解释了GPU如何为深度学习工作,涵盖了它们为何适合并行矩阵计算、CPU与GPU的区别,以及VRAM和张量核心等关键概念。