这章写点Groq干货,理性的分析。
首先是Articical Analysis的关于Mixtral8*7B的吞吐比较
上图是有Mixtral 8*7BPaaS服务的AI服务商,Mistral自己居然排倒数第三
,Groq是真的遥遥领先啊。
另外这个图是比较每100万tokens的cost,无论是推理速度还是cost,Groq都是遥遥领先的,而下面这些服务,比如perplexity,Mistral这些网站,他们的服务肯定都是构建在Nvidia的硬件上的,那为什么Groq能领先Nvidia这么多?
硬件的数据在这篇文章里,其实看一下,它的纸面数据并不怎么好
怎么看待Groq (qq.com)
实际上LLM在推理时和训练时的方式是完全不同的,推理就是一个前向计算的过程,也没有反向传播,推理其实也分为两个阶段。
1- 预填充阶段,说白了,在你推理之前,只好先要把prompt一次性给读进显存里。
2- 推理,第二个阶段才是推理,因为现在的LLM都是自回归形式的,所以可以认为是1个字,一个字的推,但是每次要load前面的token,可以类比成这样的节奏。从上到下,蓝色的是第一个token,然后第二次要再推出一个蓝色的token,但是还要包含一个之前的绿色的token(就是第一个行的蓝色的)
目前对于上面推理,常用的优化措施,占用的芯片能力主要是KV cache,说白了,按着上面的图来讲,如果显存够大,每次都能把之前的信息都cache住,那么对于GPU或者NPU来讲,就推最后一个蓝色的token就可以了,这就是一种加速方式。
有没有其他的方式呢,有,现在最常见的就是flash-attention,page-attention,通过把qkv切成更小的块,让他们尽量在靠近GPU的存储上进行计算,来规避HBM显存的延迟,其实Groq也是这么做。
如上面的图,Groq只有230MB的存储,但是这230MB全都是SRAM也就是一级缓存,所以,它能最快速度的与芯片进行通信,这是Groq的一个优势,但是这230MB实在是太小了,在LLM时代Groq是无法装载任意一款模型的。
这就需要Groq原生支持分布式推理了。
我们先详细看一下它的详细架构
从硬件的角度看,简单的不能更简单了,它只包含几个模块
从左往右看依次是:
- MXM:掌管矩阵计算的
- SXM:管数据交换的
- SRAM:数据存储
- VXM:做向量和常量计算的
- IO:对外的接口,支持多芯片互联的
所有的模块都是东西向对称的。
从下到上,是包含20个super lane。
一个super lane就执行一系列指令,当0号super lane执行完了指令,会把数据传递给1号super lane去执行系列指令。
就这些东西然后就没了,简单到不能更简单的芯片...
现在看一下它的指令流动方式。
它的指令流动方式其实挺像TPU的澎湃阵列的,毕竟是TPU的原作者设计的芯片,我们按着图中的1.2.3.4.5讲解一下。
- 从SRAM读数据。
- 当从SRAM读取数据之后首先交给中间的VXM模块来进行处理,主要是执行一些串行化的操作
- 然后把数据交给右边的sram,
- 右边的SXM模块把数据从SRAM中读取出来交给MXM来进行大模型最核心的操作,矩阵乘法。
- 矩阵乘法做完以后交还给VXM,由它来完成Relu等激活函数的动作。
- 流水线概念图,这20个流水线super lane就组成了一个完整的SIMD操作,每 lane数据流位宽为 32Byte,总数据流位宽为 512B
从图上就可以看出来这芯片的设计实在是组件太少了,没有始终,没有缓存,分支处理判断,啥也没有,所以这也引出来了Groq自己所说的一个卖点,软件定义芯片。
要把以上我说的这些都没有,但是对于确定性计算很必须的操作,都要交给编译器来做了。
编译器必须安排数据移动 ,管理内存 , 功能单元 ,编译器协助取指令。这对软件的要求真的很高。
- 在软件上它要支持编译时候的静态和执行时候的动态内容,这俩都得用运行时来统一管理。
- 芯片的状态还必须对编译器来说是可见的,否则它无法对正确性负责。
- 编译器层面,我分析应该是静态计算图,所以它这个部署时间肯定是有问题的。也许也跟华为一样支持动态测试,静态编译了。
总之完成这些事还是挺麻烦的,Groq的chip,其实2020年就流片了,折腾软件折腾2年,其实就是TSP,但是为了蹭大模型的热潮,最近就改名叫LPU了,language process unit
, 然后又花了很长时间去做LLM的适配,使用这样的芯片,其实对软件人员的工程能力还是很考验的。
然后再说回来它为什么这么快,最大的区别就是Groq的访问内存的速度是80TB/s, H100是多少呢?3.35TB/s,因为Groq没有3级cache,所有的数据就由SRAM来进行访问进,访问出。
可是Groq的算力太差了,只有188TFLOPs, H100可是小1000呢,难道算力不占优势吗?先别急,看一下下面这个图。
影响大模型推理速度的因素其实有两个
你不管是吞吐还是延迟,哪个能力占大头儿,都很厉害,吞吐大,你的并行能力好,延迟低,出token速度快,最好是吞吐很大,延迟够低,但是鱼与熊掌势必不可兼得。
上图是一个经典的图,也算大模型的性能一个逻辑。大模型的硬件瓶颈主要有两个,一个是算力,一个是带宽。其实大家实际如果做过就能发现,我们经常面对的问题其实不是算力,而是带宽,或者内存OOM
我们再不考虑内存OOM的情况下,在固定硬件的条件下,随着batchsize的增加,带宽基本达到了峰值,然后整个系统的瓶颈就从带宽转向了算力,说白了,最后给GPU/NPU喂的数据已经加到极限了,这个时候就不是带宽的事了,是看GPU/NPU的能力了。
但是我们在现实的生产中,batchsize是不会变的,因为LLM一次就吐一个新token出来.... 自回归么
所以大多数情况我们等不到压力传导到GPU/NPU的算力上,带宽问题才是影响推理速度的最终元凶。
然后Groq是80,H100是4不到,你就明白为什么Groq这么快了。
Groq的配置,有点像Dojo的方式。
因为LLM现在太大了,Groq是否会比H100贵,如果看过我上篇计算的同学也不会这么问了,它毕竟是14nm,一个wafer能切900块,一个waferc才能切一块H100,所以就别比了,又便宜又小,制程又旧,一颗成本才不到100美金。
但是这东西为什么不好卖,也是因为它太另类了,虽然说它很便宜,但是现在模型也确实越来越大,你也不能说NV的HBM方案是错的,Groq估计下一个版本也会多少琢磨琢磨,要不它一直也只能做做推理而已。
另外就是软件生态的问题,他自己去匹配LLM的生态体系都要小2年,那现在模型这么多,而且未来的模型肯定不都是llama,参考最近的Grok和BDRX,哪个都不是llama的架构,如果对每一个模型都要适配,还是挺麻烦的。
最后就是它的场景,Groq2代如果不针对外置存储做点文章,那么大模型它真也只能做个边缘选手。它虽然快,延迟低,但是sram又太小,注定它并行度做不高,如果是大规模服务,还是很吃力的,这点NV和AMD完胜。但是它又小然后延迟又这么超低,也许Server端不是它的舞台,反而后面的AIPC,AIphone它能大放异彩。
因为对于人类来说每秒15个token是最舒服的节奏,现在的手机PC跑起来的大模型基本都挺白给,有的基本1token/s,几乎没法商用,纯玩具。如果有groq的加持,想想还是很有画面的。