0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AI计算的几条路线,微软为什么选择FPGA?

SSDFans 来源:未知 作者:李倩 2018-06-07 16:40 次阅读

AI计算的几条路线

1993年,当黄仁勋等三个电子工程师在加州圣何塞的一家餐馆碰头准备成立一家图形处理芯片公司时,他们还不知道20年后,他们做的这个芯片还能用来做人工智能自动驾驶

1985年,Xilinx创始人之一Ross Freeman发明FPGA芯片的时候,他也不会想到近30年后,FPGA芯片会被广泛应用于人工智能领域的计算。黄仁勋还能亲自带领NVIDIA参加人工智能芯片大战,而Ross Freeman在1989年年仅41岁就因肺炎不幸早逝。

目前人工智能的产业重心,已经从早期的深度学习算法和框架,转到了AI硬件平台。Google开发出专用的AI芯片——TPU,如下图。

可是,另一个巨头微软却全面拥抱FPGA作为AI计算平台。同时,亚马逊和百度也是FPGA路线。百度在一个电路板上集成了CPUGPU和FPGA,称为“XPU”。亚马逊的云服务提供F1加速平台,提供FPGA计算加速。

微软为什么选择FPGA

下图是微软的FPGA扩展卡,叫做DPU,“Soft DNN Processing Unit”。

微软FPGA战略是成体系的,包括三个主要部分:

1. FPGA扩展卡能够互联、扩展,同时融入到数据中心服务中去,提供高带宽、低延迟的加速服务;

2. FPGA是可编程的,方便用户开发自己的程序;

3. 微软为自己的神经网络模型CNTK提供了编译器和开发环境。

为什么微软选择了FPGA?因为微软和Google是两种不同的基因,Google喜欢尝试新技术,所以自然要用TPU去追求最高的性能。但是,微软是一家商业文化很重的公司,选择一个方案看的是性价比和商业价值。做专用芯片尽管很炫,但是是否真的值得?

做芯片主要的缺点是投资大、时间周期长,芯片做好后里面的逻辑就不能修改。人工智能的算法一直在快速迭代,而做芯片至少要一两年的时间,意味着只能支持旧的架构和算法。如果芯片想要支持新的算法,就要做成通用型,提供指令集给用户编程,通用性又会降低性能,增加功耗,因为有些功能是浪费的。所以不少芯片公司尽管做了芯片,但是很多产品还是FPGA做的,比如比特大陆的挖矿机,芯片做出来就已经无法支持新的挖矿算法了。

阿呆8年前在微软亚洲研究院参与用FPGA+Open Channel SSD加速Bing搜索引擎的研究,那个时候FPGA做机器学习性能已经可以甩CPU几条大街了,同时还能节省购买服务器的成本,降低散热、土地等成本。所以微软选择FPGA是基于商业考虑和长期积累和探索的经验。

CPU、GPU、ASIC和FPGA横向对比

我们现在常见的硬件计算平台包括CPU、GPU、ASIC和FPGA。CPU是最通用的,有成熟的指令集,例如X86、ARM、MIPS、Power等,用户只要基于指令集开发软件就能使用CPU完成各种任务。但是,CPU的通用性决定了计算性能是最差的,在现代计算机中,很多计算都需要高度的并行和流水线架构,但是,CPU尽管流水线很长,计算核心数最多只有几十个,并行度不够。比如看一个高清视频,那么多像素要并行渲染,CPU就拖后腿了。

GPU克服了CPU并行度不够的缺点,把几百上千个并行计算核心堆到一个芯片里,用户用GPU的编程语言,比如CUDA、OpenCL等就可以开发程序用GPU来加速应用。但是,GPU也有严重的缺点,就是最小单元是计算核心,还是太大了。在计算机体系结构中,有一个很重要的概念就是粒度,粒度越细,就意味着用户可以发挥的空间越多。就跟盖楼一样,如果用小小的砖头,可以做出很多漂亮的造型,但是建设时间久,如果用混凝土预制件,很快就盖好大楼了,可是楼的样式就受到限制。如下图,就是预制件盖楼,搭积木一样,很快,可是都长得差不多,想盖的别的楼就不行。

ASIC克服了GPU粒度太粗的缺点,能让用户从晶体管级开始自定义逻辑,最后交给芯片代工厂生产出专用芯片。不管是性能还是功耗,都比GPU好很多,毕竟从最底层开始设计,没有浪费的电路,而且追求最高的性能。但是ASIC也有很大的缺点:投资大、开发周期长、芯片逻辑不能修改。现在做一款大规模芯片,至少需要几千万到几亿的投资,时间周期一两年左右,尤其是AI芯片,没有通用IP,很多要自己开发,时间周期更久。芯片做好后,如果有大问题或者功能升级(有些小问题可以通过预留的逻辑修改金属层连线解决),还不能直接修改,而要重新修改版图,交付工厂流片。

所以,最后就回到了FPGA:兼顾ASIC计算粒度细和GPU可编程的优点。FPGA的计算粒度很细,可以到与非门级别,但是逻辑还能修改,是可编程的。

FPGA入门

我们上大学学计算机,首先学习的基础知识是布尔代数,从与非门等逻辑门出发,可以搭出加法器、乘法器等数字逻辑,最后一级级组合,实现很复杂的计算功能(阿呆这里八卦一下,深度学习的泰斗Hinton教授是布尔的孙子的儿子)。在ASIC里面,与非门通过晶体管实现,但是晶体管无法做到可编程,必须要做成版图,送到芯片代工厂生产才能用。那怎样做到数字逻辑也能可编程呢?我们都知道,数字逻辑可以用真值表来表示,如下图就是与非门的真值表。

FPGA的发明人想了一个办法,就是用一个查找表来存储真值表的输出结果。如下图就是一个3bit的异或门查找表,3bit一共是8个状态,查找表保存了每个状态的结果,输入的3个bit作为索引,直接从表里读到计算结果,通过一个选择开关输出。这样避免了搭建计算逻辑,同时简化了芯片结构,只需要在芯片里面放许许多多的查找表,大家一起级联和组合就能实现复杂的逻辑和计算。目前主流的FPGA采用SRAM工艺,就是把查找表的状态都保存在SRAM里面,

但是,仅仅有查找表是不够的,数字集成电路的根是时钟,所有的逻辑按照时钟节拍来同步。举个例子,几个流氓打群架,是没有章法的,但是几万人的大军作战,如果还是各打各的,就发挥不了群体的优势。比如士兵与士兵之间如何配合?连与连之间如何分工合作?大军作战需要讲究阵法,中国古代的战神们就熟读兵书,会用八卦阵、长蛇阵等阵法,按照统一的号令指挥大军作战,无往不利。比如,法正和黄忠搭配,在定军山对山摆好阵势,法正站在山顶举令旗指挥,在他的号令下,最终老将黄忠把悍将夏侯渊劈作两半,就是靠阵法以弱胜强的例子。FPGA里面有几十万甚至百万个查找表,需要统一的号令来行动,这就是时钟。

下图是FPGA内部的基本单元,查找表+D触发器+选择开关。D触发器用来存储,查找表是组合逻辑。每个时钟周期会输出一个值,通过选择开关来选择用查找表还是D触发器。

如果你看明白了上面FPGA的基本单元,你就理解了数字电路的基础——RTL,Register Transfer Level,寄存器传输级。数字电路包含两个基本部分:组合逻辑和时序逻辑,组合逻辑就是我们前面讲的布尔代数,可以做逻辑运算,但是没有记忆功能,上图中的查找表就是起了组合逻辑的作用。时序逻辑是带有记忆功能,可以按照时钟节拍控制输入输出,上图中的D触发器起了记忆功能,我们叫做寄存器。这样,组合逻辑和时序逻辑结合起来,我们就可以从这个层面设计大规模数字电路,叫做RTL设计,就是说从组合逻辑和时序逻辑级别来设计复杂的计算系统。

FPGA如何实现可编程?

那么问题来了,FPGA怎么实现可编程?如果要控制上面的基本单元,需要存好查找表的几个状态值,比如4输入查找表,就要存16bit,同时要存1个组合逻辑的选择bit和1个D触发器初始值bit。FPGA把这些配置数据保存在SRAM里面,并配置到每个基本单元中,通过写自定义数据到SRAM,就实现了对整个FPGA逻辑的可编程。

有了上面的基本逻辑单元还不够,多个基本逻辑怎么级联?级联的连接部分怎么可编程?

下图是FPGA内逻辑块之间互联的结构图。逻辑块的输入输出通过连接块Connection Block CB和交换块结合级联到其他的逻辑块,连接块决定逻辑块的信号连到哪根连接线上,交换块决定哪些连接线是通的,把逻辑块需要的信号连到相邻的逻辑块。连接块和交换块都是可以基于SRAM方法编程的,连接块里面是一些选择开关,交换块里面是一些交换器。

看得出来,连接线远比逻辑块更复杂,在现代FPGA芯片中,连线一般占了90%的面积,真正的逻辑部分只有10%左右面积。

FPGA的扩展资源

FPGA里面只是上面的组合逻辑是不够的,因为用户有时候不想自己搭逻辑,有些常用的逻辑希望直接用现成的。所以现代FPGA自带了很多常用的计算单元,比如加法器、乘法器、片上RAM,甚至嵌入式CPU,它们不是通过查找表搭的,而是跟ASIC一样,用晶体管搭成,这样更省芯片面积,同时性能更好。这些计算单元可以让用户配置和组合。

比如,深度学习中会使用大量的乘法器,这个时候,FPGA内部提供很多乘法器就发挥了很大的作用,这些乘法器和用户逻辑结合,可以实现很多人工智能计算,并达到高性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21333

    浏览量

    593695
  • 微软
    +关注

    关注

    4

    文章

    6254

    浏览量

    103095
  • 人工智能
    +关注

    关注

    1777

    文章

    43956

    浏览量

    230948

原文标题:阿呆读可重构计算1:为什么微软选择FPGA做AI?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AIFPGA获得新生:CPU+GPU都搞不定的机器学习问题,微软和百度用FPGA解决了

    AIFPGA又焕发新生。在今年的 Hot Chips 2017 会议上,微软推出基于 FPGA 的超低延迟计算平台 Brainwave,
    的头像 发表于 08-25 16:14 1w次阅读

    【国产FPGA+OMAPL138开发板体验】(原创)5.FPGAAI加速源代码

    FPGA架构的优化。以下是我写的一个简化版的代码,用来展示FPGA如何加速AI计算中的某个简单操作(比如矩阵乘法)。 // Verilog代码,用于
    发表于 02-12 16:18

    中高端FPGA如何选择

    DDR4/5和GDDR6,在目前的Virtex Ultrascale+的FPGA中,都没有的。 4.专为AI优化的计算引擎 在AI高速发展的时代,Achron
    发表于 04-24 15:09

    FPGA的学习方向路线

    求各路大神解答。据我所知,fpga大都用于图像处理和通信部分,但是对于学习路线还是迷茫的,不知道明确的学习路线。求,图像处理的学习路线,或者是通信部分的学习
    发表于 12-05 15:51

    微软HoloLens正研发AI芯片 可识别语音和图像

    加入了动作追踪处理系统。最近,为了在云服务方面与谷歌和亚马逊合作,微软使用了现场可编程门阵列(FPGA)以展示他们的 AI 实力。特别是,微软从英特尔子公司 Altera 购买芯片,并
    发表于 07-31 21:17

    为什么微软选择FPGAAI

    微软却全面拥抱FPGA作为AI计算平台。同时,亚马逊和百度也是FPGA路线。百度在一个电路板上集
    发表于 08-21 09:50

    【案例分享】FPGA+AI,领你走进新科技时代

    相当于在传统的基于CPU的计算层之上,增加了一层平行的FPGA计算资源,并可以独立的实现多种服务与应用的计算加速,如上图左所示。在微软当前的
    发表于 08-11 04:00

    如何确定在Altium中选择几条边?

    像这种怎么选择几条边Altium designer中的
    发表于 09-08 22:25

    EdgeBoard FZ5 边缘AI计算盒及计算

    的高可靠性AI BOX本次推出的EdgeBoard FZ5计算盒及计算卡基于XCZU5EV(4核Cortex-A53融合FPGA)自适应可伸缩计算
    发表于 08-31 14:12

    入门AI的两大方式与进阶AI的10大路线

    人工智能浪潮来袭,开发者应该怎么办?2018年1月16日,在刚刚召开的“AI生态赋能2018论坛”上,CSDN副总裁孟岩重磅发布了AI技术职业升级指南——《AI 技术人才成长路线图V1
    的头像 发表于 01-17 13:40 7307次阅读
    入门<b class='flag-5'>AI</b>的两大方式与进阶<b class='flag-5'>AI</b>的10大<b class='flag-5'>路线</b>

    FPGA将成为英特尔进入微软AI市场迟到的船票

    长远来看,英特尔豪赌167亿美元收购FPGA制造商Altera的举动是一笔好买卖。现在,FPGA已经成为深层神经网络中GPU的强力竞争对手;英伟达应该也已经发现了,微软新的实时云AI/
    发表于 11-07 09:31 656次阅读

    微软推出Brainwave项目以提供更快的FPGA芯片

    随着云计算大战不断升温,微软正在采取一种独特的方式,以帮助开发者更快地完成人工智能(AI计算任务。这个项目名为Project Brainwave,可以让
    发表于 08-26 17:55 944次阅读

    FPGA计算性能还能否满足现代社会的需求

    最近FPGA又频频被各AI领域的巨头看好,比如微软、百度、科大讯飞都对FPGA应用前景有所期待。那么如果让你选择
    发表于 09-04 17:49 724次阅读

    浪潮发力助推TF2 FPGA高效AI计算开源框架

    近日,浪潮宣布为可重构AI计算发展计划参与者提供最新FPGA加速卡支持。参与该计划的高校将FPGA开源AI框架TF2应用于
    发表于 06-04 09:55 842次阅读
    浪潮发力助推TF2 <b class='flag-5'>FPGA</b>高效<b class='flag-5'>AI</b><b class='flag-5'>计算</b>开源框架

    「重大突破」微软量子超级计算路线图公布!

    关注微软科技视频号 了解更多科技前沿资讯 点亮在看,给BUG点好看 点击阅读原文,了解关于微软那些事儿 原文标题:「重大突破」微软量子超级计算路线
    的头像 发表于 07-07 00:10 286次阅读
    「重大突破」<b class='flag-5'>微软</b>量子超级<b class='flag-5'>计算</b>机<b class='flag-5'>路线</b>图公布!