带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.4 异构计算云服务和AI 加速器(五)

简介: 带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.4 异构计算云服务和AI 加速器(五)


3.4.4 FPGA 虚拟化技术

FPGA 的高性价比算力通过云输出,使得FPGA 的算力普惠化、平民化,这是FPGA as a Service 的核心出发点和立足点。同时,云上使用FPGA FPGA 的传统使用方式也有着非常大的区别。FPGA as a Service 的核心就是FPGA 虚拟化技术。

目前FPGA 虚拟化技术还在发展初期,近几年随着云计算和AI 技术的发展, 才逐渐成为工业和学术领域研究的热点。关于FPGA 虚拟化技术的介绍文献也比较少,关于FPGA 虚拟化技术的发展历史,目前比较全面的总结可以参考2018 Manchester 大学学生发表的一篇IEEE 论文A Survey on FPGA Virtualization ,文中提到早在2004 年由Plessl Platzner 发表的一篇论文Virtualization of Hardware- Introduction and Survey 中提到过FPGA 虚拟化技术的概念,将FPGA 虚拟化技术分为时域划分(Temporal Partitioning)、虚拟化执行(Virtualized Execution)和虚拟机(Virtual Machines)三种。

时域划分早期主要解决设备容量问题,是将大规模的应用设计拆分为几个小设计,然后将每个设计烧写在单个FPGA 上顺序执行。时域划分技术如图3-35 所示, 主要包括网表划分、数据流图划分和CDFG 划分。随着数据量和计算复杂度的增加, 单片FPGA 已经无法满足一个应用的需求,需要多片FPGA 并行完成,虚拟化技术逐渐打破了时间和空间维度的限制,就像大型数据中心的应用场景:多片FPGA 并行执行同一个任务,并可以及时切换到下一个任务。

虚拟化执行是把一个应用分成几个有关联的任务,并通过一个抽象层来管理和调度它们,其目的是在一定程度上实现设备无关性(Device Independence),从而解决资源管理和安全隔离问题,还可以提高开发效率,比较典型的例子是“PipeRench”项目,此项目成功研发了“Kilocore”芯片,它内置了一个PowerPC 处理器,实现了硬件虚拟化,并可以动态配置,从而解决FPGA 的资源限制问题。

虚拟机通过一个抽象架构来描述应用从而彻底实现设备无关性。起初,虚拟机的概念用来表示FPGA 的静态架构,譬如Shell 或者vFPGA Hypervisor,并不是我们现在理解的虚拟机概念。现在的FPGA Overlay 技术是应用比较广泛的FPGA 虚拟化方法之一,它是位于FPGA 硬件层之上、并连接顶层应用的虚拟可编程架构,实现了对FPGA 底层硬件资源的抽象化和虚拟化。FPGA Overlay 的具体实现方式有很多种, 这里不详细介绍,其主要目的是为上层用户提供他们熟悉的编程架构与接口,比如通过C 语言等高层语言对Overlay 中的通用处理器等进行编程,而无须担心具体的硬件电路实现,这点类似HLSOverlay 实现了FPGA 的硬件无关性,便于应用设计在不同FPGA 架构间移植。另外,用户可以选择只编译自己改动的逻辑部分,在很大程度上缩短了FPGA 的编译时间,也方便对应用进行调试和修改。但是在实际开发中,由于其引入的Overlay 层并不能完全隐藏FPGA 结构,而且此技术没有业界统一标准, 所以会来带额外的开发难度和成本。

image.png

3-35  时域划分

按照资源的抽象级别,FPGA 虚拟化技术分为三类,如图3-36 所示。

资源级别Resource Level):FPGA 上的资源可分为两种,一种是可配置的, 一种是不可配置的,所以资源级别的虚拟化主要指架构虚拟化(增加一个抽象层)和I/O 虚拟化,比较典型的技术就是FPGA Overlay 技术,I/O 虚拟化技术本质上跟CPU/ GPU 实现类似,比如FPGA 云主机用到的设备透传功能。

单节点级别Node Level):单节点指单片FPGA,主要指具备资源管理功能的抽象层,包括VMMVirtual Machine Monitors,也叫Hypervisor),ShellFPGA OS Hypervisor-vFPGA)和调度管理,主要用于多租户场景,即FPGA 云主机。

多节点级别Multi-Node Level):多节点指由两片以上FPGA 组成的FPGA 集群,虚拟化的目的是在多片FPGA 上完成同一个加速任务。其实现依赖FPGA 互联功能,常见的有三种互联方式,如图3-37 所示。

FPGA 虚拟化技术比较典型的应用场景包括基于OpenCL 实现的MapReduce 框架和微软的Catapult 项目。

FPGA 云主机的实现方式来说,FPGA 虚拟化指I/OPCIe 设备)虚拟化技术。

I/O 虚拟化技术,有些地方也叫I/O 设备虚拟化技术,目前主流的模型实现方式有以下几种:

image.png

3-36  FPGA 虚拟化技术分类

image.png

3-37  FPGA 互联方式

全模拟纯软件实现,通常由虚拟化层(QEMU)完全模拟一个设备给虚拟机用, 其优点是不需要修改操作系统内核和驱动,因此它是可移植性与兼容性最好的I/O 设备虚拟模型。但是,这种实现模型性能不高,主要原因是:第一,软件模拟本身就无法具有很高的性能;第二,在这种实现方式中,I/O 请求的完成需要虚拟机与监视程序多次的交互,产生大量的上下文切换,开销巨大。

Virtio 驱动半虚拟化将设备虚拟的工作一拆为二,一部分在虚拟机内核中作为前112


端驱动,一部分放到虚拟化层上(通常是QEMU)作为后端,前后端共享Virtio 环协同完成任务。Virtio 前后端的技术只是减少了VM Exit VM EntryGuest Host 的上下文切换),并且使Guest Host 能通过并行处理I/O 来提高吞吐量并减少延迟。但是,I/O 的路径并不比全虚拟化技术少。

硬件辅助虚拟化借助硬件技术,如Intel VT-d 技术实现PCI 设备直接挂载给虚拟机,常见的有设备直通和SR-IOV

纵观各大云服务提供商,FPGA 云服务器采用的都是设备直通,主要因为以下三点:一是FPGA 的性能,客户考虑业务搬迁上云首先要做的就是对比,跟本地物理机比、跟竞品(如GPU/ASIC)比。虚拟化必然导致部分的硬件性能损耗,1% 的性能损失都会增大客户拒绝使用FPGA 云服务器的可能性;二是应用场景,FPGA 比较适用于计算密集型和通信密集型任务。在大数据爆发的时代,很多应用都需要调度多片FPGA 才能满足需求,将同一片FPGA 共享给多个客户的需求并不强烈;三是实现难度,分片FPGAvFPGA)的多租户场景,在安全和隔离的实现上,虽然可以复用vGPU 方案,但是硬件逻辑开发的难度非常大。综合考虑,各大云服务提供商在FPGA 设备虚拟化时选择的都是性能损耗最小的设备直通方案。

设备直通Device Passthrough技术是将宿主机上的PCIe 设备直接分配给客户机使用,虚拟机独占这个设备,在客户机进行对应的I/O 操作时,不需要通过VMM 或被VMM 截获,所以设备性能几乎无损耗。设备直通技术的实现依赖IOMMU 功能(隔离虚拟机对内存资源的访问),需要硬件支持,比如Intel 平台的VT-d 技术。

说到VT-d 技术,首先要解释下DMA(直接内存读取),它是一种硬件机制,允许外围设备和主内存之间直接传输数据,不需要CPU 参与,由此可以大大提高设备的吞吐量。I/O 虚拟化的关键在于解决I/O 设备与虚拟机的数据交换问题,而这部分主要指DMA 和中断请求(IRQ)。只要解决好这两个方面的隔离、保护及性能问题, 就是成功的I/O 虚拟化。VT-d 通过重新设计IOMMU 架构,在CPU、内存和I/O 设备之间增加了一个硬件设备,其主要功能是将I/O 设备的DMA 访问请求和中断请求重定向到VMM 设定好的VM 中,最终实现了DMA 虚拟化,这项技术也叫DMA 重映射。

阿里云FPGA 云主机的设备直通方式采用的是VFIO,这是一套用户驱动框架, 通俗来讲就是一个设备驱动。在虚拟化情景下,VFIO 主要用来在用户实现设备直通,充分利用了VT-d 技术提供的DMA 重映射和中断重映射特性, 在保证直通设备的DMA 安全性的同时其I/O 性能接近物理设备。


总体来说,FPGA 板卡(PCIe 设备)的透传方式跟GPU/NIC PCIe 设备并无差别,鉴于FPGA 本身的硬件特性和安全隔离要求,阿里云FPGA 云服务器虽然采用了设备直通方式,但是并没有把FPGA 设备功能完全暴露给虚拟机,而是将PCIe 从功能角度划分为两个PFPhysical Function):即管理PFManagement PF)和用户PFUser PF),如图3-38 所示。

image.png

image.png

3-38  FPGA 板卡PCIe 设备的透传方式

管理PF 提供FPGA 各种控制功能,如FPGA 镜像加载、状态监控等。例如, 在FPGA 云主机上,只有先发送加载请求,后台系统认证身份后,通过宿主机驱动才能发起加载操作。

用户PF 对应的是逻辑功能接口,此功能会通过设备直通方式透传给虚拟机, 用户可以使用官方提供的驱动访问设备,也可以自己开发。114


PCIe 功能双PF 的划分,在一定程度上保护了FPGA 板卡不会被用户恶意烧写,从而降低了宿主机的停机风险,也保证了FPGA as a Service 的可靠性。此方案的实现基于FPGA 特殊的硬件特性(部分可重配置),主流云服务提供商的做法基本类似。

部分可重配置Partial Reconfiguration):在前面介绍FPGA 虚拟化技术的时候提到过,其实现原理是将FPGA 内部划分出多个区域,在FPGA 运行时单独对这些区域进行编程和配置,以改变区域内电路的逻辑,但并不影响FPGA 其他电路的正常运行。它可以实现时间域和空间域两个维度的任务切换,很多大型应用的逻辑都是利用FPGA 这一特性实现的,如微软的Catapult 项目同时提出了Shell(不可配置区域)和Role(可重配的逻辑单元)的概念。也有将这一特性应用在多租户场景下的,提出了vFPGA 的概念,即将一个FPGA 共享给多个用户使用,如IBM CloudFPGA 项目。

各云服务提供商的FPGA 云服务器也抓住了这一特性,将FPGA 在逻辑上划分为Shell(静态区)和用户逻辑(动态区)。

静态区FPGA 的静态区主要包括PCIeDRAMDMA 及中断等接口逻辑,一般由云服务提供商提供,主要负责FPGA 管理功能。

用户逻辑FPGA 的动态可重配置区域属于用户数据,即用户的知识产权(IP)。

阿里云FPGA 云主机在F3 实例设计时也提出了Role 的概念,它是和Shell 类似的封装,跟用户逻辑一样处于动态区域,其目的是简化Shell 功能,以尽可能减少Shell 升级。另外,通过Role 实现了同一个Shell 既可以支持OpenCL 开发,也可以支持RTL 开发的功能,同时降低了用户对FPGA 的开发门槛。

3.4.5 EAIS 软件池化技术

除了支持预定义规格的异构计算加速实例,还可以通过弹性加速实例EAIS 以池化的方式将前端CPU 的核心数和后端的异构加速设备解耦,让前端ECS 动态挂载、后端异构计算加速实例卸载。前端和后端异构计算加速实例都以虚拟化的方式启动。通过虚拟化的方式可以对GPUFPGANPU 等不同的异构加速实例化调度和管理。

EAIS 架构如图3-39 所示,通过虚拟网卡技术将异构计算加速实例挂载到前端ECS 上,后端异构计算加速实例会运行一个监听前端请求的进程及一个推理服务进程,然后在前端ECS 上启动弹性推理客户端,在推理前端服务和推理后端服务之间建立一个高速安全通信通道,前端应用的AI 推理计算请求和模型通过通道发送到后端的推理服务进程上进行AI 推理计算,推理的结果再通过安全通信通道返回给前端应用。


用户 VPC 用户 EDS 启动推理服务应用请求启动监听进程虚拟网卡后台 ECS 公有云 Region 售卖区启动推理服务虚拟网卡GPU

image.png

3-39  EAIS 架构

3.4.6 AI 加速器及其性能优化技术

AI 加速器主要面向人工智能领域的性能加速,目前应用最多的AI 框架就是TensorFlowPyTorchMXNetCaffe 等,而这些AI 框架自身都有很多的发布版本被不同的开发者使用,并且各框架都有自己的一套分布式并行方式,我们为了屏蔽不同计算框架之间及不同计算框架版本间的分布式训练差异,通过统一的框架和统一的优化代码来优化这4 种计算框架的不同版本。我们研发了统一的AI 加速器,其架构如图3-40 所示。

image.png

3-40  AI 加速器架构116


我们把这些分布式训练框架的通信部分整合到了同一个框架之中,接下来在这框架之下的所有优化工作,都将直接加速支持的全部AI 计算框架。

分布式通信优化方法

1)计算和通信的重叠。传统的计算和通信是串行的,即先做完梯度计算、再做梯度通信,我们的第一个优化工作是将计算和通信重叠起来,尽量减少通信的开销。

2)去中心化梯度协商。传统分布式梯度协商方式是根节点和所有节点都协商, 因此根节点的负担会随着节点数增加而大幅升高。而我们采取的去中心化的梯度协商方式,将大规模下梯度协商的复杂度降低了一个数量级。

3)梯度压缩。将要传输的梯度从FP32 压缩到FP16,并建立了相应的数据缩放机制,从而防止精度损失。

4)分级通信优化。传统的环形通信方式是将所有节点上的GPU 形成一个大环, 致使其整体性能在以太网的通信上受到限制。我们做了分级通信的优化,首先在节点内部的GPU 上做一级规约通信,每个节点都规约到一块GPU 上,然后每个节点的这个GPU 再做二级规约通信。这样一方面减少了以太网上传输的数据量,另一方面通过流水线将节点内部的规约通信和节点之间的规约通信重叠起来,减少了整体通信时间。

5)梯度融合优化。传统的通信方法是计算出一个梯度通信一次,这样会产生很多小包的通信,对网络带宽非常不友好,优化是等一批梯度计算完成后再融合在一起做通信,这样的大数据包能够大大提升网络带宽的利用率。

性能加速效果

我们选择了将分布式性能优化得很好的Horovod 框架和各AI 计算框架本身进行性能对比,经过测试发现,AI 加速器支持的框架的分布式训练性能比Horovod 及各AI 计算框架能够提升65%~500% 不等的性能。

图像分类TensorFlow ResNet-50 分布式训练, 在4 32 P100 GPU 上比Horovod-TensorFlow 提升65% 的性能,如图3-41 所示。

image.png


3-41  TensorFlow ResNet-50 分布式训练结果对比

图像分类TensorFlow VGG-16 分布式训练,在2 16 P100 GPU 上比Horovod- TensorFlow 提升90% 的性能,如图3-42 所示。

图片数/ 8 16 GPU卡数/个原始优化32 64 128 7000 6000 5000 4000 3000 2000 10000

image.png

3-42  TensorFlow VGG-16 分布式训练结果对比

大规模人脸识别MXNet 分布式训练,在2 16 P100 GPU 上比MXNet 提升400% 的性能,如图3-43 所示。

图片数/ 118


samples/sec 单卡性能单机8卡MXNet Perseus- mxnet 双机16卡四机32卡900 800 700 600 500 400 300 200 1000 样本数/

image.png

3-43  大规模人脸识别MXNet 分布式训练结果对比

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
人工智能 Java 程序员
通义灵码AI编码助手和AI程序员背后的技术
通义灵码AI编码助手和AI程序员背后的技术,由通义实验室科学家黎槟华分享。内容涵盖三部分:1. 编码助手技术,包括构建优秀AI编码助手及代码生成补全;2. 相关的AI程序员技术,探讨AI程序员的优势、发展情况、评估方法及核心难点;3. 代码智能方向的展望,分析AI在软件开发中的角色转变,从辅助编程到成为开发主力,未来将由AI执行细节任务,开发者负责决策和审核,大幅提升开发效率。
42 12
|
5天前
|
人工智能 搜索推荐
AI视频技术的发展是否会影响原创内容的价值
AI视频技术的发展显著降低了视频制作的门槛与成本,自动完成剪辑、特效添加等繁琐工作,大大缩短创作时间。它提供个性化创意建议,帮助创作者突破传统思维,拓展创意边界。此外,AI技术使更多非专业人士也能参与视频创作,注入新活力与多样性,丰富了原创内容。总体而言,AI视频技术不仅提升了创作效率,还促进了视频内容的创新与多样化。
|
3天前
|
人工智能 算法 测试技术
AI 研发产品进化论:从 AI 编码助手到 AI 程序员
本次分享由阿里云资深技术专家陈鑫主讲,主题为“AI研发产品进化论:从AI编码助手到AI程序员”。内容涵盖通义灵码在落地过程中的挑战与突破,包括精准度提升、企业级检索增强、自定义扩展及智能体的应用。通过全工程理解、个性化适配和智能体的引入,通义灵码已实现代码补全、单元测试生成、缺陷修复等核心功能,并显著提升了开发者的工作效率。目前,通义灵码已在Vs Code和JetBrains插件市场上获得超过500万次下载,月均采纳率超过30%,并持续优化中。
31 9
|
2天前
|
机器学习/深度学习 人工智能 编译器
BladeDISC++:Dynamic Shape AI 编译器下的显存优化技术
本文介绍了阿里云 PAI 团队近期发布的 BladeDISC++项目,探讨在动态场景下如何优化深度学习训练任务的显存峰值,主要内容包括以下三个部分:Dynamic Shape 场景下显存优化的背景与挑战;BladeDISC++的创新解决方案;Llama2 模型的实验数据分析
|
2天前
|
存储 人工智能 边缘计算
AI时代下, 边缘云上的技术演进与场景创新
本文介绍了AI时代下边缘云的技术演进与场景创新。主要内容分为三部分:一是边缘云算力形态的多元化演进,强调阿里云边缘节点服务(ENS)在全球600多个节点的部署,提供低时延、本地化和小型化的价值;二是边缘AI推理的创新发展与实践,涵盖低时延、资源广分布、本地化及弹性需求等优势;三是云游戏在边缘承载的技术演进,探讨云游戏对边缘计算的依赖及其技术方案,如多开技术、云存储和网络架构优化,以提升用户体验并降低成本。文章展示了边缘云在未来智能化、实时化解决方案中的重要性。
|
3天前
|
人工智能 IDE 程序员
从 AI Coding 演进路径看通义灵码 AI 程序员的发布,让更多 idea 变成产品
通义灵码 2.0 不仅正式发布 AI 程序员,还升级了很多基础能力,使用场景多样。繁星计划的推出更为大学生提供了免费的智能编码助手,助力科技创新。让不具备编码能力的人也可以将 idea 变成产品,帮助到更多开发者和泛开发者。
|
5天前
|
人工智能 运维 Serverless
云端问道8期方案教学-基于Serverless计算快速构建AI应用开发
本文介绍了基于Serverless计算快速构建AI应用开发的技术和实践。内容涵盖四个方面:1) Serverless技术价值,包括其发展趋势和优势;2) Serverless函数计算与AI的结合,探讨AIGC应用场景及企业面临的挑战;3) Serverless函数计算AIGC应用方案,提供一键部署、模型托管等功能;4) 业务初期如何低门槛使用,介绍新用户免费额度和优惠活动。通过这些内容,帮助企业和开发者更高效地利用Serverless架构进行AI应用开发。
|
2天前
|
人工智能 编解码 安全
全球AI新浪潮:智能媒体服务的技术创新与AIGC加速出海
本文介绍了智能媒体服务的国际化产品技术创新及AIGC驱动的内容出海技术实践。首先,探讨了媒体服务在视频应用中的升级引擎作用,分析了国际市场的差异与挑战,并提出模块化产品方案以满足不同需求。其次,重点介绍了AIGC技术如何推动媒体服务2.0智能化进化,涵盖多模态内容理解、智能生产制作、音视频处理等方面。最后,发布了阿里云智能媒体服务的国际产品矩阵,包括媒体打包、转码、实时处理和传输服务,支持多种广告规格和效果追踪分析,助力全球企业进行视频化创新。
|
5天前
|
人工智能 算法 搜索推荐
云端问道11期方案教学-创建专属AI助手-阿里云百炼产品能力分享
阿里云百炼产品能力分享旨在帮助用户深入了解百炼的核心功能,并快速将大模型与系统结合。主要内容包括:1. 百炼的产品定位和能力简介,涵盖模型推理、应用搭建等;2. 知识检索RAG智能体的应用能力和优势,介绍其高效构建知识库的步骤及常见问题;3. 最佳落地案例实践,如宠物行业AI助手和产业分析类互联网企业的Copilot机器人。通过这些内容,用户可以全面掌握百炼在实际业务中的应用方法和效果。
|
机器学习/深度学习 人工智能 算法
阿里云异构计算产品家族亮相 覆盖全场景AI和高性能计算需求
本文讲的是阿里云异构计算产品家族亮相 覆盖全场景AI和高性能计算需求【IT168 云计算】计算正推动着人工智能产业更大规模的爆发。
2117 2

热门文章

最新文章