资讯 业界
此为临时链接,仅用于文章预览,将在时失效

ours谭章熹:开源risc-米乐m6平台

2018/07/09 14:48

雷锋网按:2018 全球人工智能与机器人峰会(ccf-gair)在深圳召开,峰会由中国计算机学会(ccf)主办,雷锋网、香港中文大学(深圳)承办,得到了宝安区政府的大力指导,是国内人工智能和机器人学术界、工业界及投资界三大领域的顶级交流盛会,旨在打造国内人工智能领域最具实力的跨界交流合作平台。在7月1日,峰会的ai芯片专场上,ai芯片领域的专家和业内人士们齐聚一堂,对ai芯片的未来展开了深入的探讨。

ours创始人兼ceo谭章熹

其中,ours创始人兼ceo谭章熹在会上做了《开源risc-v指令架构与ai芯片》的发言,他指出,risc-v作为软硬件接口的指令架构,对ai芯片提供了非常重要的基础。ours作为risc-v非常直接的参与者,将很快推出开源ai芯片。这家位于美国硅谷的ai芯片初创公司未来或将成为ai芯片领域极大的变量。以下是谭章熹在ccf-gair 2018上的演讲全文,雷锋网在不改变原意的基础上进行了编辑:

ai芯片发展三大历史阶段回顾

ai芯片是最近非常热的话题,ai芯片并不能说是非常新的课题。在历史发展来讲,至少发展了三代。接下来我们回顾ai芯片发展的三大历史阶段。

·第一,1950-1960年代,rosenblatt最早发现神经元perceptron,他发明这个东西以后做了一个模拟计算的计算机,这是第一代模拟计算机mark 1 perceptron,可调电位器模拟可编程参数。xor很难实现,一段时间后变得不太流行。

·第二,1980年代末到1990年代初,算法发现关于back propagation,对模型进行训练,那时候很多人做语等方面的ai研究,网络模型基本是2-3层。由于出现back propagation,所以出现了很大的计算量需求(用于模型训练),当时的计算机并不是非常强大。那时候很多人说自己做计算机用于加速ai训练。当时主流ai是symbolic ai,同时使用lisp/prolog编程。网络大小是2-3层左右,比较有代表性的是1985年推出的connection machine,每一代有不同的改进。主要应用是做训练的,包括symbolic ai。

·第三,2010年开始的深度学习,网络大概是3至3层以上,摩尔定律遇到瓶颈,难以通过工艺实现性能的提升。大家突然对定制化ai芯片有了非常大的兴趣。代表计算机还不太清晰,这里省略五六十家ai创业公司。

摩尔定律失效  amdahl定律依然存在

随着三代ai芯片发展下来,每一代的发展都能学到一些东西,这是我个人总结出来的几点:

·第一,ai的计算很重要,但不要忽视缓存、内存系统架构,你需要有足够的容量。容量大了以后,必须对动态内存进行缓存。如何设计片上内存,用分布式设计的效率并不是很高,就像我们盖房子似的,内存架构设计有很多,并不是只适用于一种软件算法。

·第二,软件非常重要,没有软件就没有ai芯片。芯片先完成,但不停的更新软件算法。99%的工作是软件、开发工具sdk,我们在不断的做训练。软件随着算法发展的速度,每6个月会出现新算法。当你做芯片时,要考虑到硬件是否适用未来6个月的算法,这一点非常重要。这么多年下来,大家对算法的实现通常情况是用手工方式,效率非常高,高于自动生成的100倍,大概是两个数量级的效率。坏处是手工做,对算法的要求非常高。现在你看到tensorflow,就是为了提高编程效率, 但其核心实现相当复杂。

·第三, alu的性能通常描述是多少tops,例如每秒可以做多少乘法。实际ai芯片是随着数据的存储和数据流动,alu单元能够变成百分百能工作的时候并不高,memory的存储也是同样的道理,只有小部分缓存是活动的。很多时候说如何提高alu设计利用率和缓存架构问题。

·第四,第三代ai芯片出现,摩尔定律基本走到尽头,我们遇到物理极限,新工艺越来越昂贵。相反amdahl定律,(它谈到的是串行和并行关系):虽然很多部分可以做并行化,但总是有很大一部分的程序还是串行执行的,通常串行部分之星效率决定了系统性能。虽然现在摩尔定律失效了,amdahl定律依然存在。

现代ai芯片架构,通常会选用cpu中央处理器 ai加速器的方式,通常移动方案我们会选用arm处理器,服务器用得最多的是intel。接口是通用的,随着cpu的定义,axi是arm的接口标准,pcle是英特尔本身控制的。

案例:google tpu,这是第二代tpu,把这个东西挂pcle上,作为加速器的方式存在。很多人认为google靠着围棋tpu战胜人类是一个巨大的创新。从计算机系统架构角度来讲,这个想法并不是google最先提出的。1992年时,西门子发明machine synapse-1,这是可以花钱买到的机器。它的架构和现在google看到的架构非常像,挂在企业处理器上。就ai芯片来讲,对于计算机结构来说没有什么是新的。

90年代,随着语音应用的出现,出现很多神经计算机、加速器,没有获得成功。现在我们用得比较多的是gpu,回顾历史,90年代专用neurocomputer是做back propergation,出现了很多专有计算机。1996年,英特尔推出mmx扩展指令集,这个拓展指令集当时放在cpu里,完全跟cpu集成起来,主要用于做视频编解码。由于当时英特尔使用的工艺,其微处理器工艺远远好于其他公司,当它发明mmx后,mmx本身有一定的并行计算能力,可以用于这个训练。加上良好的工艺和处理器技术,可以解决很多神经网络训练问题。随着英特尔cpu出现,人们发现很多语音算法可全部跑在英特尔处理器上,(完全不需要专门设计的神经网络计算机),这导致了当时专用的nerocomputer没有获得成功。

gpu是比较有意思的东西,开始的发展在neurocomputer之后,当时用于图形、3d游戏,把算法固化, 有一定浮点计算能力。2001-2005年,随着图形的发展,出现了可编制shader。新语言是cg,每一个像素点可以进行编程,非常简单的编程以及非常简单的计算。当时有人问这个东西(pixel shader)是否可以用于通用计算,答案是可以的,但有很多限制。2006年nvidia随着geforce8800的推出,发明了cuda可编程框架,这是最早的gpgpu的原形。当然,除了cuda,也出现了其他一些的gpgpu编程环境,如opencl。到现在为止,真正用于做神经网络训练、适用新算法的,在服务器端是gpu,没有更新的东西出现。

总结,我们看到90年代gpu的成功,主要由于编程框架对ai芯片是非常重要的。nvidia因为做了cuda,所以有了gpgpu。用一般编程来做,不需要用machine的模型。所以软件架构对ai来说是非常重要的模型。

指令集对于ai芯片至关重要 

提到软件,我们要提到一件事,软件和硬件的接口,这是我们现在所说的指令集、指令架构例如mmx,它也是指令架构。现在的就指令架构有几个问题:为什么英特尔不能在手机、平板处理成功?现在有99%平板手机是arm市场基本是v7和v8架构为基准;为什么arm不能在服务器上成功?因为英特尔99%的服务器、笔记本用的是amd64指令架构(其中超95%由英特尔生产);为什么ibm到现在为止还在销售非常老旧的大型机?美国报税系统也是大型机。ibm360是一款经典的大型机,是现在拥有最古老的指令架构,将近50年历史。当年阿波罗登月用的就是ibm360,现在还在使用。

为什么有这些情况出现,是由于指令架构是软硬件非常重要的接口,如果我们要做ai芯片,指令集是避免不了的事情。

soc系统架构:这是nvidia tegra soc,首先有应用程序处理器,里面用的是arm、图形处理器,像nvidia cuda,我们还有无线电dsp、音频dsps、安全处理器、电源管理处理器等。这里有很多处理器,每个处理器都在使用自己的指令架构,每个指令架构从软件角度来讲都过于庞大。由当你做soc,很多cpu、gpu都是从ip的方式买来的,每个ip都有自己的专用平台指令集。有时候不同的厂商会开发不同的指令架构。一个商业soc下来,里面可能有数十个指令架构,不同的指令架构有不同的软件系统。

这是一个非常复杂的事情,看ai芯片也涉及指令架构问题。我们回顾一款经典ai芯片,这是berkeley的芯片,当时的想法是cray是世界上一个向量计算机,用向量处理器、标量处理器、cpu,当时之所以这么做的原因是我们知道超算是非常干净的编程模型。这是我们最后做出来的45兆、720兆,大概16.75mm^2的处理器。我们用到32-bit mips cpu核。我们考虑cpu核有争论,是购买还是自己做?那时候mips有r3000,它有协处理器接口,当时没有软核,也没有逻辑综合。所以我们决定自己做,这不光是实际客观原因,也包括技术原因。我们用到向量处理器,它对cache的影响非常大,处理器的接口效率非常低。商业处理器,所谓的glue logic非常庞大,从面积、功耗来讲都不是非常有效率。非常重要的一点是我们没有完整的系统模拟器,当我们做经典ai芯片时,这个芯片是为了语音做的,里面遇到现在我们遇到的所有问题。现在我们做ai芯片时,同时可以问这个问题,相信这些问题是存在的。这里的目的是想给大家一个概念,为什么cpu和指令架构非常重要,不光是ai加速器,处理器本身也是非常重要的。

2000年左右有以linux为代表的开源软件,开源软件和开源标准获得非常大的成功。网络界出现ethernet、many、tcp/ip,有很多开源实现,也有私有实现。现在操作系统有开源的标准,如posix系统,linux、freebsd、windows也是遵循它。编译器是sql,开源实现mysql和postgressql,私有实现oracle和m/s db2。图形标准是opengl,开源实现mesa3d,私有实现m/s directx。我们有指令集,同时有私有化实现。图形也是同样的道理,既然指令这么重要,可我们却没有开源指令标准。因为这个东西非常有用,所以还是出现非常多私有化实现,包括x86、arm、ibm360。risc-v fit i n这个table,是个开源标准,也有一些开源的实现。

risc-v的起源与对ai芯片的改变

我们真正需要很多指令集吗?而且每个都靠花钱才能拿到的,这些指令必须是私有控制的吗?为什么不能有一个通用的且开放的免费指令集系统。risc-v的诞生就是为了回答这几个问题。

risc-v的起源,在2010年左右,也可以说我们是和第三波ai同时起源的。当时我们为新项目选架构,我们看了所有可选的指令架构,例如mips、sparc和x86。berkeley,当时主要考虑的是x86和arm比较多,但都有很多问题。我们知道arm现在从v7到v8,现在发明到v8.1,加了很多指令,有很多指令的拓展。这是arm的指令架构,v8设计之初本来目的是有一个干净的指令架构,可是实际在每一版本的迭代过程中都会arm都会增加很多新功能,它会变成一个“胖子”,而且是越来越胖。据说现在做到v9。

risc-v起源故事:当时我们看了x86和arm,x86是不太可能,ip问题,实现复杂度太高。我上大学时,教授说等你毕业时,英特尔会加上两三千条指令。现在看来确实如此。当时arm几乎不可能,也没有推出64位处理器,同时具有很多ip法律问题,复杂度也不低。虽然它号称是advance risc machine,但实际上是个复杂的cisc machine。所以我们开发了新的,也就是大家所知道的risc-v指令架构。四年后(2014年时)发布第一个公开标准,我们在berkeley做了很多流片,从第一天诞生起,它是为了加速器的研究所设计的。第一天就是为了支持加速器和ai。正确读法应该是risc-five,而不是risc-v。这在berkeley发展了5代,第1代最早,在80年代初。soar(risc-3)是大家不太熟悉的,spur(risc-4)有很多大佬是这里毕业的。2011年是risc-v。

risc-v有什么不同?首先,它非常简单和非常干净的设计。用户指令和特殊指令分开,它是模块化的,可以做自己定制化的模块和扩展,有足够的指令空间做定制化。它是稳定的架构,当我们定了risc-v本身的基准指令后,不会再有变化。要想增加新的指令,可以通过扩展子集实现,而不是加强新版本,这对稳定性来讲非常重要。

为了维护risc-v的标准,我们成立了risc-v基金会。现在也有中国企业在其中,目前这个基金会里大概有150家公司。所有的大公司,除了英特尔和arm以外 (直接竞争手段),其他都在里面。

总结,risc-v作为软硬件接口的指令架构,对ai芯片提供了非常重要的基础,它有非常好的标准指令子集,有编译器、linux支持,它没有任何法律的问题。这样的灵活性使得自由修改ai扩展是非常容易的事情。ours是一个创业公司,我们的目的是使用risc-v让所有企业以最低的门槛使用ai risc-v芯片。我们是risc-v非常直接的参与者,有多次risc-v芯片流片的经历,我们很快会推出基于risc-v的开源ai芯片。算法很重要,软件很重要,对特殊领域的支持,比如domain-specific knowledge才是ai芯片的根本。

长按图片保存图片,分享给好友或朋友圈

ours谭章熹:开源risc-v指令架构与ai芯片 | ccf-gair 2018

扫码查看文章
米乐m6平台

正在生成分享图...

取消
相关文章
网站地图