0
本文作者: 刘琳 | 2020-08-10 18:09 | 专题:CCF-GAIR 2020 全球人工智能与机器人峰会 |
2020 年 8 月 7 日,第五届全球人工智能与机器人峰会(CCF-GAIR 2020)于深圳正式拉开帷幕。
CCF-GAIR 2020 峰会由中国计算机学会(CCF)主办,香港中文大学(深圳)、雷锋网联合承办,鹏城实验室、深圳市人工智能与机器人研究院协办。
从 2016 年的学产结合,2017 年的产业落地,2018 年的垂直细分,2019 年的人工智能 40 周年,峰会一直致力于打造国内人工智能和机器人领域规模最大、规格最高、跨界最广的学术、工业和投资平台。
8 月 7 日下午,依图科技 CTO 颜水成为人工智能前沿专场做了题为《芯智能,新基建》的主题演讲。
颜水成从新基建的产业大规模应用出发,首先探讨了学术界和工业界在人工智能探索方面的差别;以红烧狮子头作比喻,认为学术界追求算法的可复制性、新颖性和公平性,而工业界的最终面向对象是客户,而客户是并不关心过程的。
所以,颜水成认为,工业界要想让人工智能走向落地,一个非常重要的点是要让人工智能的成本降低,让用户用得起;这时候就需要把算法的效能和芯片的效能,通过协同开发的方式去形成人工智能的解决方案,而不是纯粹的算法——这种解决方案称之为芯智能。
值得一提的是,颜水成在演讲中也谈到了 "算法即芯片" 的理念,他表示:
要想打造一款有竞争力的芯片,要清晰明白这个芯片典型的使用场景,它的主要算法以及这些算法在未来几年里可能的发展趋势,然后根据这些信息再去对芯片架构进行优化,以及对工具链做相应的优化,最后实现它们相互的优化,但同时也要保障芯片和算法能够分层解耦。
以下是颜水成大会现场全部演讲内容,雷锋网作了不改变原意的整理及编辑:
颜水成:今天想跟大家分享依图在人工智能解决方案和人工智能的基础设施维度的一些观点和进展。
今年新基建被提出来,在新基建的概念里面,一共定义了 7 个核心领域,其中有 4 个领域都跟人工智能和芯片有密切的联系,如果仔细分析这四个方向,就会发现其跟产业大规模的应用是非常相关的,但是当我们去探索人工智能的时候,在学术界和工业界的差别是非常巨大的。
下面我想用一个类似“红烧狮子头”这样的比喻来说明在工业界和学术界研究人工智能本质的差别。我们暂且从深度学习的角度出发,把红烧狮子头当做是学术界或者工业界训练出来的最终的模型,在学术界,我们要得到这样一个模型或者写一篇论文,一般我们会说“请厨师在这个厨房用这些食材,当面给我做一个红烧狮子头”为什么是这样呢?因为在学术界评判的对象是行业的专家,我们追求算法的可复制性,追求它的新颖性、公平性。公平性就意味着你要用同样的数据,要用同样的算力来做工作。新颖性就是这个厨师在做的过程中有什么新颖的地方,如果新颖的话,我就会觉得这个工作非常好。
但是工业界不是这样的,我们的评判对象是最终的客户,它的场景就类似于我就要一个红烧狮子头,请给我上来。我们的最终客户并不会关心我们到底是用什么样的食材做的,用了什么样的制作工具,以及到底是谁烹饪的,我们都不管,他关心的就是最后他的这个红烧狮子头的味道是什么样子的。
正是因为这些差别,有很多的学术界的教授到工业界并不能很好地适应这种变化。所以在工业界里面当我们去研究人工智能的时候,一个非常优秀的人工智能的模型,它的精度和速度在某种意义上已经可以开始被解耦。
在工业界如果要想打造一个非常不错的人工智能的模型,一般有两种方式,一种是数据和迭代的执行力,一种是在算法上的创新。
如果我们要提升一个模型的精度,在当前这个大背景,也就是很多算法已经被开源的情况下,从算法角度能提升的精度和用大数据能提升的精度相比,往往大数据能提升的要大非常多。
但是如果我们想从速度的角度来提升,这个时候纯粹靠速度和执行力,它的价值就相对来说会小很多,算法的价值就会变得非常大。
也就是说在工业界,在算法已经给你的情况下,你从数据的角度能快速提升精度,当然是对速度的提升相对有限。
但是从算法创新的角度,可以把这个速度提升得非常多,但是精度的提升是非常弱的。如果我们要想让人工智能落地的话,首先是要让用户用得起人工智能,同时,需要把算法的效能和芯片的效能,通过协同开发的方式形成人工智能的解决方案,而不是纯粹的算法,我们把这种解决方案叫做芯智能,而这也是依图在过去这几年作为服务于新基建的核心和根基。
那么,为什么要做芯片和算法的协同开发呢?下面我们从三个维度的关系来做一个分析,一是算法模型的效能,二是芯片计算的效能,三是算法模型效能和芯片计算效能合并之后能分析的数据的规模。
如果我们只是一个算法开发者,当一款算法开发出来之后,把它用在具体的芯片上,姑且认为它们能处理的速度规模就是它们的线段交叉的部分,当我们用更高效能的芯片,也就是说我们会用更好制程的芯片提升它的效能,我们能处理的数据的规模会不断提升。但是因为算法和芯片两个是分开的,所以它只能起到一个线性连接的作用。
假设我是一个芯片开发者,我们要解决一个具体场景的应用,比如说城市大脑,当我们用不同的模型,随着模型的效能提升,我们能够让这个分析的规模逐步的提升。但是如果我们协同开发,它就完全不一样了,它会带来一个额外的增量,它不再只是说连线上能处理的数据的规模,协同开发会带来一个额外的增量,这个增量会极大地提升最终解决方案的效能,从而让我们提供的解决方案更具核心竞争力。
具体来说就是“算法即芯片”的理念,你要想在当前芯片非常多的背景下,打造一款有竞争力的芯片,你要清晰明白这个芯片典型的使用场景,它有哪些主要的算法,以及这些算法在接下来几年里面可能的发展趋势,然后根据这些信息再去对你的芯片架构进行优化,以及工具链做相应的优化,最后实现它们相互的优化,但要保障芯片和算法能够分层解耦。
接下来跟大家分享依图在过去这段时间里面在高效能的算法和高效能的芯片里面做的一些工作。
在高效能算法里面分享两个,第一个工作是想跟 bottleneck structure (音)做一个正名,它也可以用来设计低资源、低功耗的深度学习的模型,自从 MobileNetV2 被提出来之后,Inverted Residual Block(IRB) 一直被用来设计所有低资源、低功耗的深度学习的模型,但是 IRB 有一个特点,它的连接的部分是在窄的部分,在这个部分有一个比较大的问题,当信息通道变少了以后,也就是说它窄了的话,从不同的随机数据样本获取的梯度差别就会很大,它会有很大的抖动,当不同数据样本里面产生的梯度互相矛盾的时候,优化的速度就会大大的降低。尽管在 MobileNetV2 里面有实验表明: IRB 这种反漏斗模型的效率比 bottleneck structure 要好很多,但是并没有太仔细地讲它这个漏斗模型到底是怎么样设计的。
于是我们做了三组非常详细的实验,一组实验是在 IRB 的1×1卷积之后,第二个是在 3×3 这个宽的地方有 ReLU 的情况,第三种是把 ReLU 去掉去做直连。如果我们从 1×1 的卷积上直连,它的性能确确实实比 IRB 差不少,但是我们把它连接的位次上升到 3×3 的卷积的时候,效率就提升了,一个经验上的解释是因为 1×1 卷积缺少 Special information,或者它的 Complex 比不上 3×3 卷积之后那么好。(这部分不太确定)
就第三种情况来看,当我们把这个 ReLU 去掉之后,它的模型就比 IRB 有更好的效能,从 72.3% 上升到 73.7%,从这些实验说明,bottleneck structure如果纯粹从结构上说,会增益网络梯度更新,增加收敛速度,进而用来设计低功耗的深度学习的模型是没有问题的。
我们到底如何设计一个非常通用的适合于低功耗的场景的模型呢?
我们直接从 bottleneck structure 开始肯定是比较难,因为 3×3 的卷积是放在非常窄的地方,Spatial context 考虑得太少,于是我们把 3×3 卷积从它原来的位置放到了比较宽的位置,同时我们把它 copy 两份,这样即使在 Depthwise 这种情况下,这个模型 Spatial context 还能考虑得非常充分,于是我们就得到了右边这样一个 bottleneck structure,用来设计低功耗深度学习的模型。
但是还有一个问题,如果从宽的地方直连,一个现实的情况是在现在的算力平台上,Element wise 这种加法计算的效能是相对来说比较差的,同时跳跃链接可能会引起额外的内存访问,这对于计算效能的影响也是不可忽略的。所以减小跳跃链接的Tensor 尺度可以有效的提高硬件效率。这也是当时 IRB 提出的一个主要原因,于是我们提出一种思想叫Partial connection,这恰好是我们在 2017 年打 ImageNet 竞赛里面提出的一个核心的思想,这个实验的结果非常有意思,我们把它从原来百分之百的直连降成 50% 的直连,一般而言它的性能不但没有下降,还会上升,这也证明原来这种思想也是非常合适的,这样我们就得到了非常适合做低资源、低功耗、深度学习的模型设计的网络。我们把 MobileNetV2 的 IRB 的结构替换成新的 SG Block 的模型,把模型的性能从 72.3% 上升到 74%,加上一些其它的优化,可以上升到 77.3%,在这种情况下,说明我们用 bottleneck structure 已经跟当前几乎是最好的低资源的深度学习模型可以媲美。
我们看一下这个模型的结构,是不是有足够的泛化的能力,于是把它放到了现在大家在深度思考的 NAS的思想里面,我们用 Darts 的算法,把原来的 search space 加入SG block,我们做了三组不同的实验,一种用原始的 search space,一种把 IRB放进去,SG Block在参数一定降低的情况下,还能把精度提升,而且Darts会自动地在它的网络里面大量选用 SG Block,也就是说 SG Block 是通用的,可以在很多场景使用,来提升低资源、低功耗、深度学习设计的网络。
第二个工作是希望去提升在 Language model 或者 Training model 的 Training Efficient。前面几位讲者介绍的模型,哪怕最原始的模型,都会有一个显著的问题,跟通用的计算机视觉模型相比,它的参数要大很多,它差不多是4倍以上的参数、60 倍以上的计算量,这样带来的后果就是,除了大公司有能力去探索这个领域,在学校里面的研究者基本上没有太多的机会深入地对这些方向进行探索,我觉得这肯定不是最好的,于是我们思考,能不能有办法把基础的速度大幅提升。在 self-attention 使用的时候,我们发现一个比较大的问题,它这里面存在非常多的冗余的信息。
Attention 的机制是希望动态确定一个 token,跟其它的 token 之间的Dependency,self-attention是说所有的 token 产生对所有 token 的 Dependency,如果用 Fix convolution kernel 的话,这种 Dependency是固定的,如果用最简单的Dynamic,就是从一个 token 去产生一个肯定的结果肯定是非常难的,因为语义上有很多歧义,比如说一个 Apple,它有可能是一个品牌,也可能是一个真实的水果,如果纯粹从一个 token 出发,它非常难把真正的Dependency 展示出来,我们用 一个token 和一个周围的token去预测 Local Dependency,于是就得到了新的这种结构。
实验表明,Fix convolution kernel肯定是最差的,我们这种效果有很好的提升。
另外一个维度,如果两者融合,它的效果肯定会更好。于是我们把它融合在一起,融合在一起之后会发现一个很有意思的事情,在有 Convolution 的情况下,在新的模型里面,self-attention模块就会转向真的去刻画 Global Dependency。把它们真正地用更细致的实验去跑这些模型,你会发现正因为有这种 Global 和local模块 的加入,我们能够用 1/10 的训练的时间和 1/6 的参数,就能获得跟原来的模型获得一样的精度,这种机制就可以让更多的学者用更少的时间能够去探索 Language model 的训练,对于这个领域的发展来说,我觉得也是非常重要的。
在芯片这个维度,我们主要想分享几个我们的观点和最近的进展。
有很多人最近经常要回答的一个问题是,算法、算力和数据在工业界来说到底哪一个是最重要的,毫无疑问,如果从科学的角度来说,肯定只有算法是最重要的,没有它的不断地探索,我们不可能让整个领域往前推动。
但是从工业界来说,特别是在当前这个阶段,算力已经变得越来越重要,一方面是因为智能密度的提升,更多的传感器和数据是要被处理。这时候需要的算力会大幅度增加。另外一个非常重要的原因是我们处在一个从感知智能向决策智能跃迁的阶段,我们会对感知智能的精度要求更高,我们要对解释对象的数量大幅的提升,以及对象之间的关系也会大幅的提升,这时候合在一起,对算力的要求会是一个指数级的增加。
另外一个维度,大家都探索过对模型的训练,它所需要的算力,已经不是原来的摩尔时代的那种速度,已经是每三个多月的时间就会翻一番。很显然,我们已经进入到一个算力霸权的时代,GPT-3 前面已经讲过,我们就看计算机视觉这个领域,最近一个方向是自我训练,当我们想要得到一个非常有效的模型,已经需要用 2000 多块 TPU core 训练 6 天的时间,用网上的报价来算,需要 13 万美金才能训练一个模型,这对学术界来说也是一个非常巨大的挑战。
当我们把训练和价格放在一起思考的时候,需要考虑如何大规模的降低算力的成本。在算力霸权的情况下,我们真的要回答 AI 的终局是什么,比如说自然语言能达到什么样的程度,这时候一定要打造自己的AI芯片。
前面提到依图 AI 芯片设计的理念是“算法即芯片”,在这里我想再用一个齿轮的图形给大家清晰理解“算法即芯片”的意义是什么。当我们确定了几个典型的应用场景,它足够大、足够消化这款芯片,我们就会知道有哪些算法,以及这些算法就能够拆解出它的算子出来,如果我们的 AI 芯片对于这些算子的频率做了一个分析,然后做了一个设计上的优化和设计之后,当一个算法跑起来,AI 芯片里面相应的算子就会被启动,当另外一部分算法跑起来,另外一部分算子就会被启动,这样它的算子的冗余和利用率,就会根据我们的场景和算法有一个相互的优化和协同的开发,它的效能肯定是最好的。
依图基于这种理念,在 2019 年 5 月份发布了第一款芯片叫求索芯片,这款芯片发布即商用,发布这款芯片的时候,直接就在现场拉了 200 路视频,把我们的 AI 芯片做成 AI 服务器,实时的做推理和分析。
这款芯片是由云端和边缘端视觉推理的芯片,它具备了 AI 的端到端的能力。具体来说,跟发布时市面最典型的解决方案相比,单路视频的功耗能降到 1/5 到 1/10,单位面积芯片也有相应的优势,这样对于大大地降低用户最终的购买和使用成本,这个价值是非常不错的。
基于依图的高效能 AI 的算法,大家可能理解的比较多的是依图的人脸识别的算法,其实依图在 Re-ID 维度落地也非常不错,再加上依图的求索芯片在一起,我们打造 AI 的解决方案,相应的硬件包括云端的服务器和边缘盒子,分别应用于不同的场景,对应刚才陈老师的说法,右边的放在边缘计算,左边的放在云端计算。
这些一体化的解决方案,已经用来解锁不同的场景,依图解锁场景有两种方式,一种方式是用精度的极限,比如说在福州和贵阳用刷脸乘地铁的方案,是因为人脸识别的精度已经非常高,能够满足这种场景的应用。
另外一些场景要解锁是要解锁用户买得起,比如说城市级的智慧城市解决方案,在这种情况下,你可能要处理的视频路数是 10 万到 50 万路,只有当 AI 的芯片和 AI 算法柔和在一起,才可能打造出一个可用的解决方案。
最后做一个简短的总结,依图会在芯智能这条路上不断地深耕,不断地提升算法的效能和芯片的效能,通过协同开发的形式,我们期望为新基建提供更高效能的芯智能的解决方案。谢谢大家。
主持人:谢谢颜水成的精彩演讲。下面是提问环节。
提问:你说算法和硬件你是联合考虑的,如果说把硬件和算法解耦出来,让其它公司的算法跑进去,也能有这么高的效率吗?这是第一个问题。第二个问题,你刚才讲 AI 芯片的设计,你是面向具体的应用场景的,你的 PPT 里面讲了有语音的,也有视觉的,是不是你们的芯片在语音和视觉方面都做了很好的优化?
颜水成:第一个问题,我们讲了要对不同场景常见的算法以及它未来的趋势做预测,意味着我们在预测的时候,其实已经把其它的算法厂商可能的算法的特点考虑进来了,所以这款芯片是能保证算法和芯片是解耦的,也就是说这款芯片也能够让第三方厂家的算法在上面能够跑得不错。为了保障它跑得不错,因为我们有一些算子肯定是优化得比另外一些算子更好,所以一般的情况下,我们都会提供一个平台,让第三方的厂家可以根据这个平台去Re-Design,或者是用NAS的方式自动搜索它的模型的结构,以便更好地适应芯片上的特点。
第二个问题,我们这款芯片最初的目的是用于云和边的视觉推理,但是因为我们有相应的算子的支持,其实依图也做语音识别,而且做得也不错,落地的地方也不少,我们发现对我们的语音识别的算法,对有些算子稍作调整,语音识别的算法也是可以跑在这款芯片里面。
提问:这两个应用完全不一样,单比特的算力,视觉类和语音类差距比较大。
颜水成:是,所以我们定的目标是视觉类的,但是当语音的数据量并不是非常大的时候,当然我们也希望有,在这里面跑也是可以的。
提问:视觉类的算法边界也是很大的,场景也是很多的,是不是像检测、跟踪、语义分割,包括行为分析都可以?
颜水成:这是肯定的,因为你是用几个场景来定义这款芯片的,在几个场景下,你所用到的常规的算法肯定是一定要全部包含的。
主持人:再次谢谢水成。
温馨提示:
大会现场票已罄,应观众强烈需求,现新增少许第三天 7 个专场通票,请于 8 月 8 号 23:00 前申请抢座:微信打开https://gair.leiphone.com/gair/free/s/5f28d5ae607bf 一键获取。
雷锋网雷锋网雷锋网
雷峰网原创文章,未经授权禁止转载。详情见转载须知。