异构计算指由不同类型指令集和体系架构的计算单元组成系统的计算方式,目前主要包括GPU、FPGA 和定制ASIC 等。它们好比天赋异禀的独门高手,在特定场景下比普通的云服务器高出一个甚至更多数量级的性价比和效率,例如,在图形图像处理、机器学习、科学计算等场景下。要把这些异构计算设备包装成云服务器,同样需要对它们进行虚拟化。而由于这些设备的特殊性,其虚拟化技术或多或少地有别 于CPU。
随着人工智能浪潮的兴起,越来越多的AI 计算都采用异构计算来实现性能加速。异构计算能够为越来越复杂和精确的AI 的计算模型带来大幅性能提升,现在, AI 开发者大部分都采用了TensorFlow、PyTorch 等主流的AI 计算框架来实现异构计算的性能加速。但是,这些主流的AI 框架不能充分发挥异构计算超强的计算能力, 因此我们针对异构计算云服务研发了云端 AI 加速器,通过统一的框架同时支持了
TensorFlow、PyTorch、MXNet、Caffe 这4 种主流AI 计算框架的性能加速,并且针对以太网和异构加速器本身进行了深入的性能优化。
3.4.1 功能特点
异构计算GPU
视觉、图形、虚拟现实、大数据和人工智能等新兴技术的发展和广泛应用对计算能力提出了更高的要求。传统计算机的计算主要是由计算机的*处理器(CPU)完成的,CPU 除了必要的计算工作,还需要负责处理复杂的控制逻辑, 这就导致 CPU 的内部架构异常复杂,真正用于计算的部分占比并不高。随着芯片技术的发展,CPU 晶体管的数量不断增加,但是 CPU 的计算能力没办法得到质的提升。使用 CPU 对上述领域的数据进行处理,在经济性和实效性方面都无法满足实际应用的要求。异构计算因此而产生。
异构计算是相对于 CPU 的通用计算而言的,通过在现有 CPU 基础上引入新的硬件计算单元来解决上述问题。这些新的硬件单元针对特定的计算场景进行深度的优化和定制,在处理这一类计算任务时可以获得相比 CPU 几十倍甚至上百倍的效率提升。目前主流的异构计算解决方案有GPU、FPGA,在阿里云弹性计算的产品序列上, 它们分别对应GPU 云服务、FPGA 云服务和弹性加速实例服务(Elastic Acceleration Instance Service,EAIS)。
GPU 云服务器是基于GPU 应用的计算服务器。在GPU 硬件支持虚拟化之前, 已经在各个领域被广泛应用。GPU 在执行复杂的数学和几何计算方面有着独特的优势。特别是在浮点运算、并行计算等方面,GPU 可以提供上百倍于CPU 的计算能力。GPU 云服务器让GPU 的使用更便捷、成本更低,GPU 上云是大势所趋。GPU 云服务器发布和人工智能爆发在同一年,两者相互促进。GPU 云服务器已经成为人工智能应用依赖的基础设施。
和CPU 相比,GPU 硬件的使用需要复杂的生态软件支持,环境的构建较为复杂, 以NVIDIA 的GPU 硬件为例,底层安装的GPU 硬件驱动,并行计算需要CUDA、cuDNN 等基础库支持,上层应用还需要设置各种的环境变量,使用比较复杂。GPU 云服务器是虚拟化云服务器的一个规格族,具有虚拟化服务器的一切特性:在环境复用性上利用自定义镜像等功能,可以很便捷地规模化使用;支持停机迁移,GPU 或宿主机出现故障时,可以通过冷迁移,在几分钟内恢复起来。当前GPU 分片虚拟化技术已经成熟,各云服务提供商已经试水上线对应的规格,和GPU 直通相比,具容器服务对GPU 的支持已经非常成熟,GPU 硬件厂商对Docker 做了定制化的开发,在容器内可以获得GPU 全部功能,使用更加便捷。GPU 云服务器作为弹性的资源,在之上部署容器服务,从而实现弹性业务,这种架构方案已经被主流AI 公司广泛使用。
异构计算FPGA
FPGA 自诞生之初,就以高度灵活的可编程性提供类ASIC 的性能和能效比而被广泛应用于有线和无线通信、航空航天、医疗电子和汽车电子等领域。但是,相比CPU 和GPU,FPGA 的开发周期较长(尽管只有ASIC 开发周期的一半乃至三分之一)、开发和使用门槛较高,使得FPGA 的开发人员远远少于CPU 和GPU 的开发人员,同时应用范围和知名度也受到了很大的限制。
随着云计算的蓬勃发展,各种新的数据中心应用层出不穷,对算力(比如AI) 和计算结果实时性(比如基因测序和视频直播)提出了越来越高的要求。而CPU 的算力随着摩尔定律的终结,短时间内很难有大的提升,业界也逐渐尝到了采用FPGA 进行特定workload 加速的巨大优势。因此,在数据中心大力推广FPGA 异构加速逐渐成为业界共识。与之相对应,AWS 和阿里云在2017 年4 月先后发布了基于FPGA 的云上应用,也即FPGA as a Service。其目的是提供超高性价比、超低延时(相比CPU 或者GPU,下同)的云上FPGA 服务。微软也通过Catapult 项目,在自家的数据中心大量部署FPGA,支持Bing 和Office 365 业务,更于2019 年10 月北美XDF 大会上推出了自家的FPGA as a Service 产品,进一步佐证了FPGA 异构加速在数据中心应用的光明前景。
一般来说,云上FPGA 服务应具备如下功能和特点。
一是易用性,包括购买和使用要达到类ECS(基于CPU 的计算服务)的方便快捷性;具备类ECS 的灵活调度性,随用随开、不用释放。
二是稳定性,要具备类ECS 的热升级、热迁移功能。
三是安全性,包括客户和第三方ISV 的IP 地址要被合理合法使用;能够防范各种针对FPGA 的恶意攻击及受到攻击后迅速恢复。
四是要提供FPGA 云上开发和使用的工具及环境,让用户和线下一样方便地开发各种FPGA 加速器并在云上部署。
弹性加速实例服务
弹性加速实例服务(EAIS)支持异构计算资源的弹性挂载,前端可以使用不带异构加速的ECS 实例,后端可以动态挂载或者卸载GPU、FPGA、NPU 等实例,让普通ECS 具备异构计算加速的能力。EAIS 可以让CPU 和异构加速器的数量配比实现灵活可配置,从而满足AI 推理、渲染、视频编解码全场景对于不同CPU 和异构加速器的数量配比的需求。同时,后端的GPU、FPGA、NPU 等实例通过池化管理和调度,可以灵活选择最适合用户工作负载的异构加速器,大大降低异构加速成本。
AI 加速器
AI 加速器通过统一的框架同时支持TensorFlow、PyTorch、MXNet、Caffe 这4 种主流的人工智能计算框架的分布式性能加速,并且针对以太网和异构加速器都做了很深入的性能优化,在不同场景不同训练规模下可以提升1 ~ 10 倍的训练性能。同时,AI 加速器和各AI 计算框架是解耦的,一方面可以轻松支持各AI 计算框架社区版本的向前迭代;另一方面,用户使用各AI 计算框架实现的模型、算法代码基本上不用修改,就可以很轻松的获得性能加速。