带你读《弹性计算—无处不在的算力》第三章:计算产品和技术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 驱动半虚拟化将设备虚拟的工作一拆为二,一部分在虚拟机内核中作为前

端驱动,一部分放到虚拟化层上(通常是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

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

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

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

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
技术人的 2023 总结之无处不在的 AI
技术人的 2023 总结之无处不在的 AI
|
机器学习/深度学习 人工智能 弹性计算
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | AI 基石,无处不在的朴素贝叶斯算法
```markdown 探索贝叶斯定理:从默默无闻到AI基石。18世纪数学家贝叶斯的理论,初期未受重视,后成为20世纪机器学习、医学诊断和金融分析等领域关键。贝叶斯定理是智能背后的逻辑,朴素贝叶斯分类器在文本分类等应用中表现出色。贝叶斯网络则用于表示变量间条件依赖,常见于医学诊断和故障检测。贝叶斯推理通过更新信念以适应新证据,广泛应用于统计和AI。尽管有计算复杂性等局限,贝叶斯算法在小数据集和高不确定性场景中仍极具价值。了解并掌握这一算法,助你笑傲智能江湖! ```
60 2
算法金 | AI 基石,无处不在的朴素贝叶斯算法
|
2月前
|
存储 人工智能 网络安全
科技云报到:云服务的中场战事,从AI应用开始
从去年的大模型之战,到今年的AI应用之争,云服务正在迈入全新的发展阶段。AI这个杠杆将各家厂商的竞争策略更向前推进了一步。
|
7月前
|
存储 机器学习/深度学习 人工智能
视觉AI的公共云服务有哪些优势
视觉AI的公共云服务有哪些优势
|
7月前
|
存储 机器学习/深度学习 人工智能
『亚马逊云科技产品测评』在当前飞速发展的AI人工智能时代云服务技术哪家强?
『亚马逊云科技产品测评』在当前飞速发展的AI人工智能时代云服务技术哪家强?
105 0
|
存储 人工智能 自然语言处理
课时1:AIGC无处不在,把AI应用构建于Serverless之上
课时1:AIGC无处不在,把AI应用构建于Serverless之上
|
存储 人工智能 缓存
课时1:AIGC无处不在,把AI应用构建于Serverless之上(二)
AIGC无处不在,把AI应用构建于Serverless之上
|
人工智能 安全
IDC报告:阿里语音AI国内云服务领域连续三年市占保持第一
近日,国际权威研究机构 IDC 发布《2021H2 中国 AI 云服务市场研究报告》,阿里云智能语音市场份额 42.5%,排名第一。这是继2019年H2后,阿里语音AI市场份额连续三年保持首位。
268 0
|
机器学习/深度学习 人工智能 自然语言处理