SambaNova芯片取消内核编写:编译器直接把模型映射到硬件上

芯片设计圈有个隐藏笑话:大多数AI芯片本质上就是个大号计算器,而SambaNova造了个传送带。

SambaNova的SN40L芯片彻底取消CUDA式内核编程,开发者只需提交PyTorch模型,编译器自动将计算图空间映射到1040个可重构计算单元上。通过SRAM-HBM-DDR三层内存与数据流流水线,Llama 3.1单层推理被融合成单条硬件管道,模型切换只需毫秒级,直接改写了AI推理硬件的评价标准。

编译器把整个模型铺在芯片上像摆地摊

咱们先说说正常GPU干活是啥德行。你写一段代码,告诉GPU该算矩阵乘法了,GPU就吭哧吭哧从内存里把数据搬过来,算完再搬回去,然后再启动下一个任务。每个任务都是一趟完整的搬家流程,就跟你在老家搬砖似的,从东墙搬到西墙,垒好了,下块砖再从东墙搬。而且这每趟搬家你还得给工头发个信号,启动一次内核,就跟喊一嗓子“开干”一样。

SambaNova的编译器干活完全换了路子。它拿到你的PyTorch模型之后,不是把它翻译成一条条指令等着排队执行,而是直接拿着整个计算图,在芯片的二维网格上开始搞布局。哪个算子放哪,数据从哪个方向流进来,从哪个方向流出去,中间经过哪些计算单元和存储单元,全部在编译阶段就确定好了。

这就像你开了一家快递分拣中心,别人家的做法是来了一个包裹,先登记,再放到暂存区,然后等有空闲的工人了再拿去扫描,扫描完了再放到对应的出货口。SambaNova的做法是,你提前把所有包裹的流向都规划好,传送带直接连到每个分拣口,包裹一进来就在传送带上自己跑,中间根本不停。整个Llama 3.1的八亿参数解码器层,在GPU上得分几十次启动内核才能跑完,在这条传送带上就是一气呵成的事。

空间计算和时间计算的差别就像地铁和公交车

咱们拿出门这件事打个比方,你就彻底明白了。GPU那种时间分片的计算方式,跟公交车一模一样。公交车从始发站出发,拉上一批乘客,开到下一站,全部下车,然后再上下一批,继续开。每站之间都是完整的停车、上下客、再启动过程。神经网络的每一层在GPU上就是公交车的每一站,数据从HBM上车,算完下车,再等下一趟车来接着拉。

SambaNova的RDU走的是地铁线路。地铁从头到尾贯通运行,乘客在起点站上车,经过每个站点的时候不用下车,车门都不开,列车直接穿过去。在芯片上,数据从第一个计算单元流进去,经过第二、第三、第四个单元,中间不需要回内存重新排队。每一层的计算结果直接喂给下一层,就像地铁乘客不用每站都下去重新安检一样。

这个差异看起来小,但在跑大模型的时候差别巨大。一个八亿参数的模型,假设它有八十层,在GPU上每一层都得从HBM读权重、读激活值,算完再写回去,下一层再来一遍。每一层都是完整的内存往返。在RDU上,权重数据进入芯片之后就一直在流水线上流动,各层计算单元串联起来,数据经过一层就被处理一层,直到最后输出结果。整个过程中,芯片外部的HBM只负责最开始的喂数据和最后的收结果,中间的所有中间结果都在芯片内部的SRAM里传递。

内存往返成本从O(层数)直接降到了O(1),层数越多,省下来的时间越吓人。

那一千零四十对计算和存储单元是变形金刚

SN40L芯片里边塞了1040个模式计算单元和1040个模式存储单元,总共一千零四十对。这个数字听起来唬人,更唬人的是这些单元能变形。模式计算单元有两种工作形态,一个是脉动阵列模式,专门干矩阵乘法,这是Transformer模型里最核心的计算活儿。另一个是SIMD流水线模式,用来处理逐元素操作和归约运算,比如激活函数、层归一化这些。

编译器会根据当前算子的类型,自动告诉这个计算单元该切成哪种模式。你用不着操心这事儿,就跟手机自动切换WiFi和蜂窝数据似的,用户根本感觉不到。

模式存储单元更邪乎。它不是那种傻乎乎的缓存块,只知道把数据存进去再读出来。它自带地址生成器,能在读写数据的半路上就把形状给变了。矩阵转置、数据对齐这些操作,在别的芯片上需要专门的指令或者额外的内核来处理,在这块存储单元里,数据从单元里搬出来的那一刻就已经转置好了,不消耗额外的时钟周期。

这对多头注意力机制简直是量身定做的。Transformer里的多头注意力要频繁做矩阵转置和形状变换,别的芯片在这些操作上要浪费不少时间,SambaNova直接在存储层面把这事儿给办了。

三层内存把模型切换变成了换台

现在咱们说说这个芯片最反直觉的设计,内存。别的AI芯片,不管是英伟达还是别的谁,基本就是一层HBM,最多再加点L2缓存。SN40L搞了三层。

最顶层是520兆字节的分布式SRAM,分布在所有模式存储单元里,聚合带宽达到每秒几百太字节。这层是整个芯片最贵的地段,数据在这儿流动几乎没有任何延迟。中间层是64GB的HBM3,带宽大概每秒两太字节,用来存放当前正在跑的模型。最底下是一点五太字节的DDR内存,你可以把几百个模型都塞在里边。

这设计最鬼畜的地方在于,DDR往HBM倒数据的速度超过每秒一太字节。也就是说,把一个完整的大模型从冷存储调到热存储,只需要几十毫秒。几十毫秒是什么概念?你眨一下眼睛大概是一百毫秒。模型切换比眨眼睛还快。

这个能力带来的直接后果是,你再也不用纠结该把哪个模型常驻在显存里了。传统部署里你得精打细算,HBM就那么点地方,放了A模型就放不下B模型,切换一次要等好几秒甚至几十秒。在SambaNova这套架构里,几百个模型同时躺在DDR里,来一个推理请求,系统判断该用哪个模型,几十毫秒调进来,算完再换下一个。就跟电视换台一样,遥控器一按,频道就切过去了。

他们管这个叫专家组合。不是学术界搞的那种虚拟的混合专家模型,是物理层面上真的把几十上百个不同领域的模型塞进同一个节点,按需调度。

比较视野揭示了三路线背后的认知差异

传统的GPU路线认为计算是稀缺资源,所以不断堆砌算力。
粗粒度数据流架构则认为内存墙是主要瓶颈,所以用异步调度和分块计算来隐藏延迟。
SambaNova的路线从根子上提出了不同的问题,数据移动才是真正的成本,计算本身几乎是免费的。

这个认知差异导致了三套完全不同的设计哲学:

  1. GPU把尽可能多的晶体管留给浮点运算单元,让峰值算力数字变得惊人。
  2. 粗粒度架构把资源花在调度逻辑和片上存储上,试图用软件策略来弥补硬件限制。
  3. SambaNova的模式计算单元和模式存储单元比例接近一比一,计算和存储被同等对待,编译器负责把计算图和存储分配一起排布。

这种设计牺牲了峰值算力的账面数字,但在真实推理负载中的有效吞吐可能反超。因为有效算力不是理论峰值乘以一个利用率系数,而是数据能多快流过计算单元。当数据流本身成为瓶颈时,算力再高也只是在等待数据。SambaNova用空间排布解决了数据流问题,让计算单元始终有数据可算。


最反直觉的是你不用学任何新东西就能上手

好了,前面说了这么多硬件架构的细节,现在说一个最反直觉的点,也是最让开发者懵的一点。你拿到这块芯片之后,不需要学CUDA,不需要学新的编程语言,甚至连并行编程模型都不用重新学。

你只需要会PyTorch就够了。把你平时写的模型代码交给SambaFlow编译器,它自动完成所有的空间映射、内存分配、流水线排布。你不用操心线程块多大、共享内存怎么分配、寄存器够不够用,这些破事儿全交给编译器。

这个体验跟写CUDA内核完全是两码事。写CUDA的时候你是一个硬件管理员,得亲手管理每一块内存、每一个线程。在SambaNova这,你是一个计算图的描述者,你只负责说清楚数据之间的依赖关系,剩下的事情编译器替你办了。

这背后的认知转变特别大。以前大家总觉得,要想榨干硬件的性能,就得手写底层代码,编译器永远不如人聪明。但SambaNova赌的是,在大模型这个场景里,计算图足够大、足够规整,编译器做全局优化能比人类手工调优效果更好。整个模型在编译期被完整地审视一遍,所有数据流向全局可见,这种全局视野是人类写内核的时候根本做不到的。

这门硬件的真正冲击力不在于它跑得有多快,而在于它让AI推理回归到描述计算意图这件事本身。你描述清楚你要算什么,硬件自己想办法跑得最快。这种体验,就像是从手动挡换到了自动驾驶。

计算原本就应该自动发生,就像水原本就应该往低处流。