Home >> Views >>桃芯视角 >> 白话人工智能(AI)芯片
详细内容

白话人工智能(AI)芯片

时间:2019-03-01     作者:桃芯科技【原创】

我们尽量不搞大量显得很牛x的名词和术语或公式,必要时用一下。(如有谬误敬请谅解;本文图片采自网络)

一,概念

人类的发展基本都是循序渐进的,划时代的东西出现是比较稀疏的事件,比如说铜器,铁器,蒸汽,电,互联网等。阿法狗的事突然激起了万众对人工智能的激情,人工智能应该是17、18年的年度词汇,但人工智能这件事实际上是新瓶装旧酒。

随便翻翻看几件事,计算器,闹钟,计算机,机器人,手机等等,凡此种种,这些东西样样都符合广义的人工智能的定义。我们搞技术的有时候也需要搞个新词来充充门面,来吸引一下关注,或者获得一些资源,相比来说也还都算克制的。(行行都有混混,这个不在讨论范围。)

v2-dfdc79f8c0b0db092b4b9e7ef9ed681c_hd.jpg

我们再进一步看看,如果再特指一下人工智能,代表机器模仿人脑进行信息收集,学习,思考,判断等等工作,那么这件事其实也不是新鲜事,也至少有几十年历史。再想一步,这些动作之所以能够做是因为我们有了计算机,以及相应的能模拟人脑的算法。

所谓算法,就是一系列由输入能得到想要的输出结果的数学公式(函数),这么说有些白,但你这么理解完全没有问题。而这些基础的算法,就像我们刚才介绍的,已经存在很久了。我们现在需要做的第一件事,那就是结合应用去优化一下这些基础公式。顺便提一下,不能看见算法两个字就觉得牛X的不得了,y=x也是一种算法。

而所有包含在人工智能里的一系列任务中,有两个大的步骤:一个,‘学习’是其中的重点,意思是根据大量的数据去训练这些公式,优化这些公式,说的再直白一些就是要通过大量样本数据确认这些公式的系数,或者根据不同场景改变不同系数,甚至阶数,以便算得我们想要的结果。另外一个,就是接下来根据学习的结果,对应用场景的某种输入进行‘’推断,从而达到我们需要的某种场景的‘智能化’。参考下图模型。

v2-48c479d9c59ef859b3046a25d7dba95b_hd.jpg

根据这些算法,以及配上CPU,是不是就可以算人工智能了呢。可以说是的,比如阿法狗(也借助xPU)。顺便提一下,任何这种没有感情的计算任务,人是不可能赢的了机器的,这是常识,以后不要拿这个打赌。但是,还有一个问题,那就是资源,我们想做一件事情,如果调用大量的CPU,耗费大量的时间和能源,那就不是应用级别的产品。

所以,这就涉及到怎么把这些学习算法真正的高效的用起来。三种途径:1.软件方法,就是类似阿法狗的方法(可软件的东西比较多,也借助了xPU);2.可配置的硬件FPGA,就是把算法硬化,随着算法的升级,重新刷一下硬件;3.硬件加速器,就是把算法做成硬件,改不了了,但是当然了他可以有可配置的系数变量。这几种方法灵活性递减,效率递增

所以,自然的,人工智能芯片的核心就是把一定的算法做成硬件加速器,并且为了合理的划分加速器单元以及实现加速器的有效使用,投入了很大的精力。

二,几个关键问题

1.首先是算法。先看场景:虽然我们是想构建一个会学习能思考的大脑,但对于不同的应用,我们做一个大而全的东西总是有效率上的问题。这就带来了一个问题,就是所谓的AI必须结合场景,必须找到自己的赛道。比如图像识别,语音识别,再比如距离,速度判断,下围棋等等应用不一而足,也可以稍夸张点说,我们碰到的所有问题都是数学问题。另外一方面,既然是场景应用,那么很多即使是显得比较low的应用,也可以挂个AI的名。

算法的种类很多,分法也很多,如果我们拿神经网络学习算法说事,就是我们常见的xNN算法。补充一下,我们所有的自然现象都可以用数学公式表达出来,所以我们可以根据我们对人脑的认识(当然现在认识还很简陋,但也可以凑合用),用一个数学模型表达出来人脑的工作模型,然后通过数据训练,得到一个相对合理的函数。

v2-11d36b02884a05beb7190cae89494486_hd.jpg


不同模型参见:blog.csdn.net/nfzhlk/ar

算法是各个AI公司的核心,算法可以复杂或简单,但完成的效果怎么样,这些是考量指标。虽然总体上有参考的东西,一般人也能完成个7/8成的模样,但最后的20%是考核你是否能达到顶尖水平的部分,毕竟市场上还是头部企业才能生存啊。

(特别说明:如果搞专业就得去仔细了解其中具体的数学意义,物理意义,挺多头大的公式,当然学会了也可以拿来唬人。)

2.其次就是硬化方法。算法再往下,所有的算法,到机器上,最后的基本单元就是乘和加。怎么把那么多的乘和加有机的组合起来,形成有效的算力,起到多快好省的目的,是我们想说的另外一个关键点。再具体点,我们常常听到的GPU、TPU,NPU,BPU,等等xPU,就是基于不同应用(有时是相同应用)搞出来的不同算法,然后根据自己的定位,搞出来的不同硬件。这些硬件往往已经细化到了适应场景的基本的运算单元(已经不是最简单的乘和加)。

一个算法可以有不同的形式呈现出来,简单说,可以用不同的语言和相关平台呈现,比如Fortran,C,Java,Python等等语言,同时,一个算法的数据输入形式也是不一样的。所以,相应的这些表达是不能直接用的,需要变成机器识别的东西。所以,无论是用那种硬件xPU,都需要编译工具把这些代码编译到这些可执行的硬件上。打个通常的比喻C编译到x86类型的CPU上,针对TPU/GPU,也得编译到适合这样硬件运行的指令,等等。方法不一样,但是道理是一样的。为了效率,必须做这样的工作。

举几个栗子,比如Nvidia以图像和语音识别为基本场景,采用pascal/volta等演进的硬件架构处理DNN模型,应该说这都还算比较通用的,属于处理器类的硬件,属于我们前面说的第一类偏软的。而Google发布的TPU是号称专用的机器学习芯片,这样的话就属于我们说的第三类偏硬的。总的说来,都是基于基本硬件单元进行架构,软和硬是相对的。同样基于此,也给不同的公司做所谓的差异化提供了空间,也可以有的牛可吹,到底差别多少就要看效果,看人品了。

v2-78024e9fef74e5d801577a10d589012f_hd.jpg

上图GPU的小绿块就是基本的计算单元,黄色的是控制逻辑,可以看到可以并行处理很多具体的计算工作。同时,我们观察到针对不同的算法采用了不同的计算架构,同时还有不同的输入语言,基于不同的硬件架构,又有不同的编译软件,等等。 组合起来就是一个挺多路径的技术取向。仅作为基本了解,下面的图可以不看。有兴趣的可以再看看CUDA,或者TensorFlow等算法实现流程。

另外,像Nvidia、VTA等都将整个流程开源,号称软硬件全栈开源。有兴趣的可以更多去了解。

v2-f799e73dad21fa60f296a47cba79ec70_hd.jpg

有一些林林总总的缩写我们大概的区分一下,有助于您以后理解相关的文章。

算法模型类:DNN/ANN/CNN/SNN

流程类:XLA/LLVM/TVM/NNVM

硬核架构类的:xPU

三,芯片

1.先看看芯片架构。所有基于冯氏GPU架构的SoC芯片长相都差不多,就像人都长得差不多一样,但人与人之间的差别又是巨大的。下图中两种芯片架构的画法是一样的,无非或繁或简,通过架构看芯片性能只能是犹抱琵琶半遮面,真东西在细节。您注意一下我在右边的总线上挂了一个xPU。

v2-55b92981acfce934e4990eedb3a04c58_hd.jpg

上面我们讲了AI算法概况,讲了怎么把算法映射到硬件上面,那现在我们讲讲硬件本身。刚才提到SoC的架构其实差不多,那AI芯片的差别在哪里?AI芯片也是一个SoC芯片,无非是为了做与算法相关的工作,在SoC芯片中加入了xPU的硬件处理子系统,这个子系统是为了不同的应用设计的,具有不同加速结构的硬核。

下图中是TPU/GPU子系统的硬件架构图,而其中的运算部分用红色框框标出来了,这是不同xPU微结构上的差别。总结的话,算法,编译,以及下图的硬件结构是三位一体,互相适应,找到最优解当然最好,但凡事总有tradeoff。比如说,CPU与xPU工作分工的比例,xPU的大小和能力,xPU面向的应用,是不是xNN模型,等等,都可以定义出不同的芯片。算不算AI,算多少,这条从算法到硬件的链路上有多少自己的东西,这些由您自己判断。也许我们可以只判断是否生意上成功就好,但也需要考虑是否能持续。

v2-74cd4fc2df919b3127e8759ae2cc35cb_hd.jpg

2.再看看微观的部分。

我们做芯片总是希望面积越来越小,功耗越来越低,速度越来越快,能力越来越强,多快好省吧。围绕着这些个目标,我们会有不同策略。

比如小,采用先进工艺,会使芯片面积越来越小,像矿机芯片,本身算法很简单,为了小就需要不断的追求新工艺,现在已经到7nm了。

比如快,有人将很多工作用在优化代工厂foundry的标准库上,达到快和省的目的。再如,有人希望重新采用异步结构的电路设计等等。为了快,从芯片的微架构上进行调整和优化,比如所谓存算一体,减少存储器的访问次数和时间,等等。

四,AI场景和物联网终端芯片

前面我们大致介绍了采用xNN模型的AI芯片的原理和流程。

通常来说,这种芯片是用在中心场景的,需要大的数据运算,完成一个完整的场景。当然除了用在云上面,手机,车载电脑,或者一些更小的场景等等应该也都属于这个范畴。从个人看来,对电源没有特别省电需要的场景下,各种AI芯片可以做的比较复杂一些,处理能力大一些。

此类芯片有很多国际大厂在前面跑,还给你开源,做通用的xPU感觉基本上是非常难以生存的,此类厂家需要结合特定的场景,争取做到效率高一点点,面积小一点点。

针对于对功耗敏感的场景,尤其是小电池容量的场景,所谓AI只能做到很简洁,这里多数算是端的场景。做个简单的语音识别,指纹识别,这种交互类的,应该也不需要我们前文提到的那么复杂的流程。当然此类芯片算不算AI,大家自己根据自己的需要进行解说。

在物联网终端应用场景下面,有很多不同的场景有交互需求,这里也应当能创造一定的机会。详细的就不便多说了。

好了,就说到这里,您是不是和我一样觉得,这东西并不神秘。不过,任何东西想要搞的漂亮,都有很多艰苦的工作。


最新评论
请先登录才能进行回复登录