2023年7月26日,阿里云弹性计算团队与智东西公开课联合出品的系列课程【阿里云弹性计算技术公开课】第四节正式播出,阿里云资深技术专家杨航带来了主题为《阿里云CIPU技术解析》的课程分享,本期课程在阿里云官网、智东西官网、钉钉视频号、阿里云微信视频号、阿里云开发者微信视频号、阿里云创新中心直播平台&视频号等多平台同步播出。
2022年6月,阿里云发布了云基础设施处理器CIPU(Cloud Infrastructure Processing Unit),将其定义为取代传统CPU的新一代云计算体系架构的核心。在这个全新体系架构下,CIPU向下对数据中心计算、存储、网络等底层基础设施快速云化并进行硬件加速,向上接入飞天云操作系统,将全球数百万台服务器构建为一台超级计算机,实现资源的灵活编排和调度,给用户提供高质量弹性云计算算力集群。
https://cloud.video.taobao.com/play/u/null/p/1/e/6/t/1/423082429071.mp4?SBizCode=xiaoer
杨航_阿里云CIPU技术解析 | 课程回放
本篇文章根据杨航的课程整理而成,供读者阅览:
一、什么是云计算:计算和云计算是什么关系
什么是云计算?2009年美国的伯克利大学对云计算做了精确的定义:
1、云计算可以按需使用无限量的计算资源。这句话可以看出云计算与计算的巨大差别。比如传统IT,线下我们在HP/Dell买服务器,它不是按需的。传统IT是on premise,需要把这些服务器、交换机、存储,在使用前就要在线下机房构建好。云计算的服务是按需使用所需,而且计算资源是无限的,而不是买了两台,最大就只有两台,想扩容和缩容,想伸缩都是比较难的。
2、消除云用户的预先承诺。即用户在任何一个region区域或AZ可用区,只需要用支付宝或信用卡付费,付费成功即可按量使用计算存储网络的资源。用户并不需要跟CSP(Cloud Service Provider)云提供商预先承诺要在哪一个地方部署多少资源。
3、根据实际需要支付短期使用计算资源的费用。即用户不需要承诺他购买的计算资源的预期使用时间。用户购买后即使只用一分钟也可以,对于云计算所使用的容器或者函数,计时单位可以精确到毫秒级,哪怕使用几十毫秒都可以,只要用户希望如此使用即可;当一个计算资源必须让用户使用四年、五年或者整个生命周期,即说明它不是云计算,而是IDC(服务器托管),或者说是一个私有云。在此引用王坚院士的比较极致的说法:严格意义上来说,私有云不是云,只有公有云的公共计算资源池才是云。
4、通过规模经济显著降低成本。即我们希望通过使用超大的数据中心,通过规模经济,放大供应链效益,摊薄研发成本。规模经济很重要,例如芯片,大家一定知道,没有规模是一定不能做芯片的,因为其研发成本太大。软件产业、芯片产业或者整个IT行业,核心的逻辑就是规模经济,通过无限低的复制成本,来把初研发成本等摊到零。
5、通过资源虚拟化技术简化操作并提高资源使用率。我们希望通过资源虚拟化做到什么呢?把客户使用的资源虚拟化,把计算、存储、网络抽象后,达到简化操作,提升资源利用率的效果。在此不展开具体细节,大家可以自行搜索相关信息。比如VMware的一些经典论述,虚拟化是可以有效地提升比如CPU利用率、内存利用率,IO利用率以及网络利用率。这点我不展开,大家可以把它当作结论。
6、通过多路复用的方式运行来自不同组织的负载,提高硬件资源利用率。核心是多路复用。因为公有云的池子,比如淘宝在双11使用公有云的计算资源池;而到了春节,大家使用12306抢火车票的时候,12306也使用同样的公有云计算资源池。这样就可以削峰填谷,通过多租户使用同一套的计算资源池,保证此公有云的硬件的资源利用率显著提升。
按照伯克利的定义,只要满足这六点,就是云计算。不满足这6点就是“忽悠的云计算”,这是我的看法。当然我想讲的主旨是什么呢?今天我们可能被很多的短期行为,有很多所谓的转售服务器、转售CDN或者转售GPU卡,事实上它们不是云计算,没有通过技术创造社会红利,也没创造客户价值。从长期来看它们是不可持续的,这就是为什么我要在开篇的时候重新recap伯克利在2009年提出的云计算的定义。
相信大家比较关心云计算与计算的关系 --- 它们是正交关系,不是替代关系。比如,目前AI分布式系统中,我们希望AI分布式系统横向scale out后,它的加速比能保持1。微软开源了deep speed,它做的是计算维度的事情;比如我们构建Hadoop和Spark是在构建计算,但是云计算还有一个很重要的目标,就是把云的资源池放在一起,做到弹性极致的伸缩,然后再做到多租。
多租就是整个资源池,可以给淘宝用,也可以给12306用,这个才是我们真正想要的云计算。当然弹性多租需求发生在IaaS层,就需要做虚拟化;到了PaaS层,比如大数据,演进出存算分离等需求。
总的来说,计算和云计算这两个维度是正交关系,不是替代关系。但从长远来看,我们会看到计算一定会演进到云计算。比如NVIDIA,现在的NVIDIA市值1万亿美金在做加速计算没有问题。我们要持续地增强计算能力,还需要云厂商把计算通过弹性多租,让计算更具普惠化和高效,然后让创新的成本变得很低。
而从阿里云的角度看待云计算,我们认为是四个目标:稳定、安全、性能,成本。
稳定和安全是所有事情的1,性能和成本都是后面的0。当然不是说性能和成本不重要,如果只有稳定安全的1,是没有竞争力的;如果没有后面的0,前面的1也没有价值,所以说他们是相辅相成的。
其实大家可能会发现,如果没有在稳定和安全上交过学费,便得不到这样的认知。因为稳定和安全被认为是售后,售前大家永远关心的是性能和成本,这是云计算的大目标。
可能大家会有疑问:稳定、安全、性能和成本事实上是计算的目标。
其实更严格来看云计算的目标还需要加两点:弹性和可持续。可持续指什么?我们的环境可持续。因为我们的计算资源逐步部署于云后,这些绿色计算,还有与之相关的,包括我们的架构可持续也是很重要的事情。
当然弹性和可持续,也是云计算厂商的目标。我们以客户视角列出如上稳定、安全、性能和成本四个目标,更完整的是把弹性和可持续加上去,云应该是有六个目标。有了这六个目标呢,我们就会分IaaS、PaaS、SaaS。
SaaS做的最成功的就是微软的Office 365,还有Salesforce。PaaS层,就是大家会看到的大数据、AI和数据库,典型就是这三个业务。这三个业务主要是数据智能、数据治理相关的。然后再到下面,狭义的云主要是指IaaS,就是基础设施即服务。
二、 公有云IaaS有哪些业务痛点
基于弹性计算上下文,我主要讲公有云的IaaS有哪些业务痛点。我们已经讲清楚阿里云如何看云计算:还是从客户视角,是否安全、是否稳定的性能、是否有竞争力、成本是否有竞争力。
1、安全,做过几年云计算后,会发现安全是我们如何做业务决策的规则。这个规则是什么呢?核心是因为什么呢?公有云这个大的计算资源池,计算、存储、网络都是多租户使用的。多租户场景中数据安全永远是最重要的。因此对于公有云来说,没有数据安全,就没有公有云,安全永远是第一位的。
在此展开,在没有CIPU、DPU、IPU、神龙之前,我们遇到什么问题?
第一,大家对虚拟化都有一些了解,QEMU里面有大量的冗余的设备仿真代码。它不是仅仅仿真virtio,它还仿真了很多很多设备,其代码量是很大的。当代码量大的时候,这些安全攻击敞口无法收敛,所以我们就会看到大量的注入攻击。这种注入攻击,特别是c代码缓冲器溢出等问题,是很难根本性解决的,根本性解决方法就是把这部分被攻击的代码删除掉。
第二,在公有云里,数据在计算、存储、网络等子系统流动,需要把它们完全的加密。因为一旦安全被击破,这个云公司能否生存都是问题。
第三,我们看到很多客户,不论是内部客户还是外部客户,他们希望在云上构建安全容器。传统Xen和KVM架构是无法实现的,事实上就是安全上,我们看到传统的非神龙、AWS Nitro、IPU、IPU或者CIPU这些架构下会遇到什么样的挑战。
2、稳定,稳定一定是数据驱动的,我们通过线上的监控和诊断,线上的数据采集,采集后就可以针对稳定性做提升。比如我们对至强CPU的DDR系统里面,采集到单比特DDR失效这样的数据之后,是可以预防性地对VM做热迁移,这只是举个例子。
更通用的原则是什么呢?我们希望看到计算网络存储芯片的实现细节,可以拿到更多的稳定性数据,在系统在变得不可用之前能预先诊断。那么我们就可以提前把这个机器热迁移,或者宕机迁移,或者提前让客户做主动运维。若我们不深入做这个软硬件系统的时候,是很难实现更极致的稳定性。
3、性能,大家都知道,在公有云中一定要网络虚拟化。拿阿里云举例,在Xen时代的网络虚拟化在内核做,网络虚拟化时延做到了150微秒,时延抖动是很大;在KVM时代基于DPDK,网络时延做到50微秒。在线业务对时延抖动是相当敏感的。Xen架构网络转发pps,要承载企业级业务,也有一些关键性瓶颈。
更进一步,我们今天的数据密集型,不管是大数据、 AI,还是数据库系统,它们对高IO和网络带宽的全程零拷贝需求强烈。为什么要零拷贝呢?因为当带宽达到50G全双工,100G全双工,甚至400G全双工的时候。当有数据拷贝,至强或者GPU系统的缓存子系统和内存子系统,它们的性能会遇到很大挑战。比如2×100G,要在XEON的LLC缓存或者DDR里面拷贝数次,那么IO、DDR和缓存子系统都会出现严重的性能瓶颈。
4、成本,当今很热的大规模AI分布式训练,需要高带宽的RDMA互联。而在各种HPC业务对长尾时延和静态时延都有严格要求。在这种情况下,我们对性能实际上是有很高的要求。我们做IaaS的虚拟化,拿阿里云举例,在Xen时代,DOM0耗掉了一半的CPU;到KVM时代,我们耗掉了10%的计算资源和内存资源,还要加网卡来做IO的虚拟化。这个成本实际上是需要进一步做优化的。
总的来说,公有云的IaaS业务痛点总结为:要解决安全问题,进一步提升安全需求,稳定性如何进一步提升?性能如何做到极致的高,成本如何做到极致的低。
三、 什么是CIPU,以及CIPU解决什么问题?
- CIPU从何而来?
CIPU ( Cloud Infrastructure Processing Unit),即云基础设施处理器。它并不是新技术,我认为CIPU主要的源头是两点。
第一点,以intel VT-d 作为一个典型的代表,它代表IO硬件虚拟化技术的成熟。因为这项技术的成熟,才会有CIPU,DPU,IPU,所以这是前置条件。Intel VT-d 等IO虚拟化技术的成熟,会推动PCIe社区做标准化,比如PCI社区里面有SR-IOV技术,MR-IOV技术等的标准化。
第二点,和CIPU、DPU、IPU很相近,对于做通信的同学,一定会觉得很似曾相识,它的近亲是NPU,即网络处理器(network processing unit)。它是很早的技术,国内第一波做网络处理器的可能是2001、2002年开始的。
网络处理器的用途是可编程,处理网络效率高,但它不是算力加速和offloading,它是让网络研发同学精确控制各种访存有多少个Cylce和访问次数,所以它其实是对内存使用的机制优化。可编程的网络处理器把缓存一次性剥掉,就可以形成many core架构。
2012年,最先是AWS在Xen这套系统在处理IO遇到了性能瓶颈,AWS便开始引入比如Cavium的LiquidIO,还有82599外连网线做直通。不止AWS,Broadcom、Cavium、Freescale、ezchip、 intel iXP等也在开始在2012年左右关注这个市场。如果站在博通、思科或者华为做通信的视角,它是一个智能网卡。但今天它确实不再是智能网卡了。
在2012年通信市场,最火的技术之一是SDN和NFV。那时希望把网络设备、网元通过类似云的技术,通过虚拟化的技术,使通信设备硬件软件解耦合。软件独立运行,独立开发,不与硬件耦合,因为硬件的铁盒子不是关键,软件才是灵魂。
当年SDN和NFV流行的时候,通信行业已经在设想通过NFV,通过云化的设施承载无线核心网络甚至基站。那时,通信在网络虚拟化也遇到了大量的问题。自然就想到把网络处理器放在网卡里面来做。
所以在2012年时,云上的IT和通信形成了合流。最终通信领域的网络处理器,或者称之为智能网卡的技术进入了云的视野。
此后,2015年AWS收购了以色列的Annapurna Labs。当然阿里云也开始的比较早,从2015年起,阿里云和上文提到的供应商,比如博通、英特尔都有不少的接触。在那个时间点大家对技术发展的预见是一致的。
2014-2015年,阿里云在预研,到了2016年开始真正的大规模投入,2017年神龙发布,此时AWS也发布了同样产品。当然,我们也不必为此震惊,因为只要有足够大的规模,遇到了相同的问题,一定会找到相似的解法,这纯粹是业务驱动的问题。
阿里云CIPU的诞生,完全是业务驱动的结果。2015-2016年,我们并不知道原理,也不知道计算机体系结构,纯粹基于解决业务痛点改进了系统架构。2009年,阿里云开始做云;2013年做飞天单集群5K;2017年,发布神龙架构; 2022年,发布了CIPU。
阿里云内部做了三代神龙。第一代神龙发布于2017年10月,这一代只想做一件事情,就是弹性裸金属。在上图第一个截图可以看到这个弹性裸金属的性能,比如网络可以做到450万PPS,存储可以做到20万IOPS,接口做到20GbE。
第二代神龙发布于2018年9月,在网络、存储、接口性能大幅提升,到2018年底2019年初,我集团的全部业务从ECS切换到神龙架构,比如淘宝、天猫、菜鸟、高德和饿了吗等。如今阿里云新增的每一台计算服务器其实都是在神龙和ECS。
第三代神龙发布于2019年9月26日,这一代我们做了一些存储网络快速路径的芯片加速。你会看到它的IOPS在上升,PPS在上升,延迟在下降。
其实,当PPS超过1000万的时候,再提高PPS意义并不大,所以我们就会看到AWS Nitro V5做到20Mpps就够了。再提高PPS也只是在做内卷,网络上真正重要的是解决丢包、抖动、时延的问题,这些对业务真正重要的。
神龙走到今天,它的核心逻辑是要规模化,没有规模,无法实现垂直整合,因为研发成本并不低。
CIPU是为云而生的,没有云,CIPU便如同废铜烂铁,毫无价值。只有在云的环境下它才有价值,因为它解决云的弹性、多租户问题。它把存储资源、网络资源、CPU资源,全部通过CIPU纳管,就是物理资源加上CIPU后就是一个云化的虚拟计算资源池。
我们希望通过构建虚拟计算资源池,虚拟网络资源池,虚拟存储资源池,把通用的计算集群,AI弹性计算集群,大数据弹性计算集群和各种数据库系统,统一到一套池子里来解决他们安全诉求、稳定性诉求、性能诉求,成本诉求、同时这套架构富有极致弹性并且是可持续的。
上图是CIPU的展示,它通过硬件加速,比如上图中的VPC、EBS、Elastic RDMA都于硬件加速,还有硬件相关的,比如安全可信根、存储处理引擎、安全加密等,都在实现在芯片里,通过软件跟硬件的深度融合来实现更高效率。对外,我们可以生产安全容器沙箱,也可以生产虚拟机,也可以把裸金属直接卖给客户让其生产自己的安全容器。
我们可以把云原生简单理解成一个容器,用户可以生产安全容器的沙箱,它可以50毫秒快速启动,一台机器可以生成2000个这样的容器。同时IO速度是极致的,比如50M PPS, 300万IOPS。EBS 300万IOPS,4Kbyte per IO request的话,可以做到128Gbps存储IO带宽。
对我们的业务来说,长尾时延是真正重要的。当然平均时延也很重要。在这一代,本地盘的虚拟化也得到了根本性的提升,我们希望本地盘虚拟化,比如带八个盘,一个盘是50Gbps IO带宽,八个盘就400Gbps。我们希望这400Gbps都能分给安全容器和虚拟机使用,我们希望能达到八个盘800万IOPS。
当然安全在云中永远排在第一位,所以持续加强数据加密、硬件可信、固件验签等是云的底线。因为没有这些,一个云公司但凡在安全上出了问题便是灭顶之灾。后面我会继续展开介绍弹性RDMA,这就是第四代神龙,已经大规模上线了。第五代、第六代正在研发之中。
总结起来,CIPU系统根本性要解决十个业务痛点:
第一,IO硬件设备虚拟化。我们不希望自己造一套设备模型,对于阿里云ECS和AWS EC2来说,OS太多了,有Windows、Linux;Linux有CentOS6、7、8,有ubuntu,有FreeBSD,维护这些驱动会把绝大部分公司搞崩溃。所以我们选择用virtio,核心是要靠生态。因为对于ECS和EC2,生态永远是第一位的。没有生态,性能和成本是毫无价值的。
具体实践上,IO硬件设备虚拟化,包括这些设备虚拟化的可编程的弹性,BD Ring的池化。网卡中断汇聚,如何做到性能和时延的平衡,这里面有大量细节,不是简单的事情。网络的丢包和时延抖动等,要做大量持续打磨。
第二,VPC overlay 网络硬件数据加速。我们希望把三层或者3.5层的VPC,将它的转发做成硬件路径。硬件路径不仅仅卷pps,今天第四代神龙做到50Mpps,就是5000万pps,已经远远超过需求,但是你要把它P50时延,P99长尾时延,抖动,丢包这些解决好,才是真正意义上的竞争力。
第三,EBS分布式存储接入硬件数据加速。EBS也是一样,比如P999长尾时延如何,P50平均时延如何?这些平均时延和长尾时延决定了数据库系统真正运行时的状态。
第四,本地存储虚拟化硬件数据加速。主要是在计算机头做缓存,核心竞争力是性能,比如BPS、IOPS,P50平均时延,P999长尾时延。
第五,弹性RDMA。大带宽双向200Gbps,也就是400G的满线速要处理,以及延迟是能够做到多少。对于HPC来说,静态延迟和长尾动态延迟都是十分重要的,而AI分布式训练场景,更重要的是带宽,带宽双向打满的需求。
第六,安全硬件数据加速。所有200Gbps的数据是要加密的,因为安全出问题,对公有云来说是极其严重的问题。
第七,云可运维能力支撑。可运维是所有组件要能热升级,虚拟机要能热迁移。同时数据可采集,可以以数据驱动来提升稳定性。
第八,弹性裸金属支持。比如安全容器、AI分布式训练需要极致性能。单是计算和内存虚拟化就有3~5个点的性能开销,而在很贵的GPU服务器上的话,这个开销就会更为显著。
第九,CIPU池化能力。我们希望更充分的使用CIPU的资源,这本身就包含池化逻辑。比如200Gbps带宽通常情况下是用不完时,我肯定希望通过CIPU池化技术,提升CIPU本身资源的利用率。
第十,计算虚拟化支撑。
接下来和大家分享一下ECS八代的性能。ECS八代每台机器有双向200Gbps能力,EBS云盘IOPS可达300万IOPS,30微秒。VPC,5000万PPS,时延16微秒,包括999、9999的抖动,丢包等在ECS八代都有很好的优化。
弹性RDMA是第四代重点推的能力,我们不仅把它定位到HPC和AI的场景中,我更希望把它推到数据库等这些通用场景,从HPC和AI场景应用的小众技术,变成主流场景。因为只有IaaS具备的时候,其上的业务才会逐渐切换过来,比如大数据,缓存才会切。除了AI、HPC拓展到大数据、数据库、缓存等等,我希望把它做成数据密集型业务的核心竞争力的产品。
刚才我讲的都是性能层面Micro-Benchmark,但是大家一定把真实应用E2E的运行起来,比如MySQL,PK的就是云盘的性能。
同时Redis,我们可以看到在eRDMA上有130%的性能提升,它就是应用E2E。
阿里云CIPU是为IaaS的全方位计算安全做支撑的。比如底层硬件,现在使用TPM2.0等,全部由可信硬件构成。信任根确保在第一行代码运行就是可信的,并且这个信任根一直能传递到OS,传递到VM,确保每一行代码都是可信的。这个极度重要,这个是CIPU提供的。当然在固件安全这一层包括BIOS、BMC、网卡、FPGA、GPU等等,确保所有固件都可信。再到存储网络全链路一定是加密的。也就是说IaaS尽最大可能降低安全隐患。
我们讲了启动的信任链是完全可传递的,传递到虚拟化的可信任根。到虚拟化这一层会有机密计算,包括虚拟化Enclave。上图右边列表与友商的对比的六个维度:虚拟化Enclave、SGX(裸金属/VM)、SEV、可信启动、整个系统的可信方案、虚拟可信。这里表明阿里云对安全是认真的。因为安全发生故障的代价没有人能承受。
性能稳定性极度重要。比如计算虚拟化一定不能有抖动;比如ECS为什么要搞企业级实例?是让CPU、内存有性能隔离,不要多租户之间互相影响;比如某个微服务调用了一个百多次链路的业务,抖动过后,它的这个长尾时延会让这个业务彻底受不了。网络也是,之前有同学在问网络带宽怎么隔离,做通信的同学一定会对层级化的HQOS很了解。但是怎么让这些老技术在新场景里面发挥作用,再通过软硬件融合,适合硬件做的让硬件做,适合软件的用软件做。
QOS就是有资源争抢。比如带宽只有1Gbps,但是需求是2Gbps,那么就需要分高低优先级,高优先级的先处理,低优先级的做限流, CPU、内存、Cache等也可以同样方式处理,所以QOS只有在资源需求争抢的时候才会形成。QOS也没有万能药,一定要有取舍,就是高优先级的先处理,低优先级的受损失。核心目标就是在资源增强的时候保障高优先级的请求,低优先级的做限流。这是我们实现性能稳定性的逻辑。
弹性RDMA,这是CIPU引入的新特性,上面的图就能阐述清楚:
第一,RDMA是生态兼容的,这意味着什么呢?比如客户HPC在线下的业务,直接把镜像和代码拷贝到ECS里面,可以做到二进制兼容一行不改。大家可能认为代码一行不改动不是IaaS应该做到吗?但是如果你用AWS EFA和SRD,它就不是二进制兼容的。AWS定义了SRD,它不是RDMA的RC,RC是reliable connection。使用AWS SRD需要使用他的特定库,但是这点有背IaaS的原则。IaaS的原则是代码零修改、二进制间兼容的运行。这也是阿里云为什么不做SRD的原因,因为我们希望做到生态兼容。
第二,RDMA是超大规模的,为什么呢?因为云里面,我们的VPC是同一区域,跨AZ是毫秒级时延。更为极端的使用场景,比如张北的一个机房,跟上海的一个机房通信,这是一个几十毫秒级的通信系统,弹性RDMA也能够胜任这个场景。而上面这种情况下,如果采用传统RoCE技术,基于PFC这个RoCE RDMA,跨一个pod机可能出现严重的技术挑战。
第三,是要基于VPC之上。因为VPC才能在三层或者3.5层把网络租户隔离,然后才能保证ECS的弹性。在此再次强调,如果说云没有弹性,没有多租户,事实上就是短期的卖铁行为。卖铁行为是不可能产生社会价值,也不可能产生客户价值的。这就是传统的IDC或者是高级版的IT。
我们的弹性RDMA性能做到双向200Gbps,8微秒时延,后续有优化版本能做到5微秒时延,今年年底可以交付。现今的弹性RDMA能交付3000万message pps,请注意,RDMA的message最小是一字节,最大是2GByte,这个message跟packet不是一一映射关系。比如一个2GByte的message,按1.5k MTU来分解,便是大量的报文。
ECS八代实例的全量支持。用户购买的ECS八代都是可以通过弹性RDMA互联互通的,后续我们会逐渐把六代、七代全部做到通过弹性RDMA互联互通,因为网络只有互联互通才能真正上做出业务价值。
我们希望焦点在哪里呢?弹性RDMA不仅仅是做HPC应用或者AI应用或者数据库应用。因为传统的这些应用,这三个应用就基于RDMA长出来的。希望做些缓存应用,大数据应用,甚至是在线交易应用,在基础设施可以提供支撑的时候,上面的应用才能长出来。Open API、Intel MPI、libfabric、NCCL、UCX、SMC-R,这些都可以代码零修改的兼容,我们希望做到普惠。
技术上是全栈自研:首先是弹性RDMA虚拟化、LUNA TCP网络传输协议、HPCC网络拥塞控制算法和多路径支持。 多路径对于AI大带宽业务非常重要,支持多路径,带宽利用率会提升70%。也就是说比如800Gbps的系统和一个1.6Tbps的系统,如果通过多路径使得带宽利用率提高70%,这个意味对于现今大带宽AI来说,是核心竞争力。
下面介绍以下大家比较关心的,云上怎么构建AI高性能的系统。
对于通信来说有以下四个问题:
1、多打1的通信incast。比如 MOE这种专家系统,它的all to all通信,都是多打1的incast。
2、大象流hash冲突。就是消耗几十毫秒的这种200Gbps/400Gbps的通信,被称为大象流,大象流在典型的数据中心网络里会有三个hash冲突点:
· 网卡2x100G或者2×200G的出接口,这个地方有哈希不均衡。
· ASW上行PSW时,ECMP的等价多路径会有哈希不均衡。
· PSW下行ASW,会由于ECMP路由,导致NIC入方向的incast不均衡。
这三个哈希冲突点解决不好,大象流冲上去,会导致很低的交换网利用率。
3、云特有的多租户网络流量干扰。因为带宽太大,甚至需要占满交换网。这时如果多租户之间的流量有耦合,会有很大的问题。
4、多轨道资源调度碎片化。业界其实在做多轨道碎片优化,核心是把这些机器的处于相同rank的GPU放置到一个ASW中,让同组GPU的流量尽量终结在ASW中。好处是流量终结在ASW中,不流入PSW,但是会导致调度域碎片化。因为一个ASW如果带32台机器,这32台机器客户申请和释放几次后,这32台机器在同一个ASW会碎片化,到时候对调度会有co-locality的要求,这对调度是一个很难的问题。
这是我们的一家之言。我们希望构建端到端的拥塞控制,比如从GPU到GPU -- GPU -> PCI -> PCIe Switch -> 网卡-> ASW -> PSW-> ASW->网卡->PCIe switch -> GPU完整的端到端拥塞控制。因此需要把PCIe相关的流控信号到网络内部的拥塞控制信息要全链路打通,否则就会缺一环。
此外,多路径打散大象流,也需要通过端到端的多路径来解决,而不是只解决网卡或者只解决网络。同样我们希望把去多轨道,回到通用网络,构建同pod对等网络来解决我们这些多租户网络流量干扰和资源碎片化问题。
思考过后,我们认为传统交换机的自适应路由、flowlet,VOQ等技术,在部分场景里面解决了一些问题,但是他们很难全方位解决好这些问题。这是我们看到的一个难题。我们考虑的解决办法就是端到端的拥塞控制,端到端多路径打散大象流,同时去除去多轨道和双平面转发。
四、CIPU计算体系结构实质
CIPU、CPU、GPU的差别,总结了以下三点:
1、安全。上文我们讲到云要求极致的安全,比如数据端到端加密,IaaS安全需求催生数据inline处理。安全容器到今天既保持容器的接口,又有虚拟机的安全。弹性裸金属,数据inline的安全处理事实上都是安全需求驱动的。
2、加速数据。CPU是通用计算,GPU是加速计算,CIPU是加速数据。什么是加速数据?CDN、存算分离下机头缓存、CIPU芯片和系统中的数据和控制分离,到处理器内部的L1/L2/LLC缓存体系,到冯诺依曼内存墙,到存内计算。这些技术的全部实质是:数据是有重力的,搬运和移动数据的成本极大。CIPU数据加速的目的,就是通过CIPU芯片的数据控制分离,减少数据在CIPU的移动(比如减少数据的offchip等),来提升处理吞吐和降低业务平均时延和长尾时延
3、IaaS池化。云支持弹性多租,它是composable and disaggregated Infrastructure。CIPU是高性能池化的中心节点,所有计算、网络、存储节点都围绕CIPU做池化。
CIPU在计算机体系结构中只有这三个定位。CIPU绝对不是做算力加速和卸载,不是与GPU抢生意,不是做所谓的旁路卸载。CIPU是做加速数据,如今的算力是富裕的,我们定义算力就是峰值算力,就是data命中L1 Cache之后的CPU算力。同时GPU的算力极度富裕,GPU的问题是内存墙问题,功耗问题和通信墙问题。所以算力是不需要任何加速的。CIPU是同时完成安全容器和基础设施池化的关键业务支撑。
五、CIPU和DPU/IPU的关系
CPU处理数据,GPU也是处理数据的,TPU也是处理数据的,FPGA也是处理数据的,DSP也是处理数据的,是不是所有处理数字信号和处理数据的芯片,都应该叫DPU(data processing unit)呢?除了处理模拟信号,比如通信用的视频处理的,只要是数字芯片,它都可以叫DPU。
那么DPU这个名字是不是取的太大,太通用了,是否需要业界更进一步精确的定义?其实取名是极度重要的,因为科学和工程的第一步是做分类,分类的第一步就是命名,命名的原则是越小越好,这个名字覆盖的内容越少,说明想的越清楚。即一定要回答做什么,不做什么,这是最重要的。所以DPU这个名字,我认为业界需要做精确的探讨,什么是DPU,如果定位是数据,我确实认为有值得商榷的地方。
IPU,在我们的视角,IPU比DPU定义的好一些,因为它名字小,Intel叫它Infrastructure Processing Unit, 这是比DPU小的名字,但凡是小的名字,我就认为是好名字。但是为什么我们没有沿用英特尔的IPU这个名字,因为我们认为IPU只要脱离云的弹性多租上下文,便不是是刚需。也就是说DPU、IPU、 CIPU如果不是做云的弹性多租,我们认为它就是废铜烂铁。在这种情况下,我们就定了这么一个名字。我们希望后续DPU会有精准的定义。
上图中二维码内容是我在去年6月写了一篇文章叫《七千字详解阿里云的CIPU技术架构》,这篇文章会有更细节的一些逻辑推导和探讨,欢迎大家阅览。
同时想要关注更多精彩直播/观看课程回放的同学,可以扫描下方海报中的二维码/点击回看,均可观看。