干货 | 地平线:面向低功耗 AI 芯片上视觉任务的

2019-09-27 17:45 来源:未知

简历投递方式:包括网申和宣讲会现场投简历。

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~

我们公司的技术团队实力雄厚,除了国内的各大厂之外,同时也有来自如 Facebook、华为、高通等国际知名企业的成员。目前,我们的业务横跨「软+硬,端+云」领域,后续会持续深耕嵌入式人工智能。

相关阅读

深度学习的异构加速技术(一):AI 需要一个多大的“心脏”? 
深度学习的异构加速技术(三):互联网巨头们“心水”这些 AI 计算平台

此文已由作者授权腾讯云技术社区发布,转载请注明原文出处

原文链接:https://cloud.tencent.com/community/article/581797

最后,ShuffleNetV2 也指出,Element-wise 对于速度的影响也是不可忽视的——一定程度上可以这么说。因为 Element-wise 虽然计算量很小,但是它的带宽需求比较大。其实如果把 Element-wise 的操作和卷积结合在一起,那么 Element-wise 的操作对最后带宽带来的影响几乎为 0。常用的例子是,我们可以把卷积、激活函数和 BN 放在一起,这样的话,数据可以只读一次。

2.5、片上模型与芯片级互联

为了解决带宽问题,通常的做法是增加数据复用。在每次计算的两个值中,一个是权值Weight,一个是输入Activation。如果有足够大的片上缓存,结合适当的位宽压缩方法,将所有Weight都缓存在片上,每次仅输入Activation,就可以在优化数据复用之前就将带宽减半。然而从GoogleNet50M到ResNet 150M的参数数量,在高成本的HBM普及之前,ASIC在相对面积上无法做到如此大的片上存储。而随着模型研究的不断深入,更深、参数更多的模型还会继续出现。对此,基于芯片级互联和模型拆分的处理模式,结合多片互联技术,将多组拆分层的参数配置于多个芯片上,在Inference过程中用多芯片共同完成同一任务的处理。寒武纪的DaDianNao就是实现这样的一种芯片互联结合大缓存的设计,如图2.14所示。

图片 1

图2.14DaDianNao中的存储器分布(图中蓝色部分)和多片互联时的加速能力(以GPU K20M为单位性能的比较)

为了将整个模型放在片上,DaDianNao一方面将片上缓存的容量增加到36MB(DaDianNao为36MB和4608个乘加器,TPU为28MB缓存和65536乘加器),充分保证计算单元的读写带宽,另一方面通过HT2.0实现6.4GB/s*4通道的片间通信带宽,降低数据才层与层之间传递的延迟,完全取代了片外DRAM的交互,解决带宽制约计算的问题。与之相应的,微软在Hot Chips 2017上提出将LSTM模型拆分后部署到多片FPGA,以摆脱片外存储器访问以实现Inference下的超低延迟[2]。

我们可以看到芯片在这几年工艺的发展变得越来越慢,因此我们需要依靠专门的芯片架构去提升神经网络对计算平台的需求。

三、结语

上面的论述主要以当前学术界在AI处理器构架方面的讨论为主。然而在工业界,AI的大量需求已经在某些领域集中爆发,如云服务、大数据处理、安防、手机端应用等。甚至在一些应用中已经落地,如Google的TPU,华为的麒麟970等。AI处理器的发展和现状如何?我们下期见!

知识蒸馏也是很常用的压缩模型方法,它的思想很想简单,用一个小模型去学习一个大模型,从而让小模型也能实现大模型的效果,大模型在这里一般叫 Teacher net,小模型叫 Student net,学习的目标包括最终输出层,网络中间的特征结果,以及网络的连接方式等。知识蒸馏本质上是一种迁移学习,只能起到锦上添花的作用,比直接用数据去训练小模型的效果要好。

二、不同招式的PK与演进

图片 2

2.6、新兴技术:二值网络、忆阻器与HBM

除了采用上述方式解决带宽问题,学术界近期涌现出了两种更为激进的方法,二值网络和忆阻器;工业界在存储器技术上也有了新的突破,即HBM。

二值网络是将Weight和Activation中的一部分,甚至全部转化为1bit,将乘法简化为异或等逻辑运算,大大降低带宽,非常适合DSP资源有限而逻辑资源丰富的FPGA,以及可完全定制的ASIC。相对而言,GPU的计算单元只能以32/16/8bit为单位进行运算,即使运行二值模型,加速效果也不会比8bit模型快多少。因此,二值网络成为FPGA和ASIC在低功耗嵌入式前端应用的利器。目前二值网络的重点还在模型讨论阶段,讨论如何通过增加深度与模型调整来弥补二值后的精度损失。在简单的数据集下的效果已得到认可,如MNIST,Cifar-10等。

既然带宽成为计算瓶颈,那么有没有可能把计算放到存储器内部呢?既然计算单元临近存储的构架能提升计算效率,那么能否把计算和存储二者合一呢?忆阻器正是实现存储器内部计算的一种器件,通过电流、电压和电导的乘法关系,在输入端加入对应电压,在输出即可获得乘加结果,如图2.15所示[13]。当将电导作为可编程的Weight值,输入作为Activation,即可实现神经网络计算。目前在工艺限制下,8bit的可编程电导技术还不成熟,但在更低量化精度下尚可。将存储和计算结合,将形成一种有别于冯诺依曼体系的全新型构架,称为在存储计算(In-Memory Computing),有着巨大的想象空间。

图片 3

图2.15 忆阻器完成乘加示意图(左)与向量-矩阵运算(右)

随着工业界芯片制造技术的发展与摩尔定律的逐渐失效,简单通过提升工艺制程来在面积不变的条件下增加晶体管数量的方式已经逐渐陷入瓶颈。相应的,二维技术的局限使工艺向第三维度迈进。例如在存储领域,3D构架和片内垂直堆叠技术可在片上成倍增加缓存容量,其代表为高带宽存储器(HighBandwidth Memory,HBM)和混合存储器立方体(HybridMemory Cube,HMC)。据Intel透露,Lake Crest的片上HBM2可提供最高12倍于DDR4的带宽。目前,NVIDIAP100和V100 GPU已集成HBM2,片内带宽高达900GB/s;TPU2的片内HBM带宽为600GB/s;Xilinx集成HBM的FPGA将在18年上市。这一技术革新使得对于当前的深度学习模型,即使不采用芯片级互联方案也有望将整个模型置于片上,释放了FPGA/ASIC对片外DRAM的需求,为AI芯片发展提供巨大动力。

图片 4

参考文献

[1] 唐杉, 脉动阵列-因Google TPU获得新生. http://mp.weixin.qq.com/s/g-BDlvSy-cx4AKItcWF7jQ 
[2] Chen Y, Chen Y, Chen Y, et al.DianNao: a small-footprint high-throughput accelerator for ubiquitousmachine-learning[C]// International Conference on Architectural Support forProgramming Languages and Operating Systems. ACM, 2014:269-284. 
[3] Luo T, Luo T, Liu S, et al.DaDianNao: A Machine-Learning Supercomputer[C]// Ieee/acm InternationalSymposium on Microarchitecture. IEEE, 2015:609-622. 
[4] Liu D, Chen T, Liu S, et al.PuDianNao: A Polyvalent Machine Learning Accelerator[C]// TwentiethInternational Conference on Architectural Support for Programming Languages andOperating Systems. ACM, 2015:369-381. 
[5] Du Z, Fasthuber R, Chen T, et al.ShiDianNao: shifting vision processing closer to the sensor[C]// ACM/IEEE,International Symposium on Computer Architecture. IEEE, 2015:92-104. 
[6] Eric Chung, Jeremy Fowers, KalinOvtcharov, et al. Accelerating Persistent Neural Networks at Datacenter Scale.Hot Chips 2017. 
[7] Meng W, Gu Z, Zhang M, et al.Two-bit networks for deep learning on resource-constrained embedded devices[J].arXiv preprint arXiv:1701.00485, 2017. 
[8] Hubara I, Courbariaux M, SoudryD, et al. Binarized neural networks[C]//Advances in neural informationprocessing systems. 2016: 4107-4115. 
[9] Qiu J, Wang J, Yao S, et al.Going deeper with embedded fpga platform for convolutional neuralnetwork[C]//Proceedings of the 2016 ACM/SIGDA International Symposium onField-Programmable Gate Arrays. ACM, 2016: 26-35. 
[10] Xilinx, Deep Learningwith INT8Optimizationon Xilinx Devices, https://www.xilinx.com/support/documentation/white_papers/wp486-deep-learning-int8.pdf 
[11] Han S, Kang J, Mao H, et al.Ese: Efficient speech recognition engine with compressed lstm on fpga[J]. arXivpreprint arXiv:1612.00694, 2016. 
[12] Zhang S, Du Z, Zhang L, et al. Cambricon-X: An accelerator for sparseneural networks[C]// Ieee/acm International Symposium on Microarchitecture.IEEE Computer Society, 2016:1-12. 
[13] Shafiee A, Nag A, MuralimanoharN, et al. ISAAC: A convolutional neural network accelerator with in-situ analogarithmetic in crossbars[C]//Proceedings of the 43rd International Symposium onComputer Architecture. IEEE Press, 2016: 14-26.

地平线 2019 年最全的校招政策解读

一、综述

“深度学习的异构加速技术(一)”一文所述的AI加速平台的第一阶段中,无论在FPGA还是ASIC设计,无论针对CNN还是LSTM与MLP,无论应用在嵌入式终端还是云端(TPU1),其构架的核心都是解决带宽问题。不解决带宽问题,空有计算能力,利用率却提不上来。就像一个8核CPU,若其中一个内核就将内存带宽100%占用,导致其他7个核读不到计算所需的数据,将始终处于闲置状态。对此,学术界涌现了大量文献从不同角度对带宽问题进行讨论,可归纳为以下几种:

A、流式处理与数据复用 
B、片上存储及其优化 
C、位宽压缩 
D、稀疏优化 
E、片上模型与芯片级互联 
F、新兴技术:二值网络、忆阻器与HBM

下面对上述方法如何解决带宽问题,分别论述。

我们在一些公开数据集上测试了这个模型的性能,主要有两个数据集,一个是 Cityscapes,它是语义分割数据集,图像分辨率很大,原始图像分辨率为 2048x1024,标注有 19 类。在这些数据集上,我们的网络跟旷世最新的一篇论文 BiSeNet 做比较——BiSeNet 是目前能够找到的在语义分割领域中速度最快的一个方法,它的计算在右边的表格中,其中的计算模型*Xception39 在 640x320 的分辨率,大概需要 2.9G 的计算量,而我们的一个小模型在同等规模的输入下,达到几乎一样的效果,只需要 0.55G 的计算量。

作者简介:kevinxiaoyu,高级研究员,隶属腾讯TEG-架构平台部,主要研究方向为深度学习异构计算与硬件加速、FPGA云、高速视觉感知等方向的构架设计和优化。“深度学习的异构加速技术”系列共有三篇文章,主要在技术层面,对学术界和工业界异构加速的构架演进进行分析。

2. 试用期结束以后,所有毕业生统一组织转正答辩,根据转正答辩成绩有推荐大家去参加各种国际顶级会议,或者前往硅谷工作或参观等诸多开眼界的机会。

2.4、稀疏优化

上述的论述主要针对稠密矩阵计算。在实际应用中,有很大一部分AI应用和矩阵运算属于稀疏运算,其主要来源于两个方面:

1) 算法本身存在稀疏。如NLP(Natural Language Processing,自然语言处理)、推荐算法等应用中,通常一个几万维的向量中,仅有几个非零元素,统统按照稠密矩阵处理显然得不偿失。

2) 算法改造成稀疏。为了增加普适性,深度学习的模型本身存在冗余。在针对某一应用完成训练后,很多参数的贡献极低,可以通过剪枝和重新训练将模型转化为稀疏。如深鉴科技的韩松在FPGA2017上提出针对LSTM的模型剪枝和专用的稀疏化处理架构,如图2.12 所示[11]。

图片 5

图2.12 LSTM模型剪枝比例与精度(左)和稀疏处理构架(右)

图2.12 左图,为LSTM模型剪枝掉90%的参数后,基本没有精度损失,模型得到了极大的稀疏化。图右侧为针对稀疏的FPGA处理构架,将处理的PE之间进行异步调度,在每个PE的数据入口使用独立的数据缓存,仅将非零元素压入参与计算,获得了3倍于Pascal Titan X的性能收益和11.5倍的功耗收益。稀疏化并不仅限于LSTM,在CNN上也有对应的应用。

与之对应的,寒武纪也开发了针对稀疏神经网络的Cambricon-X[12]处理器,如图2.13所示。类似的,Cambricon-X也在每个PE的输入端口加入了Indexing的步骤,将非零元素筛选出后再输入进PE。与深鉴不同的是,Cambricon-X支持不同稀疏程度的两种indexing编码,在不同稀疏程度的模型下使用不同的编码方式,以优化带宽消耗。

图片 6

图2.13 寒武纪Cambricon-X稀疏神经网络处理器结构

可针对稀疏的优化有两个目的,一是从缓存中读入的都是有效数据从而避免大量无用的零元素占满带宽的情况,二是保证片上PE的计算效率,使每个PE的每次计算的输入都是“干货”。当模型剪枝结合稀疏处理构架,将成倍提升FPGA和ASIC的计算能力,效果显著,是异构加速的热点之一。

综上所述,稀疏化是从模型角度,从根本上减少计算量,在构架演进缺乏突破的情况下,带来的收益是构架优化所不能比拟的。尤其在结合位宽压缩后,性能提升非常显著。然而稀疏化需要根据构架特点,且会带来精度损失,需要结合模型重训练来弥补,反复调整。上述过程增加了稀疏优化的门槛,需要算法开发和硬件优化团队的联合协作。对此,深鉴科技等一些公司推出稀疏+重训练的专用工具,简化了这一过程,在大量部署的场景下,将带来相当的成本优势。

最后,我们附上校招通关秘籍:

2.2、片上存储及其优化

片外存储器(如DDR等)具有容量大的优势,然而在ASIC和FPGA设计中,DRAM的使用常存在两个问题,一是带宽不足,二是功耗过大。由于需要高频驱动IO,DRAM的访问能耗通常是单位运算的200倍以上,DRAM访问与其它操作的能耗对比如图2.6所示。

图片 7

图片 8

图2.6 片外DRAM访问的能耗开销

为了解决带宽和能耗问题,通常采用两种方式:片上缓存和临近存储。

1)增加片上缓存,有利于在更多情况下增加数据复用。例如矩阵A和B相乘时,若B能全部存入缓存,则仅加载B一次,复用次数等价于A的行数;若缓存不够,则需多次加载,增加带宽消耗。当片上缓存足够大,可以存下所有计算所需的数据,或通过主控处理器按需发送数据,即可放弃片外DRAM,极大降低功耗和板卡面积,这也是半导体顶会ISSCC2016中大部分AI ASIC论文采用的方案。

2)临近存储。当从片上缓存加载数据时,若采用单一的片上存储,其接口经常不能满足带宽的需求,集中的存储和较长的读写路径也会增加延迟。此时可以增加片上存储的数量并将其分布于计算单元数据接口的临近位置,使计算单元可以独享各自的存储器带宽。随着数量的增加,片上存储的总带宽也随之增加,如图2.7所示。

图片 9

图片 10

图2.7 TPU(上)和DianNao(下)的片上存储器分布

图2.7中的脉动阵列和乘加树都是规模较大的计算单元,属于粗粒度。当采用细粒度计算单元的结构时,如图2.8所示,可采用分层级存储方式,即除了在片上配置共享缓存之外,在每个计算单元中也配置专属存储器,使计算单元独享其带宽并减少对共享缓存的访问。寒武纪的DaDianNao采用也是分层级存储,共三层构架,分别配置了中央存储器,四块环形分布存储器,和输入输出存储器,如图2.9所示,极大增强了片上的存储深度和带宽,辅以芯片间的互联总线,可将整个模型放在片上,实现片上Training和Inference。

图片 11

图片 12

图2.8 细粒度计算单元与邻近存储,上图中深红色为存储器

图片 13

图2.9DaDianNao的计算单元与存储器分布

首先,要纠正几个误区:第一,是不是小模型跑得比大模型快?这个显然是不成立,我们可以看下图中 Google Net 和 AlexNet 箭头指向的方向,AlexNet 显然大一些,但它比 Google Net 跑得快一些,计算量更小一些。第二,网络计算量小是不是就跑得更快呢?其实也不是,因为最终的运行速度取决于计算量和带宽,计算量只是决定运行速度的一个因素。

2.1、流式处理与数据复用

流式处理是应用于FPGA和专用ASIC高效运算结构,其核心是基于流水线的指令并行,即当前处理单元的结果不写回缓存,而直接作为下一级处理单元的输入,取代了当前处理单元结果回写和下一处理单元数据读取的存储器访问。多核CPU和GPU多采用数据并行构架,与流式处理构架的对比如图2.1所示。图左为数据并行的处理方式,所有运算单元受控于一个控制模块,统一从缓存中取数据进行计算,计算单元之间不存在数据交互。当众多计算单元同时读取缓存,将产生带宽竞争造成瓶颈;图右为基于指令并行的二维流式处理,即每个运算单元都有独立的指令(即定制运算逻辑),数据从相邻计算单元输入,并输出到下一级计算单元,只有与存储相邻的一侧存在数据交互,从而大大降低了对存储带宽的依赖,代表为FPGA和专用ASIC的定制化设计。

图片 14

图2.1 数据并行与流式处理的对比

图片 15

图2.2 一维脉动阵列(上)TPU中的二维脉动阵列(下)

当流式处理中各个处理单元(Processing Element, PE)具有相同结构时,有一个专属名称——脉动矩阵,一维的脉动矩阵如图2.2(上)所示。当一个处理单元从存储器读取数据处理,经过若干同构PE处理后写回到存储器。对存储器而言,只需满足单PE的读写带宽即可,降低了数据存取频率。脉动架构的思想很简单:让数据尽量在处理单元中多流动一段时间。当一个数据从第一个PE输入直至到达最后一个PE,它已经被处理了多次。因此,它可以在小带宽下实现高吞吐[1]。

TPU中采用的二维脉动阵列如图2.2(下)所示,用以实现矩阵-矩阵乘和向量-矩阵乘。数据分别从Cell阵列的上侧和左侧流入,从下侧流出。每个Cell是一个乘加单元,每个周期完成一次乘法和一次加法。当使用该脉动阵列做卷积运算时,二维FeatureMap需要展开成一维向量,同时Kernel经过旋转,而后输入,如TPU专利中的图2.3所示。

图片 16

图2.3 TPU专利中,脉动阵列在卷积运算时的数据重排

在极大增加数据复用的同时,脉动阵列也有两个缺点,即数据重排和规模适配。第一,脉动矩阵主要实现向量/矩阵乘法。以CNN计算为例,CNN数据进入脉动阵列需要调整好形式,并且严格遵循时钟节拍和空间顺序输入。数据重排的额外操作增加了复杂性,据推测由软件驱动实现。第二,在数据流经整个阵列后,才能输出结果。当计算的向量中元素过少,脉动阵列规模过大时,不仅难以将阵列中的每个单元都利用起来,数据的导入和导出延时也随着尺寸扩大而增加,降低了计算效率。因此在确定脉动阵列的规模时,在考虑面积、能耗、峰值计算能力的同时,还要考虑典型应用下的效率。

寒武纪的DianNao系列芯片构架也采用了流式处理的乘加树(DianNao[2]、DaDianNao[3]、PuDianNao[4])和类脉动阵列的结构(ShiDianNao[5])。为了兼容小规模的矩阵运算并保持较高的利用率,同时更好的支持并发的多任务,DaDianNao和PuDianNao降低了计算粒度,采用了双层细分的运算架构,即在顶层的PE阵列中,每个PE由更小规模的多个运算单元构成,更细致的任务分配和调度虽然占用了额外的逻辑,但有利于保证每个运算单元的计算效率并控制功耗,如图2.4所示。

图片 17

图片 18

图片 19

图片 20

图2.4 基于流式处理的计算单元组织结构:从上到下依次为DianNao、DaDianNao整体框架与处理单元、ShiDianNao、PuDianNao的总体框图和每个MLU处理单元的内部结构

除了采用流式处理减少PE对输入带宽的依赖,还可通过计算中的数据复用降低带宽,CNN中的复用方式如图2.5所示。

(a) (b) (c)

图2.5 CNN中的数据复用

在图2.5 的(a) (b)(c)分别对应卷积核的整张FeatureMap复用、一组FeatureMap对多组Filter的复用、Filter通过增加BatchSize而复用。当上述三种方式结合使用时,可极大提升数据复用率,这也是TPU在处理CNN时逼近峰值算力,达到86Tops/s的原因之一。

总之,地平线非常重视校招生及其培养,希望给大家更好的发展空间,培养一代又一代的地平线人,为公司创造更大的价值,为科技进步贡献自己的力量!

2.3、位宽压缩

在两年前,深度学习的定制处理器构架还处于初始阶段,在Inference中继承了CPU和GPU的32bit浮点量化,每次乘法运算不仅需要12字节的读写(8bit量化时为3字节),32位运算单元占用较大的片上面积,增加了能耗和带宽消耗。PuDianNao的论文中指出[4],16bit乘法器在ASIC占用面积上是32bit乘法器的1/5,即在相同尺寸的面积上可布局5倍数量的乘法器。当使用8bit时将获得更高收益。因此,学术界孜孜不倦的追求更低的量化精度,从16bit,到自定义的9bit[6],8bit,甚至更激进的2bit和1bit的二值网络[7-8]。当高位宽转为低位宽的量化时,不可避免的带来精度损失。对此,可通过量化模式、表征范围的调整、编码等方式、甚至增加模型深度(二值网络)来降低对精度的影响,其中量化模式、表征范围的调整方法如图2.10 所示。

(a) (b)

图2.10 (a) 几种量化模式,和 (b) 动态位宽调整

图2.10 (a) 中为不同的量化模式,同样的8bit,可根据模型中数值的分布情况采用为线性量化、Log量化、或非线性量化表示。图2.10 (b)是Jiantao Qiu等提出的动态位宽调整[9],使8bit的量化在不同层之间使用不同的偏移量和整数、小数分配,从而在最小量化误差的约束下动态调整量化范围和精度,结合重训练,可大幅降低低位宽带来的影响。在CNN模型中的测试结果见下表:

图片 21

低位宽意味着在处理相同的任务时更小的算力、带宽和功耗消耗。在算力不变的前提下,成倍的增加吞吐。对于数据中心,可大幅度降低运维成本,使用更少的服务器或更廉价的计算平台即可满足需求(TPU的数据类型即为8/16bit);对于更注重能耗比和小型化嵌入式前端,可大幅降低成本。目前,8bit的量化精度已经得到工业界认可,GPU也宣布在硬件上提供对8bit的支持,从而将计算性能提高近4倍,如图2.11所示。FPGA巨头Xilinx也在AI加速的官方文档中论述了8bit量化的可行性[10]。

图片 22

图2.11 NVIDIA对int8的支持

图片 23

下面进入关键点,即我们希望什么样的同学加入?用几个词来概括就是:Dedicated、 Hands-on、 Team working。

接下来讲一下在模型结构优化中,怎么去设计一个高效的神经网络结构,它需要遵循的一些基本原则。

介绍 AI 芯片之前,先介绍 AI 的大环境。大家都知道现在是机器学习时代,其中最具代表性的是深度学习,它大大促进图像、语音、自然语言处理方面的发展,同时也给很多行业带来了社会级的影响。例如在社交网络的推荐系统、自动驾驶、医疗图像等领域,都用到了神经图像技术,其中,在图像医疗,机器的准确率甚至大大超过了人类。

讲了这么多,最后我们可以展示一下,经过优化后的网络在主流视觉任务上的应用效果:

分享提纲

第一个是量化,它是指将连续的变量通过近似从而离散化。其实在计算机中,所有的数值表示都是离散化的,包括浮点数等,但是神经网络中的量化,是指用更低 bit 的数字去运行神经网络,而是不是直接使用 32bit 的浮点数(去运行神经网络)。近几年的一些研究发现,其实数值表达的精度对神经网络并没有太大的影响,所以常用的做法是使用 16bit 的浮点数去代替 32bit 的浮点数来进行计算,包括训练和前项预测。这个在 GPU 以及 Google 的 TPU 第二代中已经被广泛采用。此外,我们甚至发现,用半精度浮点数去训练数据,有时候还能得到更好的识别性能。实际上,量化本身就是对数据集正则化的一种方式,可以增加模型的泛化能力。

图片 24

能不能把精度压得更低呢,4 bit、2bit 甚至 1 bit?也是有的,但是会带来精度的极大损失,所以没被采用。

  1. 介绍当前 AI 芯片概况,包括现有的深度学习硬件发展情况,以及为何要为神经网络去设计专用芯片。
  2. 从算法角度,讲解如何设计高性能的神经网络结构,使其既满足嵌入式设备的低功耗要求,又满足应用场景下的性能要求。
  3. 分享高性价比的神经网络,在计算机视觉领域的应用,包括实时的物体检测,语义分割等。
  4. 地平线 2019 年最全的校招政策解读。

从整个互联网发展的情况来看,我们先后经历了 PC 互联网、移动互联网时代,而接下来我们最有可能进入一个智能万物互联的时代。PC 时代主要解决信息的联通问题,移动互联网时代则让通讯设备小型化,让信息联通变得触手可及。我相信在未来,所有的设备除了能够互联之外,还能拥有智能:即设备能够自主感知环节,并且能根据环境做出判断和控制。现在我们其实看到了很多未来的雏形,比如无人车、无人机、人脸开卡支付等等。不过,要让所有设备都拥有智能,自然会对人工智能这一方向提出更多要求,迎接更多的挑战,包括算法、硬件等方面。

此外,我们还可以将数据精度进行进一步压缩使用,将 8 bit 的整数作为计算的计算单元,包括训练和前项预测,这样带宽就只有 32bit 浮点数的四分之一,这类方法近年来也有不少工作,且已被业界所采用,比如 Tensorflow Lite 已经支持训练时模拟 8bit 整数的运算,部署时真正采用 8 bit 整数去代替,其在浮点和图像分类的性能上相当。我们地平线也有类似的工作,训练工具也是用 Int 8 bit 去训练、预测,并且我们的芯片支持 MXNet 和 TensorFlow 框架训练出来的模型。

Google 这次直接把手机上的运行速度作为强化网络的反馈。我们可以看到用这种方法搜索出来的网络结构合理很多,同时性能也比之前稍微好一些。

应用场景下用的更多的方案是 FPGA 或者 DSP,它们功耗比 GPU 低很多,但是相对的开发成本较大。DSP 依赖专用的指令集,它也会随着 DSP 的型号变化有所差异。FPGA 则是用硬件语言去开发,开发难度会更大。其实也有一起企业会用 CPU+FPGA 去搭建训练平台,来缓解 GPU 训练部署的功耗问题。

当前 AI 芯片发展的现状

我们先看 AI 解决方案,它从数据处理的方式可以分为云端 AI 和前端 AI。云端 AI 是说我们把计算放在远程服务器上去执行,然后把结果传到本地,这个就要求设备能够时刻连接网络。前端 AI 是指设备本身就能够进行计算,不需要联网,其在安全性、实时性、适用性都会比云端 AI 更有优势,而有一些场景下,也只能使用嵌入式的前端 AI 去解决。

第一,当前 AI 芯片发展的现状。这里的 AI 芯片并不是单指狭义的 AI 专用芯片,而是指广义上包括 GPU 在内所有可以承载 AI 运算的硬件平台。

近日,在雷锋网 AI 研习社第 2 期职播间上,地平线初创人员黄李超就介绍了 AI 芯片的背景以及怎么从算法角度去设计适合嵌入式平台高效的神经网络模型,并应用于视觉任务中。之后地平线的 HR 也进行了招聘宣讲,并为大家进行了招聘解读。公开课回放视频网址:http://www.mooc.ai/course/537/thread?page=3?=aitechtalkhuanglichaokhuanglichao

下面展示一下我们算法在 FPGA 平台上实施的一个 Demo。

在讲这个问题之前,我们先从神经网络的特性说起:

接下来我们介绍一下 AI 硬件的一些情况。大家都知道,最早神经网络是运行在 CPU 上的。但是 CPU 并不能非常高效地去运行神经网络,因为 CPU 是为通用计算而设计的,而且其计算方式以串行为主——虽然一些运行指令可以同时处理较多数据。除此之外,CPU 在设计上也花了很多精力去优化多级缓存,使得程序能够相对高效地读写数据,但是这种缓存设计对神经网络来讲并没有太大的必要。另外,CPU 上也做了很多其他优化,如分支预测等,这些都是让通用的运算更加高效,但是对神经网络来说都是额外的开销。所以神经网络适合用什么样的硬件结构呢?

第二点,我们熟悉的摩尔定律其实在这几年也已经终结了。

校招流程:宣讲会当天笔试,当晚出笔试成绩,隔天进行面试,面试通过就会发录用意向书,十一后发正式 Offer。

所以说,一个好的、跑起来比较快的神经网络结构,必须要平衡计算量和带宽的需求,这里我们跟随 ShuffleNetV2 论文的一些观点——虽然这个并不是我们的工作,但是文章写得很好,其中有不少观点也和我们在模型结构优化过程中得到的一些结论是一样的。在分析的时候,我们以 1x1 的卷积为例,假设所有的参数和输入输出特征都可以被放到缓存当中,我们需要特别关注的是卷积的计算量——用 FLOPs(Float-Point Operations) 即浮点数的操作次数去表述,带宽用 MAC(Memorry Access Cost) 即内存访问的次数去表示。同时,我们需要额外关注的是带宽和计算量的比。对于嵌入式的设备来讲,带宽往往是瓶颈。拿 Nvidia 的嵌入式平台 TX2 为例,它的带宽比上计算力大概是 1:26。

图片 25

今天,我将从以下三个方面来进行分享:

第一,过去人们认为晶体管的尺寸变小,功耗也会变小,所以在相同面积下,它的功耗能保持基本不变,但其实这条定律在 2006 年的时候就已经终结了

说了这么多硬件知识,接下来我们讨论怎么样从算法角度,也就是从神经网络设计的角度去谈怎么加速神经网络。相信这个也是大家比较关心的问题。

讲到这里,我们做一下总结,设计高效的神经网络,我们需要尽可能让 operator 做并行化计算,同时去减少带宽的需求,因为最后的速度由带宽和计算量共同决定的,所以这两者哪个存在瓶颈,都会制约运行速度。

第二,在嵌入式设备的环境下如何设计高效的神经网络。这里我使用的案例都选自业界中比较重要的一些工作——也有一部分来自我们的地平线。同时这一节大部分的工作都已经落地到实际应用场景。

图片 26

而在第二版的 TPU 里面,已经能够支持训练、预测,也能够使用浮点数进行训练,单个 TPU 就有 45TFLOPS 的算力,比 GPU 要大得多。

图片 27

过去优化神经网络结构往往依靠非常有经验的工程师去调参,我们能不能直接让机器去自动搜寻网络结构呢?

图片 28

图片 29

地平线(「公司」)是国际领先的嵌入式人工智能(「AI」)平台的提供商。公司基于自主研发人工智能芯片和算法软件,以智能驾驶,智慧城市和智慧零售为主要应用场景,提供给客户开放的软硬件平台和应用解决方案。经过三年的发展,地平线现在有 700-800 的正式员工,加上实习生,大概有 900 人左右。同时,公司 70% 多的员工都是研发人员,我们的平均工业界经验为 7 年左右。

第二,神经网络运算的基本单元主要还是相乘累加,这就要求硬件必须有足够多的运算单元;

图片 30

原标题:干货 | 地平线:面向低功耗 AI 芯片上视觉任务的神经网络设计 | 职播间第 2 期

第三,算法+硬件在计算机应用上的一些成果。

4. 其他福利其他公司可能都有,但是我们公司会更贴心,比如电竞椅、升降桌,补充医疗、入职&年度体检、全天零食供应、餐补、交通补、租房补贴、带薪年假 10 天、产假 6 个月、陪产假 15 天、多彩 offsite、各种兴趣社团等等。

图片 31

图片 32

最常用的方案是 CPU+GPU,这个是深度学习训练的一个标配,好处是算力和吞吐量大,而且编程比较容易,但是它存在的问题是,GPU 的功耗比较高,延迟比较大,特别是在应用部署领域的场景下,几乎没有人会用服务器级别的 GPU。

比较值得一提的是,我们在我们的 BPU 架构上设计了弹性的 Tensor Core,它能够把图像计算所需要的基本单元,常用操作例如卷积、Pooling 等硬件化,非常高效地去执行这些操作。中间通过数据路由桥(Data Routing Bridge)从片上读取数据,并负责数据的传输和调度,同时,整个数据存储资源和计算资源都可以通过编辑器输出的指令来执行调度,从而实现更灵活地算法,包括各种类型的模型结构以及不同的任务。

除了量化,模型加速还可以通过模型剪枝和参数共享实现。一个典型的案例就是韩松博士的代表性工作——Deep Compression。减支可以是对整个卷积核、卷积核中的某些通道以及卷积核内部任意权重的剪枝,这里就不多说,大家有兴趣可以去看一下原论文。

与网络量化相比,剪枝和参数共享从应用角度上来看,并非一个好的解决方案。因为关于剪枝方面的研究,现在这些论文在大模型上做的比较多,所以在大模型上效果比较好,但是在小模型上的损失比较大,当然我们这里说的小模型是比 MobileNet 等模型更小的一些模型。另外,剪枝所带来的数据稀疏(任意结构稀疏),通常需要一个明显的稀疏比例才能带来一个实质性的的加速。结构化的稀疏加速比相对更容易达到,但是结构化的稀疏比较难训练。同时从硬件角度上讲,如果要高效地运行稀疏化的网络结构或者带共享的网络,就要专门设计硬件去支持它,而这个开发成本也比较高。

TAG标签:
版权声明:本文由澳门新浦金网站发布于互联信息,转载请注明出处:干货 | 地平线:面向低功耗 AI 芯片上视觉任务的