Tenstorrent&NetDAM
中概和大A股跌的都让好多搞技术的公众号谈论股票了,还有人天真的要政府去中概股救市,作为一个亲历过二十年前互联网泡沫的渣不想再多说什么,本质上你要弄清楚中国普通劳动人民基本素质和根本利益的差异,然后就会明白做多中国A股/中概股和做多中国的差异了. 想说的年初就有一篇讲清楚了,这个时候耐心比信心更重要.
》新年献词|像一束光温暖寒冬《
危机之前居安思危,危机之时多思机. 20年前第一次互联网热潮渣也追过,那个frontpage,ASP做个网页就能当站长的年代,天才少年辍学融资的故事真的就在身边发生着, 而正是那次泡沫的破灭,让渣老老实实的去多读了几年的书。
回到正题,渣在某司就是审专利的,所以挖别人家的专利就和拿筷子吃饭差不多,今天顺手挖了一下Tenstorrent[1]的专利,然后直接根据专利号就可以到GooglePatents[2]下载了,总体来看申请了8篇, 基本也在中国申请了专利的,因此也可以看看中文的专利申请, 这些专利也解答了一些问题:
Overlay for NOC
Tenstorrent的NOC架构如下图所示:
图中包含了四个处理核心(101~104),然后通过四个路由器(110-114)链接,每个核心和路由器之间有一个网络接口单元(NIU).NIU实际上并没有太多的可编程的能力,这一点上可以顺带疯狂打一下各种P4 DPU的脸,而更多的是作为一个低层级(Low-level)的组件来提供memcpy原语执行数据传输,当然可以注意到的是,它也采用了定长的复制,并且对于大量传输的数据也可以拆分成多个复制操作,等长信元可避免很多复杂的问题。
然后这些内存语义的操作,Tenstorrent将其分为了NoC层(下图中的152)和计算层(下图中的151):
NOC层仅从计算层中抽象出固定长度数据的传输原语,而计算层需要实现大量的涉及发起、跟踪内存复制状态的软件指令,这也是为什么需要一些RTC核的原因,前些年跟很多做DPU的厂商解释,人家听不懂总觉得P4是最好的语言…当然也有另一个听不懂瞎爆核数目的。回到正题,计算层在这方面的工作量包括管理将要写入数据的数据结构、跟踪这些数据结构的位置、轮询源核心以查看数据是否准备好进行入站传送,并将信号传输到目的地核心以提醒它们数据已准备好进行出站传送。在具体的示例中,计算层将管理存储器中用于FIFO的写指针,并且将需要处理诸如当FIFO变满时或其中多个核心请求同时向同一目的地FIFO写入、然后在这些写入尝试之间进行仲裁的情况。
NoC Overlay层可以自动处理所有数据流管理任务,否则这些任务在制定应用代码必须由计算层直接操作NOC接口执行。而正是这种解耦增加了处理核心执行复杂计算任务的效率,从而使它可以专注于进行计算,具体来说,NoC Overlay可以使计算层与需要管理保持要在源核心上传送的数据和要在目的地核心处提供的数据的数据结构隔离。而对于高级语言而言(C/Java)并不需要去关注这些底层的逻辑,所以明白了夏老师讲的谁最先在操作系统实现了malloc、memcpy…
看到这里是否懂了NetDAM在干嘛了?
然后再看看对于上层逻辑,从通信模式上来看,渣更倾向于采用Pull Mode去取代DMA的Push模式,因此渣会实现基于Memif的通用以太网IP协议卸载或者专门的CXL语义的QueuePair,例如渣针对Golang做的zmemif,接下来看看要不要给Java Netty做一个…
同样的事情在Tenstorrent上也发生了:
然后你们明白了渣下面这个图的意思了不?
苦口婆心给你们技术扶贫啊,总是一副P4/SRv6是最佳的网络编程语言…无奈…
至于NOC的流控,专利[0038]中有这样一段:
流可以为计算数据流提供方向性,但是在确保将在流的输入处接收的数据传递到流的输出之前,数据不会被修改或处理。因此,可以使用尺寸可变的FIFO缓冲区来实现流。处理核心上的NOC覆盖层可以被配置为如果特定流变得过载就允许FIFO的尺寸增加,并且可以包括故障转移保护机制,以在FIFO扩展超出由那种扩展提供的限制时中断复杂计算并保存其状态。但是,流还可以执行更复杂的数据路由例程。流可以促进数据从一个流到另一个流、从一个流到多个流以及从多个流到一个流的传送。在最终情况下,从多个流接收数据的流可以具有在传入流之间进行仲裁以确定哪些数据应当首先传递的能力。此外,单个流可以被配置为既从多个流接收数据又向多个流传输数据。在这些实施例中,可以使用FIFO缓冲区来实现常规流,同时使用能够修改数据的接收和传递次序的更复杂的存储器和逻辑电路来实现具有仲裁能力的流。流可以是由NoC覆盖层管理的虚拟构造,以实现NoC覆盖图。因此,流的创建将涉及指派具体的硬件,诸如上面提到的FIFO缓冲区,以在NoC层中实现数据的具体路由。每个流可以被配置为独立于其它流改变状态,这与NOC覆盖图状态的部分改变对应。没有重新配置的流可以继续传送数据。此外,可以独立地重新配置流的入站和出站连接。
说人话就是参考Flink的DataStream和Backpressure机制,当然渣也自己实现过,只不过在通用流计算场景中算子比tenstorrent更加复杂,但是对于传输的对象向量化以后不也就成了tensor了么,例如渣在处理一堆Netflow日志的时候,利用window聚合成一个对象指针的数组。
当然Tenstorrent还有一种很好玩的机制,那就是Mini-Tensor,每个处理器上实际上还有几个小核,这样可以做latency hidding,类似于思科在20年前设计QFP也是单核4线程,点到为止。
利用包ID进行路由和计算
这是tenstorrent另一个专利:
原文[0009]有如下一段
在本发明的特定实施例中,可以将计算数据打包成分组,以用于经由路由器在计算节点之间路由以及经由处理管线在计算节点上计算。在特定实施例中,分组化减少了时延并提高了分布式计算系统的性能,因为例如大张量(large tensors)的大数据结构可以被分解成较小的片段,并且一旦接收到这些较小的片段就可以开始计算,而不是等待将整个张量加载到给定计算节点上的存储器中。在特定实施例中,可以在执行复杂计算期间改变分组的大小。由于这种提高的灵活性,可以以更高的并行度执行产生的分组化复杂计算。在不同时间,同一网络可以将计算数据分解为更小、更多的片段,以在复杂计算中利用更高的并行度,然后如果并行化的开销不适于相同复杂计算的某些部分,或不适于应用了相同网络的不同复杂计算,则可以将相同的计算数据分解为更大、更少的片段。
翻译成人话就是正是由于计算和路由指令和数据的融合,使得数据可以更加容易的拆分开来,提高并行度。所以明白了渣为啥要在NetDAM前加路由层和指令层了吧?这也是NetDAM和nicmem以及cilo这样的论文最大的区别,细节的地方是最容易藏魔鬼的,不要看到disaggregate memory就说的大家都一样
Tenstorrent的专利中也有同样的描述[0053]
图7示出了由编译器处理产生的示例性分组。该分组可以是例如图2的分组210的分组,并且可以包括头部214和有效载荷212。头部214可以包括由编译器定义的分组标识符。头部还可以包括操作数标识符或操作数标识符的表示。头部可以包括表示有效载荷和有效载荷的状态的任何信息,或者被认为是相关或需要而在分组的头部中表示的任何信息。有效载荷212可以包括分组的实际内容。内容可以是用于由应用代码描述的复杂计算的计算数据。例如,有效载荷可以包括要由处理核执行的指令或应用代码中变量的数据。在图7的特定示例中,有效载荷可以包括由编译器在步骤S706和S708中定义的操作代码和操作数标识符,它们可以联合定义分组的一组指令。
而相对于Tenstorrent更多的是在AI领域处理Tensor的问题,NetDAM需要承载的业务更加复杂,因此处理结构上也会有更多的不同之处,需要考虑互联网上例如C100M和10MQPS场景下的处理性能。
基于Metadata的条件执行
也即是说Tenstorrent的包头Header语义并不光是简单的Memory READ/WRITE去写FIFO,而更多的是一个完整的指令集系统,其实这玩意20年前思科就实现了,也是NetDAM为什么一定要强调Semi-Lattice代数结构的原因
而有了这东西,对于超大规模模型的MoE不就被tenstorrent原生支持了么?仔细品:)当然netDAM也支持咯
基于推测的互联资源分配
也就说对于DAG mapping到整个计算集群的算法,倒也不难,有一个敲黑板的话题:Multicast,这也是渣特别不喜欢RDMA的原因,更喜欢用原生以太网。
有些简单的流控机制就在那里,就不用多说了,其实做网络的人更容易想到更好的算法,点到为止。
Auto Rounding和压缩
这两个专利也蛮有意思的,充分的显示出了RISC-V这样RTC核的优势,可以玩出花来。你可以说它性能比起各种DSA一坨屎,但是就是玩的比你骚,想起思科QFP这么多年吊打一众网络处理器,某些公司最顶级的NP5c只能当它的小弟做I/O,而另一个公司的旗舰DPU只能放到入门级的平台上…
结语
翻看完Tenstorrent的专利,真想和Ljubisa Bajic,Jasmina Vasiljevic面基一下,跟他们握握手,世界上能有几个懂自己的人真不容易啊。危机之下,继续安心的工作吧。Spatial DataFlow是一个有趣的话题。
Reference
[1]
Tenstorrent专利列表: https://uspto.report/company/Tenstorrent-Inc/patents
[2]
GooglePatents: https://patents.google.com/patent/docid
《Tenstorrent&NetDAM》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/1655.html