最近对人工智能领域的 AI 加速芯片感兴趣,在翻阅 Google 的第一代 TPU 论文时,在相关工作中看到了 DaDianNao,PuDianNao,ShiDianNao。看的我一脸懵逼,这是什么?汉语拼音吗?后来经过搜索,发现这是中科院计算所的一系列研究成果,后来直接催生了国内芯片独角兽 -- 寒武纪的诞生。

故事得从20年前说起,当时江西南昌有俩亲兄弟,哥哥叫陈云霁,弟弟陈天石。他们分别于97、01 年先后考入中国科学大学少年班学习,后来攻读研究生时,哥哥在计算所跟胡伟武(龙芯之父)做芯片方面研究,弟弟在中科大跟着陈国良、姚新做人工智能算法方面研究。08年的时候,他俩想合起来做一些人工智能芯片方面的事情。

2012年到2014年,俩兄弟和 当时任职于法国巴黎综合理工学院(Inria Saclay)的 Olivier Temam 教授一起合作,做人工智能加速器的研究。最开始叫做 electric brain,是一个电子的大脑,但是外籍教授 Olivier 说起个中国的名字,这样别人会觉得外国的东西,很有意思,很先进。于是就有了 DianNao 这个汉语拼音的名字了。中科院有专门页面介绍“DianNao”项目,项目的核心是提出了一系列定制的AI加速器的设计方案。

当时他们研究领域想要解决的三大矛盾是:

  1. 有限规模的硬件 vs 任意规模的算法:硬件出厂后就固定了,但是算法是研究员自己定义的,会是任意的
  2. 结构固定的硬件 vs 千变万化的算法:算法有图像、语音、自然语言处理等领域,而硬件构造在生产之后就固定了
  3. 能耗受限的硬件 vs 精度优先的算法:硬件功耗受制于场景是受限的,但是算法研究员希望精度越高越好

陈氏兄弟的解决之道:

  1. 虚拟化:没有让硬件运算单元和算法神经元一一对应起来,而是采用了对小尺度神经网络分时复用的方法来支持任意规模的神经网络
  2. 智能指令集:自动化抽取各种深度学习算法共性基本算子,设计首个深度学习指令集来高效处理算法。
  3. 利用神经网络对于计算误差的容忍能力,进行稀疏化神经网络处理,这样降低了功耗,提高了精度。

他们设计出了第一个加速器 DianNao--电脑。第二个加速器叫DaDiannao -- 大电脑。这个是 DianNao 的多核版本,通过多片设计,可以将较大的模型放在加速器(芯片)的内存上运行,提高效率。第三个加速器ShiDianNao -- 视电脑:将 AI 加速器与传感器直连,从而减少内存通讯的开销,是属于端/边侧摄像头上的 AI 加速器。电脑和大电脑只能做深度学习处理,还有很多其他的人工智能算法, 怎么去支持?于是就有了 PuDianNao -- 普电脑。它比较普世,能支持很多机器学习算法。PuDianNao 也是 DianNao 项目的最后一个工作。我大胆猜测是因为再接着做下去,围绕电脑起名很困难。后来16年时他们提出了国际首个神经网络通用指令集 DianNaoYu -- 电脑语。这些指令集相当于深度学习算法界的乐高积木,是算法研究员与加速器打交道的唯一接口。

他们当时的 DianNao 论文获得了这个领域最重要的国际会议 -- ASPLOS 的最佳论文奖。这也是亚洲地区,第一次在计算机体系结构的这种顶尖的国际会议上拿奖。他们研究最大的创新点在于前人做的不是一个完备的处理器,只能说是一个神经网络功能部件,只适用于特定大小的神经网络。而他们的工作是一个真正意义上完备的处理器,能够支持任意规模的神经网络。打个比方,只能处理两个数相加,而不能处理10000甚至任意个数相加的硬件,只能叫加法器,而不能叫处理器。

后来弟弟陈天石从中科院出来创办了寒武纪,哥哥也一起合伙。但半年之后,哥哥因为觉得还是喜欢搞科研,所以又回到了中科院。

对上述内容感兴趣的朋友可以去看看 B 站上 陈云霁的智能之芯视频。大佬演讲风趣幽默,着装朴实,让人印象深刻。有两篇陈天石的采访放到了文末,从文章来看很清楚自己的能力边界,他强调了多次,做好本职工作,好好搬砖,感觉就是对有志青年的淳淳教导。

彩蛋

2015 年,陈天石有一次“问我任何事”的活动,我翻看了里面的问题,有好几个问题非常有意思。比如有人会问中科大的神通、天才和普通人的区别,还有家长因为孩子无法成为神通而苦恼。对这些问题,他没有一贯我们看到的好为人师的印象,回答很有借鉴意义,能给现在焦虑的家长们一些启发,点击阅读原文可以查看。

参考资料

  1. 甲小姐对话陈天石:AI芯片市场广阔,寒武纪朋友遍天下 | 甲子光年
  2. 甲小姐对话陈天石:通往伟大芯片公司的赛程很长
  3. 智能之芯

欢迎关注我的微信公众账号,会在第一时间更新,博客园上只有部分文章会发布

人工智能顶级会议最佳论文里的“DaDianNao”是什么鬼?的更多相关文章

  1. 阿里云安全研究成果入选人工智能顶级会议 IJCAI 2019, 业界首次用AI解决又一难题!

    8月10日至8月16日,国际人工智能组织联合会议IJCAI 2019(International Joint Conference on Artificial Intelligence 2019)在中 ...

  2. 在计算机视觉与人工智能领域,顶级会议比SCI更重要(内容转)

    很多领域,SCI是王道,尤其在中国,在教师科研职称评审和学生毕业条件中都对SCI极为重视,而会议则充当了补充者的身份.但是在计算机领域,尤其是人工智能与机器学习领域里,往往研究者们更加青睐于会议 我无 ...

  3. 计算机顶级会议Rankings && 英文投稿的一点经验

    英文投稿的一点经验[转载] From: http://chl033.woku.com/article/2893317.html 1. 首先一定要注意杂志的发表范围, 超出范围的千万别投,要不就是浪费时 ...

  4. InfoQ一波文章:AdaSearch/JAX/TF_Serving/leon.bottou.org/Neural_ODE/NeurIPS_2018最佳论文

    和 Nested Partition 有相通之处? 伯克利提出 AdaSearch:一种用于自适应搜索的逐步消除方法 在机器学习领域的诸多任务当中,我们通常希望能够立足预先给定的固定数据集找出问题的答 ...

  5. ICRA 2019最佳论文公布 李飞飞组的研究《Making Sense of Vision and Touch: Self-Supervised Learning of Multimodal Representations for Contact-Rich Tasks》获得了最佳论文

    机器人领域顶级会议 ICRA 2019 正在加拿大蒙特利尔举行(当地时间 5 月 20 日-24 日),刚刚大会公布了最佳论文奖项,来自斯坦福大学李飞飞组的研究<Making Sense of ...

  6. AAAI 2021 最佳论文公布

    ​ 作者:Synced 翻译:仿佛若有光 第三十五届 AAAI 人工智能会议 (AAAI-21) 以虚拟会议的形式拉开帷幕.组委会在开幕式上公布了最佳论文奖和亚军.三篇论文获得了最佳论文奖,三篇被评为 ...

  7. FPGA 17最佳论文导读 ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 后面陆续写一些关于神经网络加 ...

  8. ACM TOMM 2017最佳论文:让AI接手繁杂专业的图文排版设计工作

    编者按:你是否曾经为如何创作和编辑一篇图文并茂.排版精美的文章而烦恼?或是为缺乏艺术灵感和设计思路而痛苦?AI技术能否在艺术设计中帮助到我们?今天我们为大家介绍的这篇论文,“Automatic Gen ...

  9. zz2019年主动学习有哪些进展?答案在这三篇论文里

    2019年主动学习有哪些进展?答案在这三篇论文里 目前推广应用的机器学习方法或模型主要解决分类问题,即给定一组数据(文本.图像.视频等),判断数据类别或将同类数据归类等,训练过程依赖于已标注类别的训练 ...

随机推荐

  1. springMVC入门(八)------拦截器

    简介 springMVC拦截器针对处理器映射器进行拦截配置 如果在某个处理器映射器中配置拦截,经过该处理器映射器映射成功的Handler最终使用该拦截器 由于springMVC支持配置多个处理器映射器 ...

  2. 算法-排序(1)k路平衡归并与败者树

    const int MaxValue=; //根据实际情况选择最大值 void kwaymerge(Element *r,int k){ int i,q; r=new Element[k]; //在败 ...

  3. python - 常用数据清洗方法-重复项处理

    在数据的处理过程中,一般都需要进行数据清洗工作,如数据集是否存在重复,是否存在缺失,数据是否具有完整性和一致性,数据中是否存在异常值等.发现诸如此类的问题都需要针对性地处理,下面我们一起学习常用的数据 ...

  4. Java数据结构——二叉树的遍历(汇总)

    二叉树的遍历分为深度优先遍历(DFS)和广度优先遍历(BFS) DFS遍历主要有: 前序遍历 中序遍历 后序遍历 一.递归实现DFSNode.java: public class Node { pri ...

  5. 软件工程第二次作业(Junit和GoogleTest)

    使用Eclipse的Junit框架进行单元测试 一.前言 我的电脑因为以前学过安卓开发,已经安装好了eclipse,看了邹欣老师的博客,博客上讲的的非常详细,所以在进行的过程中遇到困难,基本都能解决. ...

  6. 时间转换c#

    简要 本篇文章主要介绍基于.net(c#)封装的时间帮助类.主要功能是将时间戳与DateTime类型相互转换. 1.其中包括将毫秒级时间戳(13位).秒级时间戳(10位)转换为DateTime. 2. ...

  7. 原生 JavaScript30 练习 Day 1 (原生JS控制键盘模拟击鼓)

     代码如下   <!DOCTYPE html> <html lang="en"> <head>     <meta charset=&qu ...

  8. 贝塞尔曲线(B-spline)的原理与应用

    什么是贝塞尔曲线? 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线. 来源 贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔(Pierre Béz ...

  9. 使用rabbitmq过程中遇到的问题及解决方法记录。

    OS: Linux ---Centos7RabbitMQ版本:RabbitMQ version: 3.8.1erlang版本:Erlang configuration: Erlang/OTP 22 [ ...

  10. 递推dp数位

    1-n里有多少个1 #include <cstdio> #include <iostream> using namespace std; int main() { int n= ...