内存

Reddit r/artificial 新闻

摘要

解释了为什么由于KV缓存随上下文长度和并发用户数扩展,LLM推理越来越受内存带宽限制,以及像vLLM和PagedAttention这样的系统如何提高内存利用率。

你的解释基本正确。“内存”之所以成为LLM领域最主要的系统问题,是因为现代Transformer正日益变得**受内存带宽限制**,而非计算限制。关键转变如下:训练大型模型主要关注FLOPs;而大规模服务模型则越来越依赖**足够快地移动KV缓存数据**。每一步单token生成只执行相对适度的数学运算,但相比之下,每一步都需要从内存中提取大量KV数据。 **为什么会这样** 在推理过程中,每个新token都会关注所有先前的token。因此,对于第t个token,模型需要访问所有先前的K/V张量: \text{KV Cache Size} \propto 2 \times L \times S \times H \times d 其中:L = 层数,S = 序列长度,H = 注意力头数,d = 头的维度。 关键因素是S项。随着上下文增长: 8K → 可管理 128K → 巨大 1M → 基础设施问题 一个70B的长上下文模型在多个并发用户下,KV缓存可能需要**数百GB**。 **为什么带宽比原始计算更重要** 现代GPU(如NVIDIA H100或NVIDIA Blackwell)可以执行大量计算。但每个生成的token都需要: - 从内存加载KV缓存 - 运行注意力计算 - 将更新后的KV写回 这意味着推理速度通常更依赖于: - HBM带宽 - 内存局部性 - 缓存管理 而非张量核心吞吐量。 这就是为什么: - HBM3E - NVLink - 统一内存 - 内存压缩 已成为战略瓶颈。 **为什么KV缓存可能超过模型权重** 模型权重是静态的。KV缓存是动态的,并随以下因素扩展: - 用户数 - 上下文长度 - 输出长度 - 批处理大小 直觉示例: 70B模型权重可能占用约140GB FP16 但为数千个具有长上下文的用户提供服务,可能需要**数TB的KV缓存** 因此,运营者越来越优化: - 缓存复用 - 驱逐策略 - 分页 - 量化 而非仅仅模型大小。 **为什么vLLM和PagedAttention如此重要** 在vLLM这类系统出现之前,内存碎片化问题非常严重。PagedAttention基本借鉴了操作系统思想: - 将KV划分为页面 - 动态分配 - 避免连续内存假设 这显著提高了: - 利用率 - 批处理 - 吞吐量 这是过去几年推理基础设施领域最大的突破之一,因为它无需修改模型本身就能改善经济性。 **更深层问题:Transformer在长上下文上扩展性差** 标准注意力机制本质上存在检索问题: 每个token可能引用所有先前的token。 尽管存在计算优化,但该架构仍然需要大量的内存移动。 这就是为什么研究人员正在探索: - 分组查询注意力(GQA) - 多查询注意力(MQA) - 滑动窗口注意力 - 循环记忆 - 状态空间模型 - 混合检索系统 行业越来越相信:使用朴素KV扩展的无限上下文Transformer在经济上是不可持续的。 **为什么推理经济学现在成为焦点** 训练前沿模型成本高昂。但在全球范围内持续运营它们的潜在经济规模甚至更大。对于许多提供商: 推理成本主导 内存主导推理成本 这就是为什么整个栈的公司都在内存领域竞速: - NVIDIA → HBM + NVLink + Grace - AMD → MI300统一内存 - Cerebras → 晶圆级SRAM - Groq → 确定性低延迟SRAM密集架构 - Marvell Technology → 自定义内存织构 瓶颈已从: “我们能训练更大的模型吗?” 转变为: “我们能以足够低的成本和足够快的速度提供服务吗?”
查看原文

相似文章