作者 | 阿里云资深技术专家隐达
导读:数据中心和云计算的超高增速,AI、视频、基因测序等应用对于算力的无尽渴求和摩尔定律发展事实上已经停滞的现实,均给异构加速带来了巨大的应用潜力和商机。但 Faas 解决方案仍有较高的门槛,今天,我们一起了解 Faas 的难度在哪里?以及在阿里,我们如何做到真正的 Faas?
一、 前言
近几年,DC 和云计算领域风起云涌,发展地如火如荼。中外厂家纷纷发布 “DC First”、“All in Cloud”、“Cloud or Dead” 等战略,不管此前公司的主业为何,杀入 DC 和云计算领域的厂家如过江之鲫。但是,和任何 ICT 领域一样,在经过充分的搏杀和竞争之后,整个市场将基本稳定下来,由 TOP2-3的厂家把持,其他 players 加到一起分点残羹冷炙。Gartner 于4月24日发布报告,阿里云以19.6%的市场份额,雄踞整个亚太第一,AWS 和微软分居第二和第三。全球范围内,仍然维持了AWS、微软和阿里云分别为冠、亚、季军的格局。
阿里云 FPGA as a Service(以下简称FaaS)舜天平台正是 FPGA 异构加速领域的领导者和开拓者,也是 FPGA 异构加速领域良好生态的倡导者和建设者。依托阿里云百万企业付费客户以及阿里云强大的飞天操作系统,FaaS 舜天平台对内而言,已经成为阿里集团 FPGA 加速业务的基础设施;对外而言,则将大幅降低 FPGA 的开发和使用门槛,致力于为客户提供最高性价比的算力和打造健康的 FPGA 加速生态。
二、 传统的 FPGA 应用与 FaaS 的区别
FPGA 由于其强大的灵活性,自诞生以来,在数以千计的垂直市场中都获得了大量的应用。但是,这种应用都谈不上“云”,也谈不上“service”。我们知道,传统 IT 基础设施是没有弹性的,因此很容易出现要么业务高峰时无法支撑乃至整个 IT 系统崩溃;要么陷入业务低谷时,大量 IT 资源闲置,造成成本高企。因此,“云”和“非云”的一个最大区别就在于是否支持资源的“弹性”伸缩:需要时按需获取,不需要时随时释放。而要做到“弹性”,那么一定要通过虚拟化来支持。如果做不到“弹性”和“虚拟化”,就称不上 FaaS,究其本质和传统上对 FPGA 的使用没有任何区别。
如果单纯从 FPGA 的设计和使用角度看,即使有门槛的存在,设计一颗 glue logic的 FPGA 或者跑一点简单算法,实现一点简单控制,难度是相当有限的。但是,不能说具备了这些能力之后,就可以对外宣称可以提供 FaaS 的能力了。
首先,使用 FPGA 实现复杂的算法的门槛是非常高的(比如用 FPGA 实现 H.265 编码);其次,高效使用 FPGA 实现复杂的算法的门槛是非常非常高的(还拿 H.265编码举例,设计得不好的话,很大容量的一颗 FPGA 也许只能支持一路 1080p/30 帧的 H.265 视频,好的设计也许就能支持4路);最后,把 FPGA 的加速能力通过“云”来输出给客户的门槛是非常非常非常高的。所以,FaaS 的核心之一是让 FPGA 的算力“x86化”,即云上购买和使用 FPGA 的算力和云上购买和使用 CPU 的算力一样简单;核心之二,是让 FPGA 的算力“服务化”,即不需要客户做二次开发和适配,通过简单的类 URL 调用即可使用。
三、 FaaS的难度在哪里
FaaS 的价值可以从三方面来看:
- 一是,把 FPGA 的算力从传统的“线下”输出改为“线上”输出;
- 二是,把 FPGA 的算力形成资源池,和 CPU 一样,做到业务高峰时“召之即来”,轻松应对大业务量挑战、业务低谷时“挥之即去”,及时释放资源以节约成本;
- 三是,把 FPGA 的算法IP做成“积木”,可以让客户根据实际的业务需求,在很短的时间内,选取合适的 IP “积木“,搭成针对性的解决方案。
这三方面的价值同时也是 FaaS 的难度所在。
1、 云化
传统的使用 FPGA 的方式(也即所谓的“线下”模式)一般是:FPGA 和其他器件(包括主控的 CPU)一样,都焊在“母板”上,主控 CPU 通过与 FPGA 直连或者 CPLD 桥接的方式,对该 FPGA 进行配置和控制,FPGA 的存储空间直接映射到 CPU 的主内存空间。而云上模式下,FPGA 所在的板卡(通常叫做 FPGA 加速卡)是所在宿主机“母板”上的一个 PCIe 设备,云服务的客户使用虚拟机和 PCIe 报文对该加速卡(也就是 FPGA)进行配置和控制。由于此时 FPGA 跟“母板” CPU 之间不存在任何“直连”关系,只能通过 PCIe 报文对 FPGA 进行操作,传统上对 FPGA 的复位、加载、状态和性能监控等常规功能,在虚拟机(云上)环境下不再那么“常规”。简单的用一句话总结就是:线下根本不是问题的问题,到了线上(云上)可能全是问题。不解决好这些问题,就没办法让 FPGA 简单易用,也就谈不上算力“普惠化”,更谈不上“云服务”了。
FPGA 云厂商要做的是介于 FPGA 的驱动层以及客户的软件 SDK 层之间的适配层,这个适配层尽可能屏蔽底层的软硬件细节,通过 API 给客户的软件 SDK 提供必要的控制接口,使得客户能够以“类 URL 调用”这样的简单方式来调用 FPGA 的算力。简而言之,如果不能做到简单易用,那么尽管 FPGA 相对 CPU、GPU 可以提供极高的性价比,也会在 CPU 和 GPU 的强大生态面前败下阵来。客户的诉求很简单:希望动动鼠标就能得到结果(客户根本不 care 底层的算力是 CPU、GPU 还是 FPGA 输出的),而不是要看几百页手册,要三五个乃至更多开发人员适配上三个月才能使用。
2、 算力池化
传统上,由于 FPGA 是焊接在所在母板的,因此,母板所在的宿主机的 CPU 对该片(或者几片)FPGA 是拥有100%的“所有权”和“使用权”的。即便很多时候,FPGA 处于空闲状态,它也不可能被别的宿主机(尽管可能宿主机之间存在网络连接,不管是 WAN 还是 LAN,甚至是网线直连)所使用。但是,在云上使用环境中,每个宿主机所“携带”的 FPGA 都是某个计算集群的一份子,每个宿主机(和运行在其上的虚拟机)既可以使用自己本板/本机上的 FPGA 、也可以使用其他宿主机的 FPGA 。传统使用方式下,没办法满足类似“提供 1.25 片 FPGA 或者 3.5 片 FPGA 给某个用户使用”这样的需求,但在云上环境中,满足这样的需求是云服务的基本功能。
3、 算法 IP 积木化
算法(通常我们称呼这些算法叫 IP)是 FPGA 的灵魂,没有了算法,FPGA 可以说什么都不是;有了算法,FPGA 几乎可以做任何事情,FPGA 的高灵活性是由算法来使能的。业界有很多第三方的 ISV 和独立开发者,充分利用 FPGA 的高并行和时间流水特性,开发了很多高效的 IP,这些 IP 可以高效地完成某一个或几个特定的功能。更多的时候,客户的需求必须要多个 IP 的配合才能满足。由于并没有任何标准组织来制定 IP 的对外接口,各家 ISV /独立开发者所开发的 IP 的接口多种多样。要将他们拼到一起形成解决方案,往往需要花费大量的时间和精力开发二者中间的适配层,这样就失去了通过组合 IP 从而快速形成解决方案的优势。只有所有的 IP 都遵循统一的接口标准,才能够做到 IP 像乐高积木一样任意组合、快速形成解决方案。
这当然是一种理想状态。事实上,FPGA 器件出现已经有 30 多年的历史,大大小小的设计各种 IP 的 ISV 也有很多,但是极少有 ISV 能够长大、能够规模化。在 FPGA 的传统擅长领域没有出现,在 FaaS 渐成风潮的今天,暂时也没有出现。开发 IP 最大的问题在于平衡“通用性”和“专用性”,包括 IP 算法本身和 IO 接口。一般来说:通用性越好,意味着性能往往就要差一些;性能调测的非常强劲的 IP,通用性往往不够好,使用时要做各种各样的适配和牺牲;支持的 IO 接口越多,意味着 IP 本身的成本也就越高,但是只支持某种 IO 接口的话,成本是降下来了,但是严重限制了 IP 的应用范围。
到了 FaaS 云时代,由于在特定垂直领域,FPGA 相对 CPU 或者 GPU 的性价比往往非常出众,所以 IP 的性能往往不是考虑的第一要素,而且,云上只能输出算力,无法输出 IO,因此也不存在支持的 IO 的种类问题。FPGA 算力云化的最大障碍在于 IP 距离“服务”还有相当的距离,要充分发挥 IP 的性能,客户往往要做二次开发以及大量的软件适配,这恰恰和云化降低 FPGA 的使用门槛、使 FPGA 的算力普惠化的大目标相抵触。
四、 阿里云舜天平台:做真正的FaaS
阿里云 FaaS 舜天平台自诞生之初,就把 FPGA 算力普惠化作为自己的使命,通过云化输出 FPGA 算力,为客户提供更高性价比的计算解决方案,是舜天平台的价值所在。舜天平台不但很好地解决了上述的三个难点,同时还致力于三方面的工作,使得FaaS真正的名副其实。
一是,针对 FPGA 具有明显加速优势的特定垂直市场,做到真正以“服务”来输出 FPGA 的高性价比算力。CPU 和 GPU 的生态已经非常的完善,在全球有几十甚至上百万的开发者。这就使得客户只需购买 ECS(Elastic Compute Service弹性计算服务)/EGS(Elastic Graphic Service弹性图形服务)这样的 IaaS 基础设施,可以很容易、快捷地在其上建立 PaaS/SaaS 服务。
但是对于 FPGA 来说,由于生态的不完善和分散,绝大部分云上 FPGA 用户不具备自行购买 EFS(Elastic FPGA Service)之后在其上搭建 PaaS/SaaS 的能力。这就意味着,如果云服务厂商仅仅提供 FPGA 的 IaaS,客户是根本不会买单的;即使是提供带 IP 的IaaS+,客户仍然要做二次开发与适配,这就大大降低了 FaaS 的吸引力。因此,要使得 FPGA as a Service 成为一种可行的商业模式,就必须对外提供基于 FPGA IaaS/IaaS+的 SaaS 服务,只有这样,才能够与 CPU/GPU 进行竞争,从而发挥 FPGA的高性价比、低延时、高灵活可编程性等优势。
二是,建立完善的FPGA IP 云市场,在 IP Vendor 和 FPGA 异构计算云服务客户之间牵线搭桥:IP Vendor 通过阿里云 FaaS IP 市场获得收入,从而发展壮大,设计适用于更多垂直市场的 IP;而客户则通过在 IP 云市场灵活选择 IP,快速形成解决方案,从而获得更高性价比的算力。如上所说,无生态不 FaaS,生态对于 FaaS 的成功可谓至关重要,FPGA 器件厂商、FPGA 云服务提供商和广大的 FPGA IP 独立开发者和 ISV 是这个生态的三根支柱。缺少了任何一方,生态的建设都是举步维艰的。
相对而言,FPGA 器件厂商和云服务提供商应该投入更多的资金和资源来扶持独立开发者和 ISV。同时,云服务提供商要与 ISV 密切合作,在目前能够看到的 FPGA 具备明显优势的垂直领域,迅速落地应用并产生价值,形成示范和标杆效应,以吸引更多的独立开发者和 ISV 加入到建设 FaaS 生态的大军中来。
第三,阿里云 FaaS 舜天平台还致力于建立云上的 FPGA 开发环境与平台,降低FPGA 设计、开发、验证的门槛,客户、ISV 和独立开发者均可聚焦于设计本身,而无需考虑 EDA 工具、开发环境、验证环境等对最终业务价值增值不多但又必须花费大量时间和精力的事情。
传统上,FPGA 是一项“重资产”应用:要购买 FPGA 器件、要开发板卡、要购买 EDA 工具和 FPGA 调测仪器(如逻辑分析仪),所有这些加起来,形成了 FPGA 应用的高门槛。单说 EDA 工具这一项,对于中小 ISV 和独立开发者来说,EDA 工具(含 FPGA 器件厂家提供的配套开发软件,如 Intel 的 Quartus 和 XILINX 的Vivado)的 license 授权费用不菲,他们很难负担得起,而要使用非正版软件,又不得不面临很大的风险:包括软件侵权风险和设计中埋下隐患的风险。FaaS 舜天平台很好的解决了这些问题,大大降低了 FPGA 开发、使用的成本和门槛,为建设健康的 FaaS 生态打下了坚实的基础。
针对上述价值,FaaS做了大量针对性的创新设计。
1、 支持业界主流 FPGA 器件厂商
目前,阿里云 FaaS 舜天平台同时支持 Intel 和 XILINX 两家主流 FPGA 厂商的器件,阿里云也是全球 FaaS 产品线最齐全的公共云服务商。对于只想利用 FPGA 算力加速的客户来说,无需知道也不会知道底层提供加速的 FPGA 属于哪家厂商。一方面,两家厂商的器件和开发环境各有千秋;另一方面,相当一部分使用 FaaS 进行设计、验证的第三方 ISV 和独立开发者来说,其设计面向的是线下应用,因此必须针对某个厂家的某款器件,这就使得同时支持 Intel 和 XILINX 两家厂商的器件变为必需。阿里云目前是 FaaS 产品线最为齐全的云服务提供商。
2、 硬件设计创新
FaaS 舜天平台的 F3 实例,其板卡采用了单卡双芯片(XILINX 公司的 VU9P 芯片)的高密设计,而绝大多数号称提供 FaaS 的云服务提供商均采用了更为稳妥的单卡单芯片方案。单片 VU9P 的典型功耗为75W,两片就是150W,供电和散热成为设计时必须重点考虑的因素,这些问题解决不好的话,将极大的影响 F3 的稳定性。同时由于 PCB 达到了26层,信号完整性(比如 PCIe、MAC 等高速接口)也是巨大的挑战之一。克服这些挑战之后,FaaS 舜天平台的 F3 实现了算力密度业界第一,从而实现了最多可以节省50%的物理机采购成本,这进一步提升了 FPGA 的性价比竞争力。
3、 软件设计创新
阿里云FaaS也有大量的软件创新:
完整的 FPGA 监控系统,用户可以实时获取 FPGA 的各种运行状态,包括功耗、温度、IP使用率等;
用户可选 1/2/4片 FPGA 互联拓扑,用户可根据自己 workload 大小灵活选取和配置合适的实例,实现最高性价比;同卡 FPGA 之间有高达 600Gbps 的高速互联通道,应用若需两片 FPGA 之间实现实时、大批量数据搬运,不存在带宽瓶颈;
自适应网络接口:两路100G光口,使得不同 NC 之间的 FPGA 相互通信不存在任何带宽瓶颈;
热升级:在不中断客户业务的前提下,对部分用户逻辑进行在线重配置,以实现新的功能和 Feature;
支持软硬件联合仿真。这些创新设计为用户提供了灵活、丰富的实例规格选择;大大简化了 FPGA 的高性价比算力输出的复杂度,同时极大的提升了 FaaS服务的易用性。
FaaS 舜天平台提供两大套件: HDK 和 SDK,提供更加高效、统一的开发及部署平台。
HDK:Shell + Role的组合方式,保证了Shell 的最轻量化和稳定性,又兼顾了便捷性和灵活性;
SDK:一部分是 HDK 对应的主机端驱动(Drivers)与软件库(Libraries),另一部分是 FPGA 管理工具 faascmd 套件。驱动与软件库和 HDK 的 Shell 以及 Role 相对应,和 HDK 一起,为用户提供统一及灵活的软件支持。faascmd 工具套件则为用户提供云上 FPGA 管理服务,包括 BIT/DCP 文件安全校验、FPGA 镜像生成、下载及管理、FPGA 加速卡状态查询反馈等功能。
4、 安全性创新
采用定制虚拟化技术达到 IP 加速与部署环境的强隔离,IP 的用户与 IP 的网表文件完全隔离,网表文件的传输、部署、加速流程全程对用户都不可见;同时加速计算能力又可以透明的向使用该IP的客户开放。通过这个创新,完全杜绝了 FPGA IP 在云上输出的时候被盗用、盗版的可能,提供了非常高的安全保护机制。同时 IP 的拥有方可以通过阿里云的 KMS 加密服务对IP进行加密保护,每次对 IP 加载前都需要向KMS 服务获取秘钥进行解密,这样一来针对 IP 的使用下载有据可查;并且使得 IP 发布方的 IP 在数据中心内部都是安全的,因为没有了 IP 提供方的 KMS 秘钥,即便是阿里云也无法对加密的网表进行解密操作。