8年推出9颗芯,亚马逊AWS自揭造芯秘籍
2021-12-17
来源:芯东西
从2013年推出首颗Nitro1芯片至今,这家最先涉足自研芯片的云厂商,已坐拥网络芯片、服务器芯片、人工智能机器学习自研芯片三条产品线。
4代网络芯片Nitro、3代服务器芯片Graviton、1代AI推理芯片、1代AI训练芯片,这是AWS迄今公布的云计算底座自研芯片版图。
值得注意的是,AWS绝非“PPT造芯”,而是通过云实例将芯片的价值快速导向客户。今年,AWS发布了C7g、Trn1等一系列新实例,并推出Nitro的SSD硬盘。
“自研芯片是需要经验积累的,并不是你花钱就能买来的,也并不是你着急很快就能实现。”在2021 re:Invent全球大会媒体沟通会上,亚马逊云科技大中华区产品部总经理顾凡谈到AWS在重构自研芯片中的最大优势——深刻理解云上所有客户的工作负载,去逆向工作,设计芯片。
对于AWS的造芯历程以及背后逻辑,亚马逊云科技大中华区产品部计算与存储总监周舸进行了详细地解读。
01.
自研CPU:以客户需求为起点,
两大技术思路提升性能
AWS从自研芯片出发做云计算的创新,要从2006年发布第一个Amazon EC2 Instance说起,这是一段由十人团队开始的Amazon EC2旅程。
随着客户对Amazon EC2提出更多要求,AWS持续地增加了很多机型,包括给SAP用的超过24TB最大内存的实例、专为转码业务提供的VT1、基于Arm的苹果最新M1芯片提供的新实例等。
这些实例多样化创新的不断深入,令AWS团队意识到,必须专注到芯片研发的本身,从芯片的创新开始。于是从2013年至今,AWS不断基于自研芯片推出新的实例,以提供更高性价比。
2019年,AWS发布第二代服务器芯片Graviton,其实例上市后,客户把更多不同的应用方式部署到Graviton上,跨越的范围也进一步扩展,从当初的Cache到Web一直延伸到数据分析,乃至机器学习和高性能计算的工作负载。
为了帮客户更好地使用新实例,AWS将更多的管理服务和Graviton做深入集成,使得客户能快速用起来。结果,很多客户只用一两天时间,就能完成从x86到Arm的转移。
在今年的re:Invent大会上,AWS发布了4个基于Graviton2的新实例,包括1TB内存的X2gd、由Graviton2和英伟达GPU提供支持的G5g等。Is第四代的实例中有Is4gen和Im4gn,也采用的是Graviton2处理器。
Graviton2有300亿个晶体管,新一代Graviton3又增加了200亿,共拥有500亿个晶体管。
C7g是第一个针对Graviton3的实例,其突破有多处重点,包括性能较上一代提升超25%,浮点运算能力提升超过两倍。在内存上,C7g也是云上第一个支持DDR5的新的计算实例。
亚马逊云科技大中华区产品部计算与存储总监周舸也分享了Graviton的技术创新,相同Arm微架构不代表能做出相同的CPU,芯片设计时必须有自己的思考,AWS的原则是,从工作负载去看,从客户真正实际使用情况,去找到设计的起点。
在过去的20年里面,提升CPU性能最容易的两个方向,一是提高频率,二是增加内核数量。
大多数时候,提高频率很容易让性能得到提升,但问题是,以现有半导体的功率和能力,提高频率意味着会提高很多频率、热量,需要搭配很大的电源及散热配置。
在像云这样的超大规模数据中心,这将带来大量的耗电、能耗,降低了云的效率,并对散热效率提出更高要求,最终致使客户的使用成本上升。“所以这是我们非常谨慎的在选择频率提升的时候的一个主要原因。”周舸说。
如果不做频率的提升,那还有别的什么选项呢?
AWS的答案是,希望让内核的宽度得以增加,即使用指令并行的方式,希望其内核在同一个时钟周期中能够执行更多的指令、完成更多的任务。
比如从一个时间周期执行5个指令提升到执行8个指令,所以同一个时间里面能做更多事,这也能给最后的性能带来很大变化。
使用指令并行时,如果应用程序的编译能够发挥出指令并行的优势,效果会非常明显。Nginx和Groovy差不多提升了60%,甚至Redshift也可以提升超过25%。
在同一个周期里面,AWS让它有机会执行更多的指令,也让同一个指令执行时能够执行更多的数据,它就会更快地完成视频、图像等处理、转码以及一些机器学习和高性能计算的过程。
结果可见,x264、x265视频编码性能提升50%左右,AES-256加密性能提升了61%。这都是通过指令并行和同一个指令里面加载更多的数据量的处理能力来实现的,而没有靠频率提升。
增加核数是提升性能的另一个快而有效的方法。
从第一代Graviton到第二代,AWS增加了不少核数,效果还不错。到第三代时,AWS团队研究了真正在Graviton2上运行的客户工作负载,发现其中大量的工作负载里是大数据的、微服务架构的等等,还有些高性能计算服务,这些服务对于内存带宽和延时敏感度非常高。
因此,AWS团队做出判断:在内存下功夫,会比增加核数的效果更快。
新的选择题出现:用余下晶体管去增加更多核,还是去增加CPU的内存带宽和降低延迟?
最终,AWS团队选择了内存。相对于Graviton2以及英特尔的Tool平台,其内存带宽提升了50%,这在很多应用上的效果非常直接。
一些早期用过的客户分享了Graviton3给他们带来的帮助。如Twitter表示其性能提升20%~80%,甚至在降低尾延迟方面可以降低至少35%,这对内存延迟非常敏感;F1方程式在做流体仿真时用的是Graviton2,已经比英特尔的平台快很多,这次它用C7g又可以提升40%;Epic《堡垒之夜》的游戏性能体验也大幅提升。
还有一个重要指标是让功耗降低60%。这将维持更高能效比,且客户不会付出很高的成本代价。
Graviton的大量使用,已经衍生到了非常多的工作负载中。如SAP HANA Cloud使用Graviton,去帮助企业级的客户提升运营效率、提高性能。
同时,今年AWS在re:Invent上面也宣布了其连续第四年获得了HPC最佳云平台的大奖,Graviton还在11月底获得中国计算机学会高性能计算委员会颁发的产品创新奖。
C7g实例通过支持BFloat16,使得Graviton3的机器学习推理性能几乎比上一代提升快4倍。
02.
自研AI芯片:优化内存和网络,
加速适配机器学习需求
在提升服务器芯片AI算力的同时,AWS正持续优化其AI芯片及相关实例的性能。
面对AI训练和推理,AWS有不同的实例。除了其P4d、inf1实例用在推理,通用CPU的推理使用也越来越多,包括C6i和C6g;在训练方面,AWS推出了具备EC2超级集群能力的P4d和基于英特尔AI芯片Habana驱动的DL1。
2019年,AWS发布基于其自研云端AI推理芯片Inferentia的Amazon EC2 Inf1实例,如今该实例已经被很多中国客户用于做推理。
今年刚刚推出的Trn1,是基于AWS自研云端训练芯片Trainium的实例。近年机器学习发展飞速,其配套的各种专业加速芯片随之发展迅猛。每年机器学习专用芯片的演进提升速度都超翻倍,比通用CPU快得多。
可是挑战是,机器学习这个模型的复杂度是呈10倍地成长,光靠GPU、加速芯片本身的加速,已经不足以跟得上这个速度。
因此要让机器学习训练能力大幅提升,关键是并行训练。这意味着不仅要提升专用芯片本身的性能,还要解决内存和网络两大难点,构建更适合这些芯片发挥的网络环境和它配套的所有服务。
内存方面,从P3dn开始,AWS的内存一直在增加。到今年Trn1内存已是512G。
网络方面,AWS几年前就推出了100G的网络,到p4d时去年做了400G的网络,全新发布的Trn1首次将带宽增至800G,Trn1n更是可以到1600G,基于其EFA,AWS可以让机器学习的设备组在一个架构中,提高分布式高性能计算和机器学习工作负载的吞吐量和可扩展性。
从效果上来看,一个典型大模型GPT-3需要两周的训练周期,用P3dn需要600个实例,P4d已经降至128个实例,Trn1n继续下降到96个实例。实例数大幅减少后,成本会明显节约。
值得注意的是,P3dn跑训练时,49%的开销花在了实例之间的通信。P4d把网络性能提升后,还剩14%的开销。到Trn1n,只有7%的开销会用到网络通信上面。
这带来的好处是,AWS可用更大的集群、更多的卡同时去训练,真正明显缩短训练时间。P4d最多可用4000个卡同时训练,Trn1n则将这个指标提升到了1万张,这也是一个巨大的进步。
如今,每天有超过6000万个全新实例在Amazon EC2实上运转,这是2019年的两倍,而这一切都来自于网络本身的创新。
03.
自研SSD:统一监控运行指标,
降低bug风险
Nitro芯片是AWS网络创新的起点,前文谈及的从100G、400G、800G到1600G都离不开Nitro。
这个已经推出四代的网络芯片帮助AWS解决了很多问题,包括提供了统一的安全性平台,无论使用什么样的CPU计算平台,都可以获得一致的安全性、一致的VPC接入能力、一致的API的统一性等等。
Nitro也可以帮助提高存储的性能。
第一块硬盘在1956年时相当巨大,后来逐渐发展成像一个唱机大小的磁盘,数据中心中很多大数据都存储在这样的磁盘里面。随着应用的发展,数据中心对IO吞吐的需求越来越高,擅长于此的SSD被越来越多地采用到存储设备中。
SSD用半导体存数据,其闪存转换层(FTL)会控制将数据从逻辑地址到物理地址的转换。这里特别容易发生两件事:一是垃圾回收,擦写时要将相应空间释放出来;二是磨损平衡,控制每个数据块使用频率差不多,能被较均衡地磨损掉。
过去,AWS使用的大量SSD硬盘来自很多供应商,各家FTL控制机制不同,甚至每种盘的FTL都可能不一样。如果FTL中有bug要修复,只能等到原厂来做这个事,时间就会很不可控,连带着AWS对客户提供服务保障会变得更困难。
此外,不同FTL的有些功能实现逻辑不一致,可能会在不同的时间启动垃圾回收、碎片回收、磨损均衡等功能,一旦突然启动了这个功能,客户正在使用这个盘时,去请求的工作就会被中断掉,这对客户的使用会造成非常大的干扰。
同一个应用,当使用不同盘时,性能是不一样的。因此AWS用Nitro SSD,通过统一的FTL来解决这些问题,自己解决bug,避免客户被干扰。
AWS第一代Nitro SSD在2017年就做出来了,目前其整个云体系部署了超过50万个Nitro SSD,第二代Nitro SSD在今年的re:Invent大会上刚刚发布。基于英特尔平台的I4i以及基于Graviton2的Im4gn/Is4gen机型都用到新的Nitro SSD。
Nitro SSD带来直观的性能提升,相比上一代I3实例,新实例I/O延迟降低了60%,延迟可变性降低了75%。
EBS存储服务也使用Nitro SSD来提升性能。比如今年正式投入市场的io2 Block Express就使用了Nitro SSD,最终获得256k IOPS及非常稳定的毫秒级延时。
从上图可见,其跑PostgreSQL时性能可提升2.4倍以上,甚至在SQL上性能更好。据其客户分享,如果用R5B的Instance加上io2,是在云上面跑SQLServer最合适的选择,性能提升了5倍。
2006年,AWS发布第一个云服务Amazon S3对象存储,这也是AWS存储的起点。
如今越来越多的工作负载开始移到云上,需要Amazon S3支持。今年AWS又推了两个新的存储层:一是把用于归档数据的Glacier做了一个可及时索引的分层,既能像热数据般快速索引调用,又能像归档存储一样长期保持超低成本。
AWS S3智能分层也覆盖到新的层,当前提供8个存储层,可满足各种存储需求。S3中装有10^14个对象,相当于全球每个人可摊1.3万个对象,宇宙中有2万亿星星,每个星星可摊5个对象。
在如此大的规模中,如何让客户保持那么高的可用性和一致的性能?将如此多的对象完全分布在数百万的硬盘上,正是Amazon S3的机制,使其从第一天开始就能提供非常高的稳定性、可靠性和性能。
04.
结语:一切从芯片创新开始
从CPU到加速芯片再到存储,这些AWS基础底层技术的进化都是从芯片创新开始的。基于这样的创新底座,AWS发展到如今的规模,仍能做到高效、安全、持续的创新。
在这些计算、存储、数据相关的服务打破各种创新边界的同时,新的约束正亟待突破。这些约束在于很多的物理地域、法规中,比如数据要存在本地的法规要求,以及各种距离产生延时、网络带宽、连接稳定性等等。
AWS也在通过一系列产品布局解决这些问题。比如与AWS WaveLength可服务超低延时的5G边缘应用,Outposts将AWS的能力扩展至客户自己的数据中心;Cloud WAN使客户通过中央控制面板更轻松地将地面复杂网络连接到云;Snowball设备可实现一周迁移数TB数据;Ground Station卫星通信运营服务更是冲出地球,覆盖到卫星通信与数据处理……
今天,AWS在有25个区域,覆盖全球六大洲,提供了81个可用区,接下来还会在提供9个新的服务区,同时提供有30个Local Zones本地区域。基于芯片创新的基石,AWS正通过在云基础设施上持续推陈出新,帮助云上用户探索更远的边界。