0
点赞
收藏
分享

微信扫一扫

续写Groq

这章写点Groq干货,理性的分析。

      首先是Articical Analysis的关于Mixtral8*7B的吞吐比较

续写Groq_矩阵乘法

      上图是有Mixtral 8*7BPaaS服务的AI服务商,Mistral自己居然排倒数第三

续写Groq_数据_02

,Groq是真的遥遥领先啊。

   

续写Groq_编译器_03

      另外这个图是比较每100万tokens的cost,无论是推理速度还是cost,Groq都是遥遥领先的,而下面这些服务,比如perplexity,Mistral这些网站,他们的服务肯定都是构建在Nvidia的硬件上的,那为什么Groq能领先Nvidia这么多?

     硬件的数据在这篇文章里,其实看一下,它的纸面数据并不怎么好

怎么看待Groq (qq.com)

     

续写Groq_矩阵乘法_04

      实际上LLM在推理时和训练时的方式是完全不同的,推理就是一个前向计算的过程,也没有反向传播,推理其实也分为两个阶段。

      1- 预填充阶段,说白了,在你推理之前,只好先要把prompt一次性给读进显存里。

      2- 推理,第二个阶段才是推理,因为现在的LLM都是自回归形式的,所以可以认为是1个字,一个字的推,但是每次要load前面的token,可以类比成这样的节奏。从上到下,蓝色的是第一个token,然后第二次要再推出一个蓝色的token,但是还要包含一个之前的绿色的token(就是第一个行的蓝色的)

续写Groq_编译器_05

       目前对于上面推理,常用的优化措施,占用的芯片能力主要是KV cache,说白了,按着上面的图来讲,如果显存够大,每次都能把之前的信息都cache住,那么对于GPU或者NPU来讲,就推最后一个蓝色的token就可以了,这就是一种加速方式。

      有没有其他的方式呢,有,现在最常见的就是flash-attention,page-attention,通过把qkv切成更小的块,让他们尽量在靠近GPU的存储上进行计算,来规避HBM显存的延迟,其实Groq也是这么做。

       如上面的图,Groq只有230MB的存储,但是这230MB全都是SRAM也就是一级缓存,所以,它能最快速度的与芯片进行通信,这是Groq的一个优势,但是这230MB实在是太小了,在LLM时代Groq是无法装载任意一款模型的。

      这就需要Groq原生支持分布式推理了。

      我们先详细看一下它的详细架构

  

续写Groq_数据_06


    从硬件的角度看,简单的不能更简单了,它只包含几个模块

    从左往右看依次是:

  • MXM:掌管矩阵计算的
  • SXM:管数据交换的
  • SRAM:数据存储
  • VXM:做向量和常量计算的
  • IO:对外的接口,支持多芯片互联的

所有的模块都是东西向对称的。

从下到上,是包含20个super lane。

     一个super lane就执行一系列指令,当0号super lane执行完了指令,会把数据传递给1号super lane去执行系列指令。

      就这些东西然后就没了,简单到不能更简单的芯片...


      现在看一下它的指令流动方式。

续写Groq_矩阵乘法_07

    它的指令流动方式其实挺像TPU的澎湃阵列的,毕竟是TPU的原作者设计的芯片,我们按着图中的1.2.3.4.5讲解一下。

  1.     从SRAM读数据。
  2.    当从SRAM读取数据之后首先交给中间的VXM模块来进行处理,主要是执行一些串行化的操作
  3.     然后把数据交给右边的sram,
  4.     右边的SXM模块把数据从SRAM中读取出来交给MXM来进行大模型最核心的操作,矩阵乘法。
  5.      矩阵乘法做完以后交还给VXM,由它来完成Relu等激活函数的动作。


        
  6. 续写Groq_矩阵乘法_08

  7.      流水线概念图,这20个流水线super lane就组成了一个完整的SIMD操作,每 lane数据流位宽为 32Byte,总数据流位宽为 512B
         从图上就可以看出来这芯片的设计实在是组件太少了,没有始终,没有缓存,分支处理判断,啥也没有,所以这也引出来了Groq自己所说的一个卖点,软件定义芯片。
        要把以上我说的这些都没有,但是对于确定性计算很必须的操作,都要交给编译器来做了。
       编译器必须安排数据移动 ,管理内存 , 功能单元 ,编译器协助取指令。这对软件的要求真的很高。
       

  8. 续写Groq_编译器_09



  • 在软件上它要支持编译时候的静态和执行时候的动态内容,这俩都得用运行时来统一管理。
  • 芯片的状态还必须对编译器来说是可见的,否则它无法对正确性负责。
  • 编译器层面,我分析应该是静态计算图,所以它这个部署时间肯定是有问题的。也许也跟华为一样支持动态测试,静态编译了。

      总之完成这些事还是挺麻烦的,Groq的chip,其实2020年就流片了,折腾软件折腾2年,其实就是TSP,但是为了蹭大模型的热潮,最近就改名叫LPU了,language process unit

续写Groq_矩阵乘法_10

 , 然后又花了很长时间去做LLM的适配,使用这样的芯片,其实对软件人员的工程能力还是很考验的。

     然后再说回来它为什么这么快,最大的区别就是Groq的访问内存的速度是80TB/s, H100是多少呢?3.35TB/s,因为Groq没有3级cache,所有的数据就由SRAM来进行访问进,访问出。

     可是Groq的算力太差了,只有188TFLOPs, H100可是小1000呢,难道算力不占优势吗?先别急,看一下下面这个图。

   影响大模型推理速度的因素其实有两个

续写Groq_编译器_11

     你不管是吞吐还是延迟,哪个能力占大头儿,都很厉害,吞吐大,你的并行能力好,延迟低,出token速度快,最好是吞吐很大,延迟够低,但是鱼与熊掌势必不可兼得。

续写Groq_数据_12

     上图是一个经典的图,也算大模型的性能一个逻辑。大模型的硬件瓶颈主要有两个,一个是算力,一个是带宽。其实大家实际如果做过就能发现,我们经常面对的问题其实不是算力,而是带宽,或者内存OOM

      我们再不考虑内存OOM的情况下,在固定硬件的条件下,随着batchsize的增加,带宽基本达到了峰值,然后整个系统的瓶颈就从带宽转向了算力,说白了,最后给GPU/NPU喂的数据已经加到极限了,这个时候就不是带宽的事了,是看GPU/NPU的能力了。

      但是我们在现实的生产中,batchsize是不会变的,因为LLM一次就吐一个新token出来.... 自回归么

      所以大多数情况我们等不到压力传导到GPU/NPU的算力上,带宽问题才是影响推理速度的最终元凶。

     然后Groq是80,H100是4不到,你就明白为什么Groq这么快了。

     Groq的配置,有点像Dojo的方式。

续写Groq_编译器_13

       因为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的加持,想想还是很有画面的。

续写Groq_矩阵乘法_14

举报

相关推荐

0 条评论