查看原文
其他

向上,点亮未来:DPU的若干代数问题

扎波特的网线钳 zartbot 2022-09-16

在MWC22 巴塞罗那期间,华为轮值董事长郭平在线发表了题为《向上,点亮未来》的主题演讲,其中提到一点关于ICT理论、架构继续创新的问题。接下来对这个问题做一些回答

有预测称数字经济今年占GDP的比重将超过50%,随全球数字经济高速发展,数字化需求超出预期,而香农定理冯诺依曼架构已遇到很大瓶颈。郭平表示,业界需要探索新理论和新架构,重构技术底座,才能支撑数字可持续发展。

架构的重构

郭总提到了三个重构


理论重构:不断逼近甚至超越“香农极限”理论,为产业提供新的基础理论指导

架构重构:新技术新架构,解决技术挑战和工艺瓶颈

郭平认为,计算架构的当前矛盾是AI、大数据应用蓬勃发展,而“以CPU为中心”的传统计算架构无法有效支撑。为了解决这一矛盾,华为正在设计“对等”架构,让GPU、NPU等能够更好支撑全球AI业务的发展。

软件重构:应对算力需求剧增,构建以AI为中心的全栈软件和新生态


那么本文就从体系结构的视角来分别谈一下理论重构、架构重构和软件重构的问题。

静止的图灵 vs 流动的香农

其实在两篇文章里已经讲的很清楚了,本质上香农定理冯诺依曼架构已遇到很大瓶颈是同一个问题,那就是一静一动的融合,就是图灵机的那根纸带。

香农和图灵的边界:溯源DPU的价值

通算一体化网络理论

理论重构

理论上来看,不谈数学本身就属于耍流氓了。当然谈了数学就会出现一个问题:数学书分两种,一种是看了第一页就不想看了的,另一种是看了第一句话就不想看的

这种黄色书籍确实是看一页运气好花一天,运气不好可能花几个月都想不明白。我尽量说人话把大家拖到第三页,例如GTM973和GTM985这样的神书~

从代数上来看,冯诺依曼架构本身,如果把内存当成是一个集合,其中的元素为某一个bit,那么任何符合冯诺依曼架构的运算函数 所以说它是一个自同态(endomorphism). 接下来抛开内部复杂的运算结构,如果针对内存的语义来看,主要有两个运算LOADSTORE,那么这两个二元运算作用在内存集合上会构成什么代数结构呢?幺元为一个内存地址为0的bit,显然二元运算本身是封闭的,单纯的读或者写操作是满足结合律的,那么这样的代数结构实质上就构成了一个半群(Monoid).而冯诺依曼架构上的运算本质上是什么呢?从某种意义上来看他就是一系列的函数作用在内存集合上,当然中间可能有些特殊的数据结构,但最终还是要回到对的读写上,也就是说存在一个函数,使得

那么现在的问题是什么?冯诺依曼的瓶颈就是可能存在一系列的 ,而这些东西反复的对操作产生性能瓶颈。那么解决的办法是什么呢?

从Scale UP的角度来看,一方面是LOADSTORE运算本身的时间,还有就是计算本身需要依赖于LOADSTORE的结果,所以Cache和Prefetch这些latency hidding的技术的出现来缓解。

另一方面是提高的效率降低对的操作,所以由此演变出来了一系列的DomainSpecificASIC(DSA)来解决通用处理器本身的问题,而通用处理器也在采用SIMD一类的操作改变自己。

从Scale Out的角度来看,也就是分布式计算:

  • ,
  • ,
  • ,

最终构成了一个 的复合函数.而在这个地方香农极限的存在决定了的瓶颈,但是现阶段看这些通信的瓶颈还没有到物理极限上,更多的还是分布式系统协作调度容错而带来的问题。

那么从理论上讲,的代数结构应该是怎么样的,才能提高自身的通信效率隐藏延迟呢?最简单的来看它是一个LOAD、STORE算子到SEND、RECV算子的转换,复杂一点就是还带了in-memory computing和in-network computing。另一方面回到分布式系统本身来看,早期的Map-Reduce提高性能的关键是什么?Reduce中的算子必须满足结合律和交换律。而TCP很显然不满足交换律,同理现在的很多RDMA QP实现也是。AWS的SRD说对了一半,它说满足了交换律。回到前文中对内存读写操作的定义是一个半群(Monoid).在SRD算子下就构成了可交换的半群。

但是这样就够了么?似乎还有通信失效的场景,对中间的带来的一些副作用需要可控以及潜在的通信丢包的可控。当然有几种做法:

一个是交换半群变成交换群。也就说如果存在某种逆映射可以消除影响那不就很好了么?其实这种逆映射本身可以通过checkpoint很好的实现,例如Chandy-Lamport算法可以实现分布式系统下的一致性快照。

另一种做法是可能更简单的,直接针对内存集合的原语实现幂等操作,从而使半群结构构成一个半格(Semi-Lattice)结构,这也是NetDAM的选择和对算子的约束,

也就是说 的复合函数对于集合的操作满足Semi-Lattice那么理论上系统性能也会得到很大的提升。与此同时,保持这个复合函数的运算和原来本地运算的函数是同态的,那么计算的Offload就可以实施,也就是说可以为存算一体芯片类似于Samsung的PIM一类的东西提供载体。

如果你不能理解 的复合函数这句话,Tenstorrent这个图应该让你看懂:

实际上它就是一个的运算,结果是 而中间又是一个,都是自同态(endomorphism), 而且中间这个还TM*是一个RISC-V的冯机,Jim Keller高不高明?然后SRAM直接接到以太网上,加上Compute ALU 是不是NetDAM?所以两者是同构的。

然后你看到了Lattice和同态这两个词,是不是又会想到同态加密呢?然后紧接着隐私计算、密态计算、多方计算、联邦学习等,本质上你会看到通信和密码学某种意义上都是同样的代数问题。

但是另一个问题来了,这个问题来自于图灵,那就是计算的指令是一条纸带,而数据是另一条纸带。如果没有对齐,那就芭比Q了,另一个问题就是有多个读写头的时候的协同。

这就牵扯到冯机本身的时间计算的问题,以及如何推到非冯机的空间计算的问题。空间计算后面再说。

冯机来看就是一些内存Coherence的问题和内存时间上的依赖问题。但是超大规模数据中心内做到全Fabric的Coherence是非常困难和低效的,完全不做Coherence,类似于纯函数式编程的逻辑又有一点那么尴尬的洁癖,局部的Coherence是可行的。

那么是否在通信的语义中主动对齐两条纸带呢?所以这也是NetDAM设计之初考虑的问题,通信的时候需要携带一些指令,使得计算和通信某种意义上就紧耦合在一起了,而且同时到达也可以部分的消除一些Coherence的影响,

当然这一块只是直觉上可以做到,但可能还是需要更细致的去研究,本质上就是Message Passing和Shared Memory的取舍。


架构重构

从架构上来看,时空的转换来看, 或者时空融合的问题上,都是值得从架构上去考虑的问题,正好最近刚开完的ISSCC2022有些好玩的东西可以分享一下。一方面是Multi-Tile架构带来的影响:

另一方面是片上网络拓展的问题,从通信协议上来看,最开放和最便宜的莫过于以太网了,所以明白了Tenstorrent的选择了吧?

但是互联结构上,可能这种Torus-Ring并不是最优的,Tenstorrent很大程度上是因为只做AI那么大量的矩阵运算用TorusRing也够了。而针对超算场景,例如一些FFT需要碟式网络。所以你会看到Post-K要搞6D-Torus,而且很有趣的在25G serdes上,有了error还能duplicate发,似乎感觉是在25G上为了延迟连FEC都可以不要那种,然后Slingshot[1]也是值得参考的,毕竟是Cray为米国搞的三套Exascale computing的网络

还有一个就是同样在ISSCC2022上看到的SambaNova讲到的DataFlow Processing

它通过在片上交替部署PCU和PMU构建一个灵活的自同态映射,并且将函数的复合直接映射到片上网络上。当然现阶段还是一些AI的计算,但是推广到后面,编译器的难度有多大,不清楚

不过这些都是值得去探索的方向。

软件重构

这一点上就不想班门弄斧了,毕竟编译器不懂、操作系统不懂、还有很多知识都欠缺。只是隐约觉得编程范式上,现在的AI大量的还是基于微分方程,编程语言和编程语义上应该如何降低人的心智的负担,AI本身能不能像很多人讲的就是所谓的Software2.0 ?都是值得探讨的问题。

从数学上,我直觉是对此产生怀疑的,人世间有那么多对称,每一次对称都可以降低一半的参数,经验主义下的Software 2.0是否正确,Geometric Deep Learning[2]可能是一条出路,另一方面一些图机器学习也是在做一些非常不错的工作。

大概就这样闲谈了这么多,苦逼的去干活去了....



Reference

[1]

Slingshot: https://arxiv.org/pdf/2008.08886.pdf

[2]

Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges: https://arxiv.org/abs/2104.13478


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存