《异构计算云服务和 AI 加速器》系列,共包含以下文章:
- 异构计算云服务和 AI 加速器(一):功能特点
- 异构计算云服务和 AI 加速器(二):适用场景
- 异构计算云服务和 AI 加速器(三):GPU 虚拟化技术
- 异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术
- 异构计算云服务和 AI 加速器(五):EAIS & AI 加速器
😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
异构计算云服务和 AI 加速器(一):功能特点
想象一下,你在一家餐厅的厨房里工作。厨房里有不同技能的员工:
- 主厨(
CPU
):负责复杂的决策和精细的操作,比如设计菜单、调配酱料、管理整个厨房的流程。 - 切菜工(
GPU
):专门负责切菜、剁肉等重复性、大批量的工作,速度非常快。 - 洗碗工(其他加速器,如
FPGA
或ASIC
):专门负责洗碗、清理工具等特定任务。
如果所有工作都让主厨一个人做,虽然他能完成,但效率会很低,尤其是面对大量订单时。而通过分工合作,每个人专注于自己擅长的任务,整个厨房的效率就会大大提高。
异构计算就是这个道理:它利用不同类型的处理器(比如CPU、GPU、FPGA等)来完成不同的任务,充分发挥每种处理器的优势:
CPU
:擅长处理复杂的逻辑和任务调度。GPU
:擅长处理大量简单的并行计算(比如图形渲染、深度学习)。FPGA
/ASIC
:擅长特定任务(比如加密解密、视频编码)。
通过将这些不同类型的处理器组合在一起,系统可以更高效地完成任务。这就是 异构计算的核心思想:让合适的硬件做合适的事,从而提高整体性能。
异构计算 指 由不同类型指令集和体系架构的计算单元组成系统的计算方式,目前主要包括 GPU、FPGA 和定制 ASIC 等。它们好比天赋异禀的独门高手,在特定场景下比普通的云服务器高出一个甚至更多数量级的性价比和效率,例如,在 图形图像处理、机器学习、科学计算 等场景下。要把这些异构计算设备包装成云服务器,同样需要对它们进行虚拟化。而由于这些设备的特殊性,其虚拟化技术或多或少地有别于 CPU。
随着人工智能浪潮的兴起,越来越多的 AI 计算都采用异构计算来实现性能加速。异构计算能够为越来越复杂和精确的 AI 的计算模型带来大幅性能提升,现在,AI 开发者大部分都采用了 TensorFlow、PyTorch 等主流的 AI 计算框架来实现异构计算的性能加速。但是,这些主流的 AI 框架不能充分发挥异构计算超强的计算能力,因此我们针对异构计算云服务研发了云端 AI 加速器,通过统一的框架同时支持了TensorFlow、PyTorch、MXNet、Caffe 这 4 种主流 AI 计算框架的性能加速,并且针对以太网和异构加速器本身进行了深入的性能优化。
1.异构计算 GPU
🚀
GPU
(Graphics Processing Unit
,图形处理器)是一种专门用于处理图形和并行计算的处理器。最初设计用于加速图形渲染,如 3D 游戏和视频处理,但随着技术的发展,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 的支持已经非常成熟,GPU 硬件厂商对 Docker 做了定制化的开发,在容器内可以获得 GPU 全部功能,使用更加便捷。GPU 云服务器作为弹性的资源,在之上部署容器服务,从而实现弹性业务,这种架构方案已经被主流 AI 公司广泛使用。
2.异构计算 FPGA
🚀
FPGA
(Field-Programmable Gate Array
,现场可编程门阵列)是一种特殊的半导体芯片,它的最大特点是硬件逻辑可以根据需要编程和重新配置。简单来说,FPGA 是一种可以通过软件定义硬件功能的芯片。
你可以把 FPGA 想象成一个 “乐高积木”:
- 普通的芯片(比如 CPU 或 GPU)是已经固定设计好的,就像一台组装好的玩具车,功能是固定的。
- 而 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 加速器并在云上部署。
3.弹性加速实例服务
弹性加速实例服务(Elastic Acceleration Instance Service
,EAIS
)支持异构计算资源的弹性挂载,前端可以使用不带异构加速的 ECS 实例,后端可以动态挂载或者卸载 GPU、FPGA、NPU 等实例,让普通 ECS 具备异构计算加速的能力。EAIS 可以让 CPU 和异构加速器的数量配比实现灵活可配置,从而满足 AI 推理、渲染、视频编解码全场景对于不同 CPU 和异构加速器的数量配比的需求。同时,后端的 GPU、FPGA、NPU 等实例通过池化管理和调度,可以灵活选择最适合用户工作负载的异构加速器,大大降低异构加速成本。
4.AI 加速器
AI 加速器通过统一的框架同时支持 TensorFlow、PyTorch、MXNet、Caffe 这 4 种主流的人工智能计算框架的分布式性能加速,并且针对以太网和异构加速器都做了很深入的性能优化,在不同场景不同训练规模下可以提升 1 ~ 10 倍的训练性能。同时,AI 加速器和各 AI 计算框架是解耦的,一方面可以轻松支持各 AI 计算框架社区版本的向前迭代;另一方面,用户使用各 AI 计算框架实现的模型、算法代码基本上不用修改,就可以很轻松的获得性能加速。