专栏名称: 脑极体
你的困惑,来自于无路贴近未知。我们在技术、思想、传播的异界,贩来极限脑量下的TMT。
目录
相关文章推荐
北京厚朴中医  ·  厚朴电子日历 ·  2 天前  
北京厚朴中医  ·  厚朴电子日历 ·  3 天前  
北京厚朴中医  ·  在茶汤里体验“寒热温凉,升降沉浮” ·  3 天前  
北京厚朴中医  ·  筑基十一期招生开启——学习中医、厚朴筑基 ·  4 天前  
51好读  ›  专栏  ›  脑极体

撑起移动AI江山的浮点计算,到底是如何工作的?

脑极体  · 公众号  ·  · 2019-01-25 20:32

正文

如果要为手机行业的未来寻找一个技术锚点,AI绝对当之无愧。


不仅厂商们纷纷孵化出了众多或真或假的手机AI软硬件解决方案,消费者决策也开始越来越多地向手机的AI应用倾斜。与此同时,AI也让手机性能的理解和认知门槛变得越来越高高了。


比如在众多AI手机硬件评测中,普遍堆砌着一大堆玄幻的技术名词和数值。具体强在哪里,能够优化哪些功能,别说普通消费者,很多程序员都未必能说出个所以然。



举个例子,移动AI芯片的指标中,都离不开浮点数的运算能力,也就是FLOPS(floating point operations per second,每秒计算的浮点数目多少),作为评估手机性能强弱的标准之一。


那么,浮点运算究竟是怎样工作的?为什么会成为手机AI性能的评测标准?又将对我们的生活起到什么帮助?还真是云里雾里捉摸不透。


今天我们就来尝试用说人话的方式回答一下这些问题,通过浮点计算这个小切口,窥视一下手机AI技术版图的冰山一角。


什么是浮点计算?


首先有必要解释一下,什么是浮点计算。


通俗来说,就是一种可以通用表示所有数字的科学计数法。它的表示形式为0.*****×10^***,其中小数点前面是定点小数,后面则是一个定点整数(10的N次方)。比如传统的1024整数,浮点数就表示成0.1024×10^4。


不难发现,浮点数可以表示出任意一个整数和小数,并且比普通格式的计数方式数位更长,因此计算难度和精度也更高。而利用浮点数进行的运算就是浮点运算。


浮点运算到底有多重要呢?这么说吧,目前所有的计算机处理器都采用的是浮点运算,手机AI芯片也是以浮点运算能力为基础展开的。


这种运算能力究竟蕴含着怎样的能量?又是如何取代定点计算成功上位的?



天选之子:浮点计算发展史


要搞清楚浮点运算的应用价值,有必要回溯一下,这种计算方式是怎么来的。


最早将“浮点运算”作为计算机处理引擎概念,是莱昂纳多·托雷斯和奎韦多在1914年提出的。直到1938年,第一个使用二进制浮点数的计算机Z1才正式诞生。1942年,第一个带有浮点运算硬件单元的计算机Z4出现。到了1946年,贝尔实验室推出的Mark V,已经可以实现十进制浮点数运算。


在接下来的数十年间,带有浮点运算硬件的“科学计算机”开始风靡。1985年,浮点运算的标准IEEE754问世。



而1989年英特尔i 486的推出,正式奠定了浮点运算在计算机历史上的基础地位,开始作为标准功能被应用在个人计算机上,处理器的浮点运算能力也成为重要的芯片性能评价指标,代表着硬件制作技术的不断进步。


进入AI时代,随着机器学习在电脑及手机等硬件端的普及,浮点运算更是有了新的用武之地。


各种主打AI功能的手机芯片,比如苹果A11、华为麒麟系列、高通845、谷歌PVC等等,都是以浮点运算作为基本运算单元。预计未来,还有更多的AI功能会以浮点运算展开,直接影响手机AI的发展进程和感官体验。


那么,为什么在处理AI任务时,浮点运算更加游刃有余呢?恐怕还要从它的特殊能力说起。


焦不离孟:

为什么移动AI离不开浮点运算?


浮点运算之所以成为手机AI芯片的标配,与新运算需求和传统硬件之间的矛盾是分不开的。


我们知道,AI任务大多是通过机器学习算法模仿神经网络来完成的,需要更大的算力和能效来支撑大型矩阵运算。



而传统CPU的运算逻辑,是进行多组运算并统筹全局,一次带动不同部类的系统工作,类似于多面手。在面对神经网络这样庞大、单一、重复的高并发任务指令时,就有点难以负荷。因此,浮点运算能力更高的GPU就取代CPU,成为AI芯片的首选。



其次,AI手机芯片不仅要更快地处理数据,保证使用中不卡顿,还要能够支撑大量多媒体技术应用,对手机画面进行更好的渲染和呈现,这种手机功能的升级需求,传统的定点运算力不从心,只能交给数位更长、精度更大的浮点运算。


总之,更多的深度学习任务、更大的算力需求、更高的计算精度,加上硬件本身的迭代升级,共同推动浮点运算成为移动AI性能的关键指标。


拉开差距:浮点运算的差异在哪里?


尽管市面上的AI芯片都拥有浮点计算能力,但最终的呈现效果却各不相同。


有的AI手机能够带你装X带你飞,有的则处理简单的识别任务都要等到天荒地老。它们之间的浮点运算能力又有哪些区别呢?


简单来说,评估AI芯片运算能力的指标主要有三个:


1.吞吐率(throughput)。处理AI任务需要支撑大规模的并行运算,而吞吐率就直接决定着芯片计算速度。这有点像水管,直径越大,可以同时对外流出的水就更多。


2.FLOPS。即每秒所执行的浮点运算次数。为了衡量吞吐率,就可以折算到具体的浮点操作数量上来。原则上来说,FLOPS越高,单位时间内处理的数据量越大,表现出的图像数量峰值也就越高,从而可以显示出更加细腻的图像。



3.精度。那么,是不是只要看FLOPS值就可以判断性能高低了呢?并不是。浮点数还会根据精度分为多种类型,以满足不同的计算需求,比如单精度、双精度、扩展双精度。


精度会根据任务场景、成本控制、产品线定位等来设计和应用,不同维度上的比较往往失于片面。比如英伟达就在geforce产品线中屏蔽了大部分的双精度单元,却在tesla产品线中全部打开。


总而言之,浮点运算性能对于3D图形处理和大规模并行任务的表现起到了至关重要的作用。


但其对手机性能的影响大小,取决于硬件设计、处理效率、数据精度等要素的综合做功。


从理论到应用:

浮点运算能给用户带来什么?


说了这么多技术上的东西,不难发现,浮点运算能力并不是只看数值就能够判断出来的。


而对于绝大多数人来说,可能也根本不care复杂的技术概念和参数表。消费者能够感知到的功能和实际价值,才是真正的意义所在。


那么落地到具体应用上,浮点运算究竟给端侧AI带来了哪些价值呢?主要体现在三个方面:


首先是带来了全新的视觉体验升级。


如今的手机新品发布会,要是不讲点机器视觉的应用,比如拍照识花、视频美颜、虚拟现实、人脸识别、游戏渲染等等,都不配被成为AI手机。而这些功能的实现,都离不开浮点运算保质保量的图像处理能力。



另一个改变则是浮点运算对终端算力的加持,减少了AI任务对云计算的过度依赖。


在端侧就能够完成一部分机器学习、神经网络方面的计算,一方面可以解决计算的延迟问题,让手机可以实时处理AI任务,运行更加流畅;另一方面,用户的信息无需全部上传到云端处理,安全性更有保障。


而更大的价值在于,浮点运算能力的提升,还能够帮助手机解锁更多的AI想象力。


浮点的计算速度本身就比定点运算要慢,如果能力欠佳,在面对神经网络和卷积运算的算力要求时,就会力不从心,不仅运算缓慢,还需要大量耗能。又慢又耗电,还要将各种各样的AI功能都加载到一部手机里,绝对是一场灾难。


幸好,移动芯片浮点运算能力的不断提升,正在打破手机端的算力桎梏,比如新的TPU就可以在神经网络运算上达到高计算吞吐量,同时能耗和物理空间都很小。


当运算能力不再是问题,移动端AI应用开发的活力也将被彻底释放,更多创意能够在手机端开花结果,可以被普通用户所感知到的AI功能自然也就越来越多。








请到「今天看啥」查看全文


推荐文章
北京厚朴中医  ·  厚朴电子日历
2 天前
北京厚朴中医  ·  厚朴电子日历
3 天前
北京厚朴中医  ·  在茶汤里体验“寒热温凉,升降沉浮”
3 天前
最绘画  ·  绘画里有一种美,叫丰满
7 年前
偃思君  ·  精细化思考&隐含假设
7 年前
中国证券投资基金业协会  ·  【声音】2017年第二季度全球开放式基金发展报告(一)
7 年前