首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >语言大模型的浮点运算分配

语言大模型的浮点运算分配

作者头像
用户9861443
发布于 2024-04-01 02:27:39
发布于 2024-04-01 02:27:39
2660
举报
文章被收录于专栏:图灵人工智能图灵人工智能

本文通过实证分析展示了实际LLM模型的FLOPS分配情况,并与理论分析进行对比。通过理论和实证相结合的方式,本文为理解和优化语言大模型的性能提供了有益见解。

作者Finbarr Timbers是一名机器学习研究员,曾就职于DeepMind。(以下内容由OneFlow编译发布,转载请联系授权。原文:https://www.artfintel.com/p/where-do-llms-spend-their-flops)

作者 | Finbarr Timbers

OneFlow编译

翻译|宛子琳、杨婷

本文对LLM的性能进行了理论分析,然后通过详细分析一个实际的LLM,查看实证结果与理论之间的差异。首先是理论分析部分,我会借助Kipply的优质博文来填充细节。基本结论是:对于标准解码器模型,FLOPS(每秒浮点运算数)的分配如下(按每层计算):

  1. 6d^2 用于计算QKV(Query(查询)、Key(键)和Value(值))
  2. 2d^2 用于计算注意力输出矩阵,softmax(Q @ K.T) @ V
  3. 16d^2 用于运行前馈神经网络(FFN)

总计24d^2 FLOPS。从百分比看,25%的时间用于计算QKV,约8%的时间用于计算注意力输出矩阵,约66%的时间用于运行FFN。

那么用于注意力机制的时间呢?众所周知,注意力机制方程为:

假设你正在使用KV缓存,Q(查询)、K(键)和V(值)都是d维向量(等价于(d,1)矩阵)。每个点积大约需要2d个flops(https://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_19.pdf),加上进行d次除法需要d个flops,总计约为5d个flops,四舍五入为零。

当d等于4096(在Llama7b中的取值),这仅为0.005%,几乎可以忽略不计。这似乎表明注意力机制不重要,但事实并非如此。我们之所以使用KV缓存(以及flash attention等)正是因为它们非常重要,可以将其类比于米尔顿·弗里德曼的恒温器(https://worthwhile.typepad.com/worthwhile_canadian_initi/2010/12/milton-friedmans-thermostat.html,感谢 @bradchattergoon):

假设一个房屋配备了一个运行良好的恒温器,那么我们能看到炉子燃烧的油量(M)与室外温度(V)之间存在强烈的负相关关系,同时炉子燃烧的油量(M)与室内温度(P)之间没有相关性,此外,室外温度(V)与室内温度(P)之间也没有相关性。

一位计量经济学家观察数据后得出结论:燃烧的油量对室内温度没有影响,室外温度对室内温度也没有影响。唯一的影响似乎是燃烧油量会降低室外温度。

观察相同的数据,第二位计量经济学家得出了完全相反的结论。他认为,室外温度(V)增加唯一的影响是会减少耗油量(M),而不会对室内温度(P)产生任何影响。

尽管两位计量经济学家得出了不同的结论,但他们一致认为燃烧油量(M)和室外温度(V)对室内温度(P)没有影响。基于这一共识,他们决定关闭炉子,不再浪费金钱购买燃油。

KV缓存需要O(T)的内存(其中T是我们希望生成的词元数),因此内存需求成本较高,这一点可以参考公司股票($NVDA)情况。

KV缓存有多大呢?对于每个词元,需要存储以下数量的字节(第一个2是因为我们假设使用bf16精度,因此每个参数占用2个字节;第二个2是因为需要同时存储K和V张量):

注意,根据假设,n_heads*d_head=d_model=d,因此字节数为4*层数*d。

GPT-3有96层,d_model为12288,每个词元需要4.72MB。因此,生成2048个词元需要5.6GB的内存。

尽管如此,要使用给定模型生成给定长度的序列,我们仍需使用与KV缓存相同的内存量,只是在每次前向传播结束时将其丢弃。因此,我们并不需要更多内存。从某种意义上说,KV缓存不占用内存(至少在Jax中是如此,除了一些繁琐的bookkeeping工作)。

对于一些新兴架构(例如Mistral 7B)又有何不同呢?Mistral 7b使用了分组查询注意力(Llama2也使用了类似的注意力机制,就好像这两个模型的作者存在某种联系。)和滑动窗口注意力。

在分组查询注意力中,我们可以在多头之间共享一个KV投影(MQA),具体而言,可以是所有注意力头之间共享一个KV投影(MQA,https://arxiv.org/abs/1911.02150),或者将其分成多个组(GQA,https://arxiv.org/abs/2305.13245v3)。这两种方法都等同于具有较小d_model的标准多头注意力(MHA)。在之前的KV缓存计算中,我们假设注意力头的数量乘以头的维度等于模型维度,但是在MQA/GQA中,我们放宽了这一假设。KV缓存公式如下:

可以转换为:

其中,注意力头的数量乘以头的维度就是模型的有效维度。因此,可以看到,随着KV头数量的减少,KV缓存大小呈线性减小( 这也是GQA/MQA方法背后的关键动机之一)。

Llama{1,2} 模型参数如下:

Llama 2中,每个词元所需的KV缓存如下:

在没有分组查询注意力(GQA)的情况下,34B模型需要的KV缓存内存是原来的5倍,而70B模型需要的KV缓存内存是原来的8倍。

Llama/Mistral的另一个改进是滑动窗口注意力,它保证我们可以将KV缓存限制在窗口大小,对于Llama7B来说,窗口大小为4096。

1

性能驱动的架构变化

如前所述,LLM每层使用了24d^2个flops。增加的层数将线性扩展flops和参数数量,增加模型宽度会二次方扩展模型大小。需要注意的是,这是因为参数的数量与d_model的平方成正比,因为我们的大多数层是从一个d_model输入向量转变为一个d_model的输出向量,所以权重矩阵的尺寸为(d_model, d_model)。换句话说,计算量与参数的数量呈正比,增加d_model会使参数数量呈二次方增加。模型深度增加一倍会使参数数量翻倍,但模型宽度增加一倍会使参数数量增加四倍。

尽管如此,更宽的模型的优势是能够更好地并行化。要计算第N层,必须首先计算前面的N-1层。这在高效并行化上十分困难,尤其是在训练期间,而通过张量并行化方法,跨多个GPU拆分单个层要容易得多。如果你主要关心时延,那么选择更宽的模型可能更合适。

2

实证分析

我使用Colab进行了这项分析。(https://colab.research.google.com/drive/1TH6AKsICZqlFoW1ph8h3wsF7q7qVMF8T?usp=sharing

以下是单次前向传播的高级概要(我的网站上有交互式概要:https://finbarr.ca/static/llama-profile.svg):

可以看到,本次运行的总时间中有4.88%用于单次前向传播。在前向传播中,有1.98%的时间用于注意力机制,有2.58%的时间用于多层感知机(MLP)。在前向传播的总时间中,有40%的时间用于注意力层,53%用于MLP。在注意力层内部,时间分配在4个不同的线性层上,其中有2个线性层花费的时间大致相同(linear_1、linear_2),一个花费的时间多50%(linear_3),另一个则是前两者的两倍(linear_0)。我猜测linear_0正在计算查询嵌入,而linear_1/2正在计算键和值嵌入。请注意,由于KV头的数量较少,计算速度要快得多!GQA(Query-aware Attention)带来了明显的差异,即便所使用的注意力机制(xformers.ops.memory_efficient_attention)要求QKV嵌入被广播到相同的大小。

理论分析预测,2/3的时间将用于计算FFN,1/3将用于计算注意力机制。这基本符合我们上面所看到的情况。我们花在计算注意力机制上的时间略多于MLP,但我怀疑这是因为MLP正在为Torch执行一个经良好优化的路径。

3

性能变化

接下来,我对Llama2进行了一系列实验,涉及模型宽度和深度的调整。以下是实验结果:

结果非常有趣。可以看到,隐藏维度为1024和1536的两个模型的速度基本没有变化(1.10秒vs1.11秒),隐藏维度为1024和2048的模型只发生了轻微变化(1.15秒vs1.10秒)。然而,当我们比较隐藏维度为2048(1.15秒)、3072(1.41秒)和4096(1.82秒)的模型时,可以看到速度类似于线性扩展!

对此,我的看法是,调度kernel和实际执行矩阵乘法中存在较大的开销。这是在T4上运行的,尽管按现在的标准来看有些过时,但仍具有65 TFLOPS的bf16计算能力。如果我们将两个1024x1024的矩阵相乘,这就需要1G FLOP的计算能力,因此,理论上,我们可以每秒乘以 65000个1024x1024的矩阵。实际上,我们只能得到其60-80%的性能,但仍然是每秒40000次矩阵乘法。如今的GPU拥有大量核心,T4有2560个CUDA核心,每个核心的运行频率在585到1590 MHz之间。因此,任何能够并行化的任务都表现良好,但是那些需要顺序计算的任务则不会得到优化。我认为,这就是图中所看到的的情况——没有足够的并行性来充分利用GPU。

Transformer的深度使性能与预期完全一致:推理时间与深度呈线性增长。最深的模型可能存在一些噪声,但它的性能表现相当稳定。

接下来,我计算了生成更多词元所需的成本(对每个词元数量进行了10次运行,以减少噪音):

正如预期的那样,完全呈线性增长,因为Llama2使用了KV缓存。如果我们查看保留的内存,就会看到KV缓存与预期的一致(在某种程度上):

可以看到,模型每增加20个词元,内存占用就会增加约2.1MB。由于该模型的 d_model 为1024,有8个隐藏层,因此需要4 * num_layers * d_model字节的内存,即4*8*1024字节=每词元32KB的内存。理论上我们只需要640KB的内存。目前还不清楚额外的3倍开销是从哪里产生的。我怀疑是因为执行还不够高效。

【语言大模型推理最高加速11倍】SiliconLLM是由硅基流动开发的高效、易用、可扩展的LLM推理加速引擎,旨在为用户提供开箱即用的推理加速能力,显著降低大模型部署成本,加速生成式AI产品落地。(技术合作、交流请添加微信:SiliconFlow01)

SiliconLLM的吞吐最高提升近4倍,时延最高降低近4

数据中心+PCIe:SiliconLLM的吞吐最高提升近5倍;消费卡场景:SiliconLLM的吞吐最高提升近3

System Prompt场景:SiliconLLM的吞吐最高提升11倍;MoE模型:推理 SiliconLLM的吞吐最高提升近10

版权声明

版权属于原作者,仅用于学术分享

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图灵人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DeepSeek开源周 Day01:从FlashMLA背后原理回顾KV Cache
今天DeepSeek开源周第一天,开放了FlashMLA仓库,1小时内星标1.6k!
致Great
2025/02/25
5640
DeepSeek开源周 Day01:从FlashMLA背后原理回顾KV Cache
研究完llama.cpp,我发现手机跑大模型竟这么简单
最近在开源社区,很多人都在探索大模型的优化方法。有一个叫 llama.cpp 的项目用原始 C++ 重写了 LLaMa 的推理代码,效果极好,获得了人们的广泛关注。
机器之心
2023/09/08
2.4K0
研究完llama.cpp,我发现手机跑大模型竟这么简单
注意力机制进化史:从MHA到MoBA,新一代注意力机制的极限突破!
MLA主要通过优化KV-cache来减少显存占用,从而提升推理性能。直接抛出这个结论可能不太好理解。首先我们来看下,对于生成模型,一个完整的推理阶段是什么样的,推理性能上有什么问题。这部分内容主要来自:
致Great
2025/02/21
7850
注意力机制进化史:从MHA到MoBA,新一代注意力机制的极限突破!
腾讯混元 & 东京工业大学 无损 KV 缓存压缩至2% ,护航大型语言模型推理!
大型语言模型(LLMs)已在各个领域广泛应用并得到验证,改变了作者收集和处理信息的方式,并影响了作者的日常生活。Driess等人(2023年);Zhang等人;Zhu等人;Wang等人(2024年)。最近,LLM的长文本推理和理解能力逐渐被认为对其能力至关重要,引起了越来越多的关注。开源和闭源LLM现在都在努力适应更长的 Token 长度,Achiam等人(2023年);DeepSeek-AI(2024年)。然而,这种长度扩展对LLM提出了关键的效率挑战,特别是与日益增长的键值(KV)缓存内存问题,这给更强大的LLM的部署带来了巨大的障碍。KV缓存技术,涉及从解码器仅有的Transformer多头自注意力(MHA)块(Vaswani等人,2017年)中缓存和重用已计算的键值向量,在大多数解码器仅有的LLM中广泛采用,以加速模型推理速度。
未来先知
2024/12/27
3930
腾讯混元 & 东京工业大学 无损 KV 缓存压缩至2% ,护航大型语言模型推理!
LLM 加速技巧:Muti Query Attention
MQA 是 19 年提出的一种新的 Attention 机制,其能够在保证模型效果的同时加快 decoder 生成 token 的速度。在大语言模型时代被广泛使用,很多LLM都采用了MQA,如Falcon、PaLM、StarCoder等。
deephub
2024/03/11
1.1K0
LLM 加速技巧:Muti Query Attention
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
这是微软再5月刚刚发布的一篇论文提出了一种解码器-解码器架构YOCO,因为只缓存一次KV对,所以可以大量的节省内存。
deephub
2024/05/20
3380
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
GQA,MLA之外的另一种KV Cache压缩方式:动态内存压缩(DMC)
在openreview上看到最近NV的一个KV Cache压缩工作:https://openreview.net/pdf?id=tDRYrAkOB7 ,感觉思路还是有一些意思的,所以这里就分享一下。
BBuf
2024/06/18
5240
GQA,MLA之外的另一种KV Cache压缩方式:动态内存压缩(DMC)
详解各种LLM系列|LLaMA 2模型架构、 预训练、SFT内容详解 (PART1)
大家好,这里是 NewBeeNLP。之前我们分享了详解各种LLM系列|LLaMA 1 模型架构、预训练、部署优化特点总结
NewBeeNLP
2024/03/27
4K0
详解各种LLM系列|LLaMA 2模型架构、 预训练、SFT内容详解 (PART1)
比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了
近来,几种长上下文语言模型陆续问世,包括 GPT-4(上下文长度为 32k)、MosaicML 的 MPT(上下文长度为 65k)Anthropic 的 Claude(上下文长度为 100k)。长文档查询和故事写作等新兴用例已经表明扩展语言模型上下文窗口是非常必要的。
机器之心
2023/08/08
1.3K0
比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了
麻省理工(MIT) | 提出跨层Attention,减少Transformer大模型键值(KV)缓存,加快LLM推理!
键值 (KV) 缓存能够显著提升Transformer大模型的解码速度。但是当面对长序列的时候,键值 (KV) 缓存需要大量的内存资源。当前减少键值 (KV) 缓存的两个主要方法分别为:Multi-Query Attention(MQA)和Grouped-Query Attention (GQA)。这两种方法主要是修改了Attention块,使得多头请求头共享单个KV头,从而大大减少了不同KV的数量。
ShuYini
2024/05/28
8720
麻省理工(MIT) | 提出跨层Attention,减少Transformer大模型键值(KV)缓存,加快LLM推理!
白话科普 | DeepSeek开源周首日王炸!FlashMLA核弹级发布,技术原理详细解析
DeepSeek 开源周首日发布的 FlashMLA 项目,如同一枚投入 AI 领域的深水炸弹,在技术社区掀起了海啸级震荡。
AI研思录
2025/02/26
4902
白话科普 | DeepSeek开源周首日王炸!FlashMLA核弹级发布,技术原理详细解析
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
这里提一下,我维护的几个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star,感谢读者们的认可,我也会继续在开源社区多做贡献。github主页:https://github.com/BBuf ,欢迎来踩
BBuf
2024/06/18
3.1K0
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
突破内存瓶颈 KCache | 不需要任何训练,适用于各种主流结构,提升 LLM 大型语言模型推理效率!
目前,像GPT-4(OpenAI,2023年)、PaLM 这样的大型语言模型在自然语言处理、总结、代码生成、问题回答等方面占据主导地位。然而,它们昂贵的在线推理成本对基于LLM的应用部署构成了重大障碍。在有限的计算资源下,如何尽可能最大化整个系统的吞吐量,并提高GPU集群的利用率变得越来越重要。
AIGC 先锋科技
2024/07/08
4460
突破内存瓶颈 KCache | 不需要任何训练,适用于各种主流结构,提升 LLM 大型语言模型推理效率!
2024年5月第四周LLM重要论文总结
本文总结了2024年5月第四周发表的一些最重要的LLM论文。这些论文的主题包括模型优化和缩放到推理、基准测试和增强性能。
deephub
2024/06/03
4450
2024年5月第四周LLM重要论文总结
[AI趋势探讨]注意力机制革命:Transformer在DeepSeek中的创新应用
在人工智能快速发展的当下,深度学习技术不断突破传统方法的限制,为众多领域带来了革命性的变化。其中,注意力机制(Attention Mechanism)和Transformer架构的出现,成为了推动这一变革的关键力量。Transformer作为一种基于注意力机制的神经网络架构,在处理序列数据(如自然语言处理、时间序列预测等)方面展现出了卓越的性能。而DeepSeek等先进系统则进一步拓展了Transformer的应用边界,通过创新的应用方式,实现了在复杂任务中的高效处理和卓越表现。
二一年冬末
2025/03/14
3130
[AI趋势探讨]注意力机制革命:Transformer在DeepSeek中的创新应用
大模型 LLM 架构对比,DeepSeek、Llama、Qwen、Kimi、Mistral、Gemma
转载翻译一篇优质文章,原文:https://sebastianraschka.com/blog/2025/the-big-llm-architecture-comparison.html
Ai学习的老章
2025/08/05
9250
大模型 LLM 架构对比,DeepSeek、Llama、Qwen、Kimi、Mistral、Gemma
大模型面试百问百答
数据预处理->分块(这一步骤很关键,有时候也决定了模型的效果)->文本向量化->query向量化->向量检索->重排->query+检索内容输入LLM->输出
NewBeeNLP
2024/03/18
2.9K0
大模型面试百问百答
LLM 系列(六):模型推理篇
大型语言模型(LLM)的训练过程虽然耗资巨大且备受关注,但其真正的价值实现,却发生在 推理(Inference) 这一最终环节。推理是将训练好的模型应用于实际,根据 用户输入(Prompt)生成响应的过程 。无论是驱动一个实时聊天机器人,还是进行离线文档分析,高效、可靠的推理是所有 LLM 应用的基石。然而,这一过程远非简单地调用模型那么直接,它面临着一个核心的 三难困境(Trilemma):
磊叔的技术博客
2025/08/04
2K0
LLM 系列(六):模型推理篇
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
来源丨https://www.zhihu.com/question/655172528/answer/3491439374
BBuf
2025/02/03
3670
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
创新之举:不丢 Token,大语言模型效率提升 35% !
大语言模型(LLM),如GPT和LLaMA系列,随着上下文窗口大小的增加,在处理复杂长文本任务方面的能力得到了提升,但这也导致了推理效率的降低,特别是在内存和计算复杂性方面的成本。现有的方法,包括选择性地保留Token和基于窗口的注意力机制,虽然提高了效率,但也存在舍弃未来文本生成所需的重要Token的风险。
未来先知
2025/02/12
3530
创新之举:不丢 Token,大语言模型效率提升 35% !
推荐阅读
DeepSeek开源周 Day01:从FlashMLA背后原理回顾KV Cache
5640
研究完llama.cpp,我发现手机跑大模型竟这么简单
2.4K0
注意力机制进化史:从MHA到MoBA,新一代注意力机制的极限突破!
7850
腾讯混元 & 东京工业大学 无损 KV 缓存压缩至2% ,护航大型语言模型推理!
3930
LLM 加速技巧:Muti Query Attention
1.1K0
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
3380
GQA,MLA之外的另一种KV Cache压缩方式:动态内存压缩(DMC)
5240
详解各种LLM系列|LLaMA 2模型架构、 预训练、SFT内容详解 (PART1)
4K0
比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了
1.3K0
麻省理工(MIT) | 提出跨层Attention,减少Transformer大模型键值(KV)缓存,加快LLM推理!
8720
白话科普 | DeepSeek开源周首日王炸!FlashMLA核弹级发布,技术原理详细解析
4902
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
3.1K0
突破内存瓶颈 KCache | 不需要任何训练,适用于各种主流结构,提升 LLM 大型语言模型推理效率!
4460
2024年5月第四周LLM重要论文总结
4450
[AI趋势探讨]注意力机制革命:Transformer在DeepSeek中的创新应用
3130
大模型 LLM 架构对比,DeepSeek、Llama、Qwen、Kimi、Mistral、Gemma
9250
大模型面试百问百答
2.9K0
LLM 系列(六):模型推理篇
2K0
如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?(从推理角度分析)
3670
创新之举:不丢 Token,大语言模型效率提升 35% !
3530
相关推荐
DeepSeek开源周 Day01:从FlashMLA背后原理回顾KV Cache
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档