FPGA在微软云azure中的应用

随着5g通信技术的发展,云计算和边缘计算业务也将快速增长。由于云计算多样性和边缘环境复杂性的特点,将决定了在cpu,gpu,fpga,asic中,不会只有一种芯片存在。所以fpga一定可以寻找到它的应用方向。相较于其它几种芯片,fpga具有以下几种优势:
1 灵活可编程。fpga是以lut作为基本结构的器件,可以根据需求的变化对其擦除重写,运行新的程序。
2 高带宽。fpga芯片有很多高速管脚,可以连接多颗dram,产生较高的带宽。
3 复杂的数据处理能力。fpga能够有针对性的处理逻辑关系复杂的程序,这相比于cpu,gpu等依赖指令处理数据的芯片有优势,因为它能够做到更低的延迟。
fpga也存在以下劣势限制了它的发展:
1 编程复杂,开发周期较长。rtl的开发包括了架构设计,rtl代码,仿真验证,上板调试。一个项目的周期往往是软件开发的几倍,团队规模也较大。这些既提高了开发成本,又没法适应不断迭代的产品需求。
2 粗粒度硬件结构导致资源利用率低。fpga达不到100%的资源利用率,这是对资源的一种浪费,体现在经济上是提高了成本。
以上两方面都可以归结到成本这一点上,但是如果能够解决1问题,那么2问题也就迎刃而解了。因为如果fpga的市场应用多了,那么其制造成本也会下降。1问题的解决一直在路上,但是一直没有解决。hls等类似软件编程语言的出现可以提高fpga的开发效率,但是相比于纯软件开发语言还是存在一定复杂性。而相对于rtl语言来说,hls语言的硬件描述性不够鲜明。所以硬件开发人员更多的会选择硬件描述清晰的verilog,system verilog等语言。
这些缺点并不意味着我们对fpga在未来ai应用中抱着悲观的想法,一个是未来场景的复杂性和多样性,一个是fpga也在寻求改进和发展。第一个决定了fpga一定能够在ai中活下去,第二个决定了fpga在ai中活的怎么样。
接下来我们来了解一下fpga在微软云azure中的应用。
azure stack edge
微软在边缘做了产品布局,依据边缘的规模,提供了两类产品。一类是针对计算任务繁重的企业用户,其提供了基于gpu和fpga的pro设备,能够实现边缘端的数据预处理,包括聚合数据,修改数据等,以及运行ml模型。另外一类是针对随时移动的用户,提供了小而便携的设备。这些设备使用了intel针对视觉处理专门研发的vpu芯片。虽然在2024年基于fpga的pro设备将停用,而迁移到基于gpu的设备上。但是vpu芯片的出现,反映了在边缘计算应用中,fpga所发生的可能转变。在多变的边缘目标上,小芯片能够更有针对性的保留有效的计算资源,这样精简了结构,降低了功耗。intel vpu是集成了leon处理器,12个shave计算核以及一个dram的soc结构。shave是一个向量处理器,能够进行大量的向量运算。所以vpu能够适合运行ml模型,以及进行一些图像处理方面的工作。目前vpu能够支持21种神经网络算子,包括conv,relu等。这些神经网络可以通过其编译器工具ncapi转化为可以在vpu中执行的指令。目前能够支持inception,mobilenet,googlenet,ssd,alexnet等很多卷积和lstm网络。
超算中心的fpga
微软在数据中心系统性的构建了一个fpga集群,这个fpga集群能够实现内部和外部server的互联。在顶层软件的分配调度下,可以执行多种不同的任务,包括web search ranking, deep neural networks, expensive compression等。
fpga集群的基本结构如上图所示:包括了两块cpu和一块altera的fpga芯片。fpga通过pcie和一个nic来和两块cpu进行通信。nic保证了fpga可以实现原位处理网络数据包。fpga之间还通过tor实现互联,tor保证了一个任务能够被分割为多个子任务,然后分配给多个fpga处理。在逻辑层面,fpga定义了lightweight transport layer(ltl)和elastic router(er)。ltl实现了不同的fpga芯片之间的互联,这样保证了远程fpga之间的通信,使得整个fpga集群处于一个整体中。er是用于同一个fpga芯片中不同任务的互联。ltl和er的混合使用能够灵活的为fpga分配不同任务,满足数据中心任务多样性需求。tor形成了三层结构,l0层连接了24个fpga设备,l1连接了960个设备,l2级可能连接了超过几百万的设备。l0级的round-trip延时大概在2.8us,l1级平均在7.7us,而l2级在22us。
fpga架构
微软的神经网络加速器主要是针对单batch低延迟来设计的,其所期望的是能够最大限度的将weight缓存在片上,通过将一个大的网络进行分割,分配到多个fpga芯片上实现。其分割的子网络的权重大小可以适配一颗fpga芯片上weight的缓存空间。架构将计算重点放在矩阵-向量乘法上,这个也是合理的,因为lstm,cnn网络大部分计算量都由矩阵乘法承担。其它函数运算,包括向量加法,乘法,sigmoid,tanh等函数,则统一到同一个多功能函数模块中。这样做的好处是简化了fpga架构,同时也简化了数据流。因此其整个架构中没有多端口共享的memory,不存在对多数据访问冲突的处理。同时也简化了指令,消除了对指令依赖关系的判断和检测。fpga架构中有对指令的进一步分解和处理,所以软件端的指令非常简单,就是通过c语言的宏定义实现的。
其矩阵向量乘法结构是由多个dot-product结构组成的,多个dot-product和累加器形成了一个tile,然后多个tile就构成了一个大的矩阵向量乘法。
软件结构
神经网络加速器的工具链包括:cntk(微软自定义的一个指令级描述),tensorflow或者caffe的图文件作为输入,然后通过前端转化为ir表示,然后依据网络大小以及fpga中资源情况对图进行分割和优化,然后产生硬件可执行指令。如果网络较大,那么网络可以被分割成多个子图,部署到不同fpga上。如果一个矩阵乘法过大,那么可以被分割成多块来实现。对于不可实现的神经网络算子,工具链可以将多个不可实现算子组合成一个子图,在cpu上完成。
引用
1 accelerating artificial intelligence bing whitepaper
2 cloud scale acceleration architecture
3 a configurable cloud-scale dnn processor for real-time ai


VIVE内容团队联合美国自然博物馆推出VR互动教育内容
高速数据记录器如何设计可以承受赛车热量
AURA推监测心理的智能手表 利用生物识别传感器来检测用户心理健康
通过sysrq打印linux内核信息
什么是X电容和Y电容?
FPGA在微软云azure中的应用
MRAM实现了SPIEEPROM和SPIFlash组件通用的命令子集
音诺恒基于瑞芯微RV1109人脸识别主板方案面世
台联电25亿元山东建电厂 投资薄膜太阳能发电
Oracle Linux 8.7正式发布了GA版本
变频器滤波器与电抗器有什么区别?
低音炮音箱的制作原理
广州国美补贴全新3G手机 3G手机价格降一半
三星发布110英寸Micro LED电视:售价超百万元
国产超低电容0.05pF ESD在天线的应用
LTCC生瓷层压中腔体的形变评价及控制方法
科捷机器人打造钢帘线生产车间自动物流系统,开启自动化时代
随着机器学习技术不断深入,人工智能在医疗领域的前景更加开阔
电力监控系统在酒店项目中的设计与应用
AMEYA360:Panasonic松下HF系列压敏电阻器