亚太智媒
关闭

亚太智媒APP, 全新登场!

点击下载

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

独家观点

2019-01-26 14:02

文|脑极体

如果要为手机行业的未来寻找一个技术锚点,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功能自然也就越来越多。

未来脑洞:浮点运算谱写的手机功能狂想曲

这里不妨一起开一下脑洞,浮点运算能力的提升,有可能帮助哪些手机ai应用驶上快车道?

目前看来,至少在以下三个方面存在无限可能:

1.流数据处理。浮点运算能力直接影响处理器的多媒体、3D图形处理,从而改变大量多媒体技术应用的体验。

比如实时大规模的数据运算能力,让人脸识别、人像分割、视频风格化、虚拟现实等技术在端侧进行,更高耦合度的有趣应用(比如annimoji、虚拟主播等)也从理论变为现实,作用于视频、直播、摄影等功能,创造出新的功能亮点。

2.识别功能。手机ai功能的另一个特点,则是识别和决策能力,比如识别文字(翻译)、图片(摄影)、商品(购物)、情绪(交互)、场景(主动服务)等等。

浮点运算能力的进一步提升,将让手机的智能化、人格化成为可能,从工具进化成真正的智慧伴侣。

3.IoT。更进一步,越来越多的智能硬件进入ai交互模式,如果手机的计算传输效率被攻破,那么完全可以作为众多IoT设备的大脑中枢,让智能硬件交互围绕手机端展开。

手机操作和管理智能家电、无人汽车、体联网设备等,将为产业创造出新的价值点。

总体而言,浮点计算的进一步发展,带给手机的核心改变在于,ai任务所需要的大规模并行运算将不再是问题。

澎湃的算力为厂商和开发者搭建了新的想象力舞台。如何利用好这一红利,放飞脑洞创造新应用,构想出未知功能,或许是接下来各个玩家拉开竞争差距的关键机遇。

再多说两句……

当然,在看重浮点运算能力之时,不能忽略这样一个现状:浮点运算只是移动ai基础能力的一个组成部分。它与处理器能力、內存的多少、算法的优劣,甚至操作系统、应用开发等等因素综合做功,才最终决定一部手机ai输出能力。

因此,对于手机厂商来说,除了单点性能的提升之外,也需要在生产成本、开发者生态、市场教育等方面同时发力,最大限度促进移动应用的ai化,才能最终让算力的提升真正释放到移动端软硬件上,化为真实可感的用户体验及产业价值增长点。

到那个时候,用户也就不需要再为复杂的数值和技术名词所苦恼,直接从体验上就能感知到不同手机之间的巨大差异。

从这个角度看,浮点计算背后所隐藏的,不仅是ai的真实价值,更是手机产业的新起跑线。