Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

详解AI加速器(一):2012年的AlexNet到底做对了什么?

AI、机器学习深度学习的概念可以追溯到几十年前,然而,它们在过去的十几年里才真正流行起来,这是为什么呢?AlexNet 的基本结构和之前的 CNN 架构也没有本质区别,为什么就能一鸣惊人?在这一系列文章中,前苹果、飞利浦、Mellanox(现属英伟达)工程师、普林斯顿大学博士 Adi Fuchs 尝试从 AI 加速器的角度为我们寻找这些问题的答案。

图片

当代世界正在经历一场革命,人类的体验从未与科技如此紧密地结合在一起。过去,科技公司通过观察用户行为、研究市场趋势,在一个通常需要数月甚至数年时间的周期中优化产品线来改进产品。如今,人工智能已经为无需人工干预就能驱动人机反馈的自我改进(self-improving)算法铺平了道路:人类体验的提升给好的技术解决方案带去奖励,而这些技术解决方案反过来又会提供更好的人类体验。这一切都是在数百万(甚至数十亿)用户的规模下完成的,并极大地缩短了产品优化周期。

人工智能的成功归功于三个重要的趋势:1)新颖的研究项目推动新的算法和适用的用例;2)拥有收集、组织和分析大量用户数据的集中式实体(例如云服务)的能力;3)新颖的计算基础设施,能够快速处理大规模数据。

在这个系列的文章中,前苹果、飞利浦、Mellanox(现属英伟达)工程师、普林斯顿大学博士 Adi Fuchs 将重点关注第三个趋势。具体来说,他将对 AI 应用中的加速器做一个高层次的概述——AI 加速器是什么?它们是如何变得如此流行的?正如在后面的文章中所讨论的,加速器源自一个更广泛的概念,而不仅仅是一种特定类型的系统或实现。而且,它们也不是纯硬件驱动的。事实上,AI 加速器行业的大部分焦点都集中在构建稳健而复杂的软件库和编译器工具链上。

以下是第一部分的内容,其余部分将在后续的文章中更新。

人工智能不仅仅是软件和算法

AI / 机器学习 / 深度学习的概念可以追溯到 50 多年以前,然而,它们在过去的十几年里才真正流行起来。这是为什么呢?

很多人认为,深度学习的复兴始于 2012 年。当时,来自多伦多大学的 Alex Krizhevsky、Ilya Sutskever、Geoffrey Hinton 等人提出了一个名为「AlexNet」的深度神经网络并凭借该网络赢得了 2012 年大规模视觉识别挑战赛的冠军。在这场比赛中,参赛者需要完成一个名叫「object region」的任务,即给定一张包含某目标的图像和一串目标类别(如飞机、瓶子、猫),每个团队的实现都需要识别出图像中的目标属于哪个类。

AlexNet 的表现颇具颠覆性。这是获胜团队首次使用一种名为「卷积神经网络(CNN)」的深度学习架构。由于表现过于惊艳,之后几年的 ImageNet 挑战赛冠军都沿用了 CNN。这是计算机视觉史上的一个关键时刻,也激发了人们将深度学习应用于其他领域(如 NLP、机器人、推荐系统)的兴趣。

图片

ImageNet 挑战赛冠军团队的分类错误率逐年变化情况(越低越好)。

有意思的是,AlexNet 的基本结构和之前那些 CNN 架构并没有太大区别,比如 Yann LeCun 等人 1998 年提出的 LeNet-5。当然,这么说并不是想抹杀 AlexNet 的创新性,但这确实引出了一个问题:「既然 CNN 不是什么新东西,AlexNet 的巨大成功还可以归因于哪些要素呢?」从摘要可以看出,作者确实使用了一些新颖的算法技术:

「为了加速训练,我们用到了非饱和神经元和一个非常高效的 GPU 卷积操作实现。」

事实证明,AlexNet 作者花了相当多的时间将耗时的卷积操作映射到 GPU 上。与标准处理器相比,GPU 能够更快地执行特定任务,如计算机图形和基于线性代数的计算(CNN 包含大量的此类计算)。高效的 GPU 实现可以帮他们缩短训练时间。他们还详细说明了如何将他们的网络映射到多个 GPU,从而能够部署更深、更宽的网络,并以更快的速度进行训练。

拿 AlexNet 作为一个研究案例,我们可以找到一个回答开篇问题的线索:尽管算法方面的进展很重要,但使用专门的 GPU 硬件使我们能够在合理的时间内学习更复杂的关系(网络更深、更大 = 用于预测的变量更多),从而提高了整个网络的准确率。如果没有能在合理的时间框架内处理所有数据的计算能力,我们就不会看到深度学习应用的广泛采用。

如果我是一名 AI 从业者,我需要关心处理器吗?

作为一名 AI 从业者,你希望专注于探索新的模型和想法,而不希望过多担心看起来不相关的问题,如硬件的运行方式。因此,虽然理想的答案是「不,你不需要了解处理器」,但实际的答案是「可能还是要了解一下」。如果你非常熟悉底层硬件以及如何调试性能,那么你的推理和训练时间就会发生变化,你会对此感到惊讶。

图片

各种并行化技术对于矩阵乘法的加速效果。

如果不懂硬件,你所花的时间可能会多 2-3 倍,有时甚至多一个数量级。简单地改变做矩阵乘法的方式可能帮你收获巨大的性能提升(或损失)。性能欠佳可能会影响你的生产力以及你可以处理的数据量,并最终扼杀你的 AI 周期。对于一家大规模开展人工智能业务的企业来说,这相当于损失了数百万美元。

那么,为什么不能保证得到最佳性能呢?因为我们还没有有效地达到合理的「user-to-hardware expressiveness」。我们有一些有效利用硬件的用例,但还没泛化到「开箱即用」的程度。这里的「开箱即用」指的是在你写出一个全新的 AI 模型之后,你无需手动调整编译器或软件堆栈就能充分利用你的硬件。

图片

AI User-to-Hardware Expressiveness。

上图说明了「user-to-hardware expressiveness」的主要挑战。我们需要准确地描述用户需求,并将其转换成硬件层(处理器、GPU、内存、网络等)能够理解的语言。这里的主要问题是,虽然左箭头(programming frameworks)主要是面向用户的,但将编程代码转换为机器码的右箭头却不是。因此,我们需要依靠智能的编译器、库和解释器来无缝地将你的高级代码转换为机器表示。

这种语义鸿沟难以弥合的原因有两个:

1)硬件中有丰富的方法来表达复杂的计算。你需要知道可用的处理元素的数量(如 GPU 处理核心)、你的程序需要的内存数量、你的程序所展示的内存访问模式和数据重用类型,以及计算图中不同部分之间的关系。以上任何一种都可能以意想不到的方式对系统的不同部分造成压力。为了克服这个问题,我们需要了解硬件 / 软件堆栈的所有不同层是如何交互的。虽然你可以在许多常见的场景中获得良好的性能,但现实中还有无尽的长尾场景,你的模型在这些场景中可能表现极差。

2)虽然在计算世界中,软件是慢的,硬件是快的,但部署世界却在以相反的方式运行:深度学习领域正在迅速变化;每天都有新的想法和软件更新发布,但构建、设计和试生产(流片)高端处理器需要一年多的时间。在此期间,目标软件可能已经发生了显著的变化,所以我们可能会发现处理器工程师一年前的新想法和设计假设已经过时。

因此,你(用户)仍然需要探索正确的方法来识别计算耗时瓶颈。为此,你需要了解处理器,特别是当前的 AI 加速器,以及它们如何与你的 AI 程序交互。

原文链接:https://medium.com/@adi.fu7/ai-accelerators-part-i-intro-822c2cdb4ca4

入门AI加速器
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

计算机图形技术

图像数据处理、计算机图像(英语:Computer Graphics)是指用计算机所创造的图形。更具体的说,就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

LeNet技术

LeNet 诞生于 1994 年,是最早的卷积神经网络之一,并且推动了深度学习领域的发展。自从 1988 年开始,在许多次成功的迭代后,这项由 Yann LeCun 完成的开拓性成果被命名为 LeNet5。LeNet5 的架构基于这样的观点:(尤其是)图像的特征分布在整张图像上,以及带有可学习参数的卷积是一种用少量参数在多个位置上提取相似特征的有效方式。在那时候,没有 GPU 帮助训练,甚至 CPU 的速度也很慢。因此,能够保存参数以及计算过程是一个关键进展。这和将每个像素用作一个大型多层神经网络的单独输入相反。LeNet5 阐述了那些像素不应该被使用在第一层,因为图像具有很强的空间相关性,而使用图像中独立的像素作为不同的输入特征则利用不到这些相关性。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~