@akshay_pachaar:GPU架构详解。普遍的假设是,更快的GPU意味着更强的计算能力,所以一款每秒能执行更多操作的芯片应该每秒能生成更多token……

X AI KOLs Timeline 新闻

摘要

本文以NVIDIA H100为例,阐明了GPU在AI推理中的性能受限于内存带宽而非算力,并解释了GPU架构及其对token生成速率的影响。

GPU架构详解。 普遍的假设是,更快的GPU意味着更强的计算能力,所以一款每秒能执行更多操作的芯片应该每秒能生成更多token。 但这种情况很少发生。你可能租用顶级芯片,加载模型后看到利用率很高,但硬件本应能实现千万亿次运算的能力,却只能输出每秒几十个token。 算力单元并非瓶颈。它们大部分时间都在等待数据到达。 内存带宽决定了数据交付的速度,而随着每一代产品更新,其增长速度远慢于算力能力的提升。 H100让这个问题变得具体。它在16位精度下每秒可执行989万亿次运算,而其内存每秒只能提供3.35万亿字节的数据。 两者相除,你得到大约295这个数字。这意味着,为了保持算力单元持续工作,芯片每读取一个字节的数据需要执行约295次运算。 而生成一个token的运算量远未达到这个水平。每个权重仅需与一个数字相乘并累加到总和中,即每个权重执行两次运算,且在16位精度下每个权重需要读取2字节。 换算下来大约是每个字节1次运算,仅为芯片所需算力的约三百分之一。 理解了这一点,GPU的布局设计就显得不那么随意了。一切都围绕着数据距离组织,因为每次获取数据的行程才是开销所在。 执行过程嵌套分为四个层级,从最小单元开始: → 线程。最小的工作单元,对其拥有的少量数据进行运算。 → 线程束。32个线程同步移动并共享单一指令的组,这是硬件实际调度的基本单位。 → 线程块。多个线程束的集合,最多32个(即1024个线程),分配给一个计算单元并停留至处理完成。 → SM。流式多处理器,一个小型独立计算单元,拥有自己的算力单元、存储空间和调度器。H100最多有132个SM。 内存同样采用分层结构,这正是决定性能的关键: → 寄存器。每个SM拥有256KB,分配给各线程作为私有存储,其他线程无法访问。由于数据已位于处理单元旁边,读取开销几乎可忽略不计。 → 共享内存与L1缓存。每个SM拥有数百KB。共享内存是唯一可主动写入的存储层级,线程块内所有线程均可读取(名称由此而来)。 → L2缓存。约50MB,位于所有SM下方,是所有SM可见的第一级缓存。访问L2意味着离开本SM的范围。 → HBM(高带宽内存)。约80GB容量,存储模型权重、KV缓存和激活值。它完全位于处理芯片外部,访问HBM是GPU最慢的操作。 嵌套结构正是提升速度的关键。所有操作只要保持在一个SM内部就能快速执行,因为无需外部单元访问;而需要全芯片协调的操作则要付出跨层访问的代价。 将所有SM的寄存器容量相加,总和与下层L2缓存的容量相当,这与CPU上规整的金字塔缓存结构截然不同。 因此,提升GPU性能的核心在于减少访问HBM的次数。FlashAttention是最佳例证:常规注意力机制会将大量中间结果写入下层内存再读回,而分块注意力(FlashAttention)将数据保持在SM内,以相同运算量实现了更快的执行速度。 我完整解析了GPU的工作原理,从当前架构到决定token生成速率的比值。文章全文引用如下。 我还为工程师整理了一份为期10周、每天30分钟的学习路线图,旨在帮助大家在生产环境中实际运行LLM推理,而非仅停留在理论层面。 查看链接:https://github.com/patchy631/time-to-first-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_runningnum_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)与安装,支持从…

相似文章

本地 AI 硬件内存带宽(2026 年版)

X AI KOLs

本文深入解析内存带宽作为本地 AI 硬件性能的关键指标,对比了 NVIDIA、Apple、AMD、Intel 等厂商在不同性能层级下的当前 GPU 与统一内存系统。