旧时代落幕,新时代开启。GPU的登场,只是这场大秀的序曲。
2021-11-19
来源:探索科技TechSugar
DPU究竟是一个什么U
随着芯片越造越多,字母表已经不够用了。从APU到ZPU,好像每个“PU”都有芯片与之对应。对于热门的名字,更是僧多粥少,DPU就是其中之一。
在AI风生水起的时候,DPU代表的是“深度学习处理器”,而我们今天的主角还不配拥有名字,当时叫做“智能网卡SmartNIC”。
这个名字听起来既不智能,也不上口,这也注定了它并不能被大多数人所认知。
工程师通常不屑于营销,但不可否认的是,没有营销,再好的产品也卖不出来。
当一个人既懂技术、又懂人心,创造一个新的概念就是顺理成章的事情。
2020年10月,黄仁勋在英伟达GTC大会上正式官宣了一款新处理器,名叫DPU – Data Processing Unit。
这一年,应该可以算是DPU的元年。在此之后,人们再提到DPU的时候,指的都是数据处理器,而非深度学习处理器了。
和智能网卡相比,DPU的本质并没有根本性的变化。很多人尝试将二者区分开,借此说明DPU是一个全新的跨时代产品,这其实并不真实、也没必要。
老黄总结了3个DPU的特点:卸载、加速、隔离。我很认同这个总结,但这只代表了一个维度。
在另外一个维度上,则是DPU的三个主要应用场景:网络、存储、安全。这两个维度结合在一起,才是DPU的完整矩阵,也能很好的解答很多“为什么”、“是什么”的问题,比如:
DPU卸载了什么:数据中心网络服务,比如虚拟交换、虚拟路由;数据中心存储服务,比如RDMA、NVMe(可以把它们理解成一些远程存储技术);数据中心的安全服务,比如防火墙、加解密等等。
DPU加速了什么:上面说的那些服务和应用通常使用软件实现,并在CPU里运行。而DPU可以使用硬件实现并运行这些应用,这样比软件运行要快好几个数量级,这也就是我们常常会听到的“硬件加速”。
DPU隔离了什么:由于上面说的应用在DPU里运行,而用户应用在CPU里运行,这样就把二者隔离开了。这样会带来很多安全和性能上的好处。
举个例子,假设我们要玩一个“云游戏”,游戏本身运行在服务器的CPU上,而账号管理、存档、和队友的交互方式、游戏数据的发送和接收等等,这些不需要玩家参与、但对游戏体验有极大影响的内容,都可以运行在DPU里完成。
DPU和CPU、GPU的关系
摩尔定律的发展和芯片行业的发展,究竟是鸡生蛋、还是蛋生鸡,人们已经乐此不疲地讨论很多年了。不管是谁成就谁,亦或是相互成就,有一件事情是确定的,那就是我们需要新的芯片结构,来延续发展的脚步。
一个很重要的共识就是,CPU已经很难做好所有事情了。
要特别注意的是,这里不是“很难做”,而是“很难做好”。一字之差,意思完全不同。
在今年4月的GTC大会上,老黄又分享了他对于数据中心架构变革的理解,一共分成五个阶段。
最早的数据中心里,CPU是绝对的王。不管是一开始的原始架构,再到之后软件定义、分布式的可扩展结构,都是如此。
唯一有所区别的,是应用的实现方式。算力和应用更是鸡和蛋的关系,CPU计算能力的提升,就能带来应用的爆发,人工智能就是如此。应用的多样化,又会对算力提出更高要求。比如现在同样火热的超大规模神经网络,动辄上千亿甚至上万亿参数,就好像底层算力都是白给的。
英伟达的春天,就这样到来了。
人们发现,单纯使用CPU并不能满足AI工程师和调参者对算力的野心,而GPU特别适合这类计算。GPU上有成千上万个小型计算单元,他们可以同时计算一个难题里的不同部分,然后再把结果结合起来,也就是“并行计算”。在处理很多问题的时候,这种人海战术比CPU的“串行计算”不知道要高到哪里去了。
从此,CPU不再是数据中心里唯一的王。英伟达也成了世界上市值最高的芯片公司。
旧时代落幕,新时代开启。GPU的登场,只是这场大秀的序曲。
把CPU的一大部分算力卸载给GPU之后,人们发现可以把很多其他功能也外包出去,于是又有了智能网卡,或者叫做DPU。
人们又发现,给CPU卸掉这些包袱之后,反而表现的更好,再次焕发了第二春。因为不管是GPU还是DPU,都需要CPU居中调度和管理,这恰恰是CPU最早的设计初衷。
就这样,CPU、GPU、DPU组成了现代数据中心的铁三角。
未来是否就这样?我看未必。未来何时才能到来?或许很快。至少在下周的GTC大会上,应该就有下一代DPU的最新进展。但不管怎样,这种三位一体的架构解决了很多现有的问题,这就足够了。
没有软件,芯片就只是昂贵的沙子
很多年前我做学术的时候,有一类很流行的领域,名曰“算法加速”。去看这个领域的论文,都写的极其振奋人心,甚至有些惊悚。在这个领域里,CPU就是悲催的存在,它为所有工作奠定了一个基准。相比于CPU,每个工作动辄几倍、几十倍、甚至上百倍的性能提升。
这么多年过去了,CPU在数据中心的王座依然挺立,只不过旁边多了GPU,还有一个DPU蠢蠢欲动,仅此而已。
我并不是否定这些工作的学术贡献,只是很自然的会问:既然这些工作这么牛逼,它们都去哪了?
归根到底,没有软件、没有生态、没法落地。
温室里的苗,需要经历风雨的洗礼,才能知道是否能长成大树。
开发者从来都是用脚投票,谁的东西好用,就用谁的。性能固然重要,但如果没法使用、不好用,性能再强的芯片也不过是昂贵的沙子。
多年前,英伟达凭借CUDA,一举帮GPU打开局面,吸引了大批软件开发者。而FPGA的开发者,还在纠结Verilog怎么写、时序怎么调、引脚怎么分配。
现在DPU来了,开发者怎么办?
今年4月的GTC大会上,老黄正式官宣了一个名为DOCA的SDK,这也是英伟达为上面的灵魂拷问给出的答案。
DOCA全名叫Data Center Infrastructure-on-a-Chip Architecture。作为一个SDK,它包含了DPU支持的所有软件功能:各种库、各种服务、各种驱动、各种框架、各种OS……
有了意大利炮,还需要一发炮弹。DOCA并不是炮弹,而是用来造炮弹的工厂。有了软件和生态,DPU就不再是昂贵的沙子,而是数据中心的“大杀器”。
如果要用一个词总结DOCA的特点,就是“兼容”。新生事物大都需要兼容现有体系,然后才能慢慢发展壮大。这片江山,朕不给,你不能抢。
即使大如英伟达,也意识到很难从零开始自建一个数据中心生态。况且,这也根本没有必要。
除了兼容,还有开放、合作。只有把蛋糕做大,每个人分到的那部分才会更多。大家好,才是真的好。当一个人既懂技术、又懂人心,做出这样的决策也是顺理成章的事情。
在DOCA里,你可以看到几乎所有常见的数据中心基础设施技术、厂商,英伟达也在打造开发者社区,积极建设生态。在11月马上要举行的GTC上,预计会发布DOCA的最新进展。DOCA和CUDA,总有一个会是英伟达未来发展的支柱。
结语
DPU的出现,是时代的必然。但它未来的发展,还有无限种可能。DPU里集成的技术,肯定会有更多的变化。我们需要做的,除了跟随这些变化,更应该透过现象看到本质。只要底层逻辑不变,发展的趋势就不会变。