随着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上完成。
编辑:jq
-
FPGA
+关注
关注
1629文章
21736浏览量
603243 -
云计算
+关注
关注
39文章
7792浏览量
137388 -
高带宽
+关注
关注
0文章
13浏览量
7704 -
边缘计算
+关注
关注
22文章
3089浏览量
48947
原文标题:FPGA在microsoft azure的应用
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
印孚瑟斯与微软扩大战略合作,加速客户云与AI转型
基于Arm架构的Azure虚拟机助力云原生应用开发
如影数字人生成平台SenseAvatar上线微软全球云市场
Microsoft AI 推进行业企业智慧化创新
Build 2024发布多项Azure AI Speech全新多模态功能
NVIDIA与微软扩展合作,帮助开发者更快构建和部署AI应用
Microsoft Start Networks中国内容生态伙伴峰会成功举办
微软Build大会将展示多项云端软硬件新威廉希尔官方网站
西门子携微软,通过Azure为产品生命周期管理提供 AI 增强解决方案
微软推出Microsoft Copilot及Microsoft Azure OpenAI,引领AI风潮
微软和英伟达扩展长期合作关系
Microsoft Copilot for Security(国际版)将于4月1日在全球范围内正式发布
RAMQTT/TLS Azure云连接解决方案-细胞应用项目

简述FPGA在microsoft azure的应用
评论