发布时间:2019-12-25
由中国人工智能学会联合国际电气与电子工程师协会(IEEE)北京分会发起的2019年第六届IEEE云计算与智能系统国际会议(CCIS 2019),于12月19日-21日在新加坡顺利召开。会议以高规格、高水平的特色深受国际同行关注,形成了“小而美”的会议风格,是中国人工智能学会建设世界一流学会、深化国际交流与合作、提升我国人工智能世界影响力系列举措中一项重要的国际活动。
12月19日,来自英伟达AI技术中心高级主管 Dr. Simon See对人工智能计算的发展方向做了介绍。
机器学习、深度学习和其他形式的人工智能算法在过去几年取得了很大的进步。数据的可用性增强,计算资源成本与日俱减,人们完成了以前不可能完成的任务,并最终构建了很多新的应用程序。
然而,网络的复杂性和规模呈指数级增长,这给新模型的研究者们带来了巨大的挑战。
Dr. Simon See
Dr. Simon See目前是英伟达AI技术中心的解决方案架构和工程总监、首席解决方案架构师。他还是上海交通大学的教授兼首席科学计算官,北京邮电大学教授和印度尼西亚大学教授。2018年9月,他被复旦大学授予复旦杰出学者称号。
Dr. Simon See教授目前参与了许多智慧城市项目,尤其是在新加坡和中国。他的研究范围涉及高性能计算、大数据、AI、机器学习、计算科学、应用数学和仿真方法论等领域。自2018年3月以来,他一直是NSCC旗舰高性能计算会议亚洲超级计算分会(SCA)的指导委员会成员。此外,Dr. Simon See教授还是SIAM、IEEE和IET的会员。
Dr. Simon See教授1993年毕业于英国索尔福德大学,获得电气工程与数学分析博士学位。在加入英伟达之前,他曾在SGI、新加坡DSO国家实验室、IBM、国际模拟有限公司(英国)、太阳微系统和甲骨文总部工作。他还为许多国家研究和超级计算中心提供咨询服务。
演讲要点:
人工智能技术与机器学习的发展,尤其是卷积神经网络的出现为CV界带来了技术突破,诸如Alexnet等深度神经网络的发展为平安城市、医疗领域、工业制造等领域提供了更快的处理速度和更新的解决思路;
英伟达在深度学习的多个领域贡献了力量,包括投资自动驾驶汽车领域,开发自动驾驶技术;在生成式对抗网络(GAN)方面提出了渐进式生成对抗网络(progressive GANs),以及艺术领域的GauGAN算法;借助英伟达的GPU加速NLP算法的训练速度等。
英伟达GPU设计思路及技术概述。首先谈到了深度学习运算的本质是矩阵运算,英伟达已经在该领域努力了20多年;其次简述了处理器的设计流派和设计思路,比较CPU设计和GPU设计的侧重点,以及英伟达的选择和不断尝试。最后介绍了英伟达GPU的发展历程,研究尝试不同架构的GPU处理器,描述英伟达为加快GPU处理速度,成就客户所做的工作。
以下为Dr. Simon See演讲全文,AIPharos月光社进行了不改变原意的编辑:
我今天演讲的主题是通往高效AI计算的途径。
在座的各位应该都知道英伟达。首先,非常感谢你们玩游戏,这贡献了英伟达一部分媒体收入。游戏使用了大量的人工智能技术,并且非常重要,但我们今天不谈游戏,我想谈谈高效AI计算的途径是什么?
我们的团队非常关注通用人工智能,这是公司未来要做的事情。人工智能由计算机视觉、自然语言处理、推理等部分组成,我的一些团队正在研究机器推理。机器推理基本上与深度学习无关,而更多地与推理有关,推理在很大程度上是应用数学的一个组成部分。
先做一个免责声明,我不是这个会场里的人工智能专家。我的背景是应用数学,因此,我回答数学问题要比人工智能问题在行。
机器学习已经存在很长时间了,前几年,因为神经网络,突然就火了。现在,神经网络已经不新鲜了,做过的人都知道它是什么。基本上,神经网络的中心思想,就是模仿一个东西,还不全是模仿,它只是事物的一个大概的人为重现。
计算机视觉(CV)整个领域的突破,是因为AlexNet的出现。AlexNet震惊了CV界,它的改进十分明显,突然之间,CV技术可以施行了。只要说采用CV技术,几乎相当于采用AlexNet。在AlexNet出现后,其它的都成了历史。当然,仍然有很多研究有待继续。
上述的技术适用于许多应用程序。例如在平安城市中,用AI技术保证公共安全。在医疗领域中,AI也被广泛使用,但并不是要取代医生或放射科。之前,你在完成X射线或磁共振成像扫描后,需要等上几周时间才能获得结果。如今,你只需要几天的时间。
一些行业实际上已经应用了相当多的东西。通用电气将AI模型应用到涡轮机上面,这样涡轮实际出问题之前就能监测出来。此外,通用电气正在使用机器学习和深度学习进行特征提取,以了解哪些地方是有提升潜力的。这类应用程序已经被证明可行,其中之一就是用于仿真。
仿真的一个例子是汽车设计。汽车设计工作不仅包括模拟本身,还有把汽车按比例压缩成一个模型。模拟往往要花费数月时间,为了减少模拟的工作量,你需要寻找代替模型。
神经网络实际上是一个通用的模拟器。如果你可以转换纳维-斯托克斯方程(Navier – Stokes equation)等数学模型为替代模型,那么你可以非常快速地进行计算,这有助于更快地进行科学研究并发现一些新东西。例如,借助于快速的机器学习和深度学习技术,物理学家最近检测到了引力波。如果没有AI技术,运算时间会非常长。此外,如果你正在进行计算流体力学(CFD)方面的研究,你知道这方面的运算价格昂贵,有了神经网络模型的替代,运算成本将大幅减少。总结起来,机器学习和深度学习使我们实现了快速的实时计算,而不再是预计算(precompute mechanism)。
回到汽车仿真的例子。英伟达投资于自动驾驶汽车领域,公司有百名工程师和科学家正在研究这一领域。当你开车时,被一个美女吸引并转过头去看她时,事故非常容易发生,我们的自动驾驶技术将帮助你避免此类事故。对于真正的自动驾驶汽车来说,这个例子只是其中的一部分。借助于新的数据和算法,现有技术在物体检测等领域的进步很快。
AI的一个重大改进是生成式对抗网络(GAN)。几年前,一些年轻的研究者发明了被称为GAN的算法,现在,该算法已经有了数百种不同的变体。
英伟达在GAN 方面做了一些工作,我们称之为渐进式生成对抗网络(progressive GANs)。我们输入不同的电影明星,制造了人造名人。如果你不想干AI了,你可以运行一个算法,把自己的脸输入进去,得出一张明星脸,然后跑到韩国整形,这不失为一个出名的好方法。
严肃来看,AI也是这样被应用到工程中的。工程设计人员会有很多想法,但约束条件是,逐个生成这些设计耗费精力。现在,如果你有一种算法,可以在一定约束条件下使用其他子参数,那么你就可以同时生成数百种不同的设计,之后,你只需要从中选择一个就好了。空客飞机的架构,可以被这么设计出来。要实现这类设计工作,你需要用Autodesk设定限制条件,然后用一种生成算法生产出数百种设计。
在艺术领域,英伟达创建了一种名叫GauGAN的算法,这是一个非常好的工具。用一些数据去训练算法,那些不是艺术家的人都可以生成非常逼真的画作。《爱德蒙·贝拉米》这幅画你们可能都看过,它在佳士得卖出了43万美元的高价。这说明,现在人工智能技术足以产生一些有趣的东西。
接下来,我们谈一下自然语义处理(NLP)。最近,人们的注意力集中在transformer tree,其中有一个领域是BERT,我建议不要太多看重BERT,因为BERT的基本形式是双向编码器。
NLP的参数数量增长迅速,但是训练时间现在只需要数个小时,这背后的计算发生了什么变化?
现在,对于那些已经完成了神经网络和卷积神经网络早期工作的人,你使用一种标准的GPU,然后把卷积神经网络放在上面,花数周时间来训练,就可以了。如果你使用50块这样的GPU,即使网络有上百万级的参数,也能快速地获取训练结果。因此,有了足够的GPU,你就可以非常快速地训练神经网络来进行计算。在很短的时间内,神经网络的增长是巨大的。从2015年的600万个参数,到现在850万个参数。
当我们进行神经体系结构搜索时,基本想法是通过自动机器学习来寻找最适合特定项目的参数,这是构建AI的第一步。如果你只有一块GPU,自己估算大约需要GPU运行1000年,还需要大约5年的时间进行训练。但是换AI来做,只需要3000个GPU小时。从这里,我们可以看到运算量的指数增长,这对计算基础设施形成了很大的压力。
现在举一个ResNet的例子。对于一个未压缩过的ResNet网络来说,一张25*25的图片,需要执行72亿次运算。在类似这样的图像上,高清电视每秒大约失去9.4万亿次浮点运算的能力。我们如何实际设计用于人工智能的计算?现在有两个部分。其中之一是训练。另一部分是推理。因此,请记住,当人们说人工智能处理器时,有两种不同类型的事物。
其焦点之一实际上是计算速度。现在计算速度的问题是,在半导体领域,尽管我们可以越来越小,甚至可以缩小到5纳米。但功耗和频率基本上处于停滞状态,我们能够增加晶体管的数量,但根本无法增加频率。另一部分是AI的可扩展性。因此,我们不能仅仅使用蛮力来迫使算法以非常快的速度以串行模式运行,我们需要并行架构以解决可扩展性的问题。
另一个问题是能源消耗。很早以前,一个机架服务器也就耗费几千瓦的能源。现在,轻松消耗超过15千瓦。一个数据中心的消耗,是5兆瓦到10 兆瓦,这相当于新加坡两个镇消耗的能源。
如果你有廉价的无人机,功耗当然低,但也就持续5到10分钟,然后就需要重新充电。更好的无人机运行时间更长,但电池消耗还是个问题。如果在无人机上运行AI算法,将消耗大量电力,无人机无法长时间运行。
另一部分是整个生态系统。当你想从端到端开发某些AI应用时,从开发到实施,都希望拥有能够支持你的编程环境的所有框架和语言。如果从线性代数的角度来看,这基本上是一个矩阵到矩阵的计算。而对于计算机视觉领域,实际上显卡本身并非专门定制,而更多关乎图形。
在游戏中,都是关于多边形乘法的图形。多边形是什么?多边形基本上是一个矩阵乘以向量或矩阵乘矩阵的计算。英伟达已经为这件事努力了20多年。矩阵乘矩阵计算能够快速操纵屏幕上的所有像素,因此可以生成所有不同类型的高分辨率方案,以及大多数图形化方案。如果你会把深度学习的问题转化为矩阵乘矩阵问题,并使得其适于GPU,那GPU就会以一个非常快速的方式运行。
在设计处理器时,你会发现有两种思路。
标准CPU的设计思路是需要有控制和调度,那么对于那些从事CPU设计的人,将了解CPU设计。在过去的三四十年中,业界采用了许多新思想、新技术。这就是为什么控制指令非常庞大,并且需要大的缓存才能真正匹配ALU中的数据。
另一个流派是,我不会使用所有这些复杂的调度算法,我只是想让这些需求变得非常简单,主要工作是在非常短的时间内进行快速计算,这个过程中很少调度。
GPU开启了上述第二个流派,我们想证明这一想法是对还是错。GF 100是最早的版本之一,创建于2009年,现在turning architecture已经完成,我们在线性代数上对其进行了测试。线性代数是矩阵乘矩阵计算,是双精度上的LU分解。它的性能已经达到了Gflops,人们已经开始开发能够在GPU上高效运行的算法。
现在,你可以用一千种方法来设计一个算法,但是如果你不能设计你的算法来有效地运行它,那就毫无意义。所以这不仅仅是硬件的设计,这是一个算法的发展,使它能够运行得非常快。过去几年里,我们得到了证据,证明这个处理过程一定是不必要的。
我们研发设计了不同类型的处理器。例如,特斯拉T40、GTX,当然你们在玩游戏的时候会用到它,但它可以用于测试,你会得到所有这些东西,这表明你实际上能够维持这个东西。另一件事是,我们也证明,在GPU方面,如果你竞争得足够快,只需要640焦耳多一点的能量就能处理一项任务,而CPU大约需要2000焦耳。
现在我们来看看这个。当我们想要实施的时候,深度学习实际上是统计学习。你必须记住,当我们进行深度学习或机器学习时,它是统计,当我们统计数据时,可以牺牲某些东西。在那之前,让我先谈谈这些东西。从A到B需要的能量大约是0.03到32焦耳。进行读取(read)和数据传输时,从数据移动到数据读取是非常昂贵的。所以当你设计读取数据的路径时,你想要消耗尽可能少的能量,就需要找到最优化的方法。
现在,我们实际上是在试验,使用位置B,在这两个网络上来解决,在AB的位置上,AB本身精度可以很快达到。我们发现16位和8位已经足够好了。我们实验的是GPU内部的构建。在GPU内部,一个4×4矩阵计算,一个基于16位的4×4矩阵计算机,不是32位或64位,而是16位已经足够。
16位乘以16位,再乘以16位加16位。我得到了32×32的东西,所有东西都在一个循环中。现在一个GPU中有600个以上这种东西,所有这些都可以在一个循环中计算。600或者4×4乘以4,在一个循环中。现在的问题是如何将其转化为软件,如何编写算法使它们能够充分利用。
基本上,这就是我们想要学习的东西,我们已经激发了相当多的研究者、大学等研究机构等。这些是一般精度的矩阵乘矩阵计算,你可以看到,浮点运算量以惊人的速度增长,另一个则是较低的精度。你要做的也是对别的东西的考验。这是P100的早期版本Pascal和单精度的P100。当我们打开半精度,它基本上使用半精度。我们把它的计算能力提高了一倍,它的性能也大大提高了。
我们要做的就是证明它。在ResNet50网络的训练中这样做,你可以看到性能提高了2.5倍。在图灵架构中,实际上包括了int8和int4。我们已经证明,有很多应用程序可以使用int8。现在他们响应了int4,但不是很多。我们需要做统计研究等等,还有很多工作要做,但如果你能使用它,你就有了巨大的计算能力。
当我们致力于可扩展性时,其中一件事是当我们想要训练时,看到成千上万的GPU,有两个模型你想要训练。其中一个在数据并行上,另一个是并行模型,你可以单独读取。因此,为了做到这一点,在早期的版本中,我们需要做的一件事是提升通信效率,这是非常重要的问题。所以我们要做的是设计一个PCI总线。一个系统的GPU的早期设计,所有这些GPU通过我们所说的PCI交换机进行通信,在PC交换机上,通过QBM通信。当你想让所有的GPU互相通信时,需要在PCI上做一个出色的平衡,这是非常昂贵的。
英伟达所做的是建立了我们所说的NVlink。它是一个专门的接口,将GPU和GPU连接起来,经过一段时间,我们实际上为我们的研究建立了这些系统,我们可以连接到一个标准的x86或IBM power 9。我们已经展示了可扩展性的改进,我们可以展示多达128个GPU的互连,可扩展性是可行的,这非常令人印象深刻。现在为了更强大的技术,我们设计了一个叫做NVswitch的东西。它不只是NVlink,而是一个开关,这个开关可以连接所有这些东西。我们可以把16个GPU放在一个服务器上。这基本上展示了使用连接到总线前端的NVswitch的DGX的性能。
当我们设计这些东西时,它们仅仅是硬件。硬件是其中的一小部分,它的重要部分实际上是软件。所以,我们需要开发一种能够进行所有类型通信的算法。在英伟达,我们做了很多工作。在日本南部建立的实验室就是这样一个设施,这是为了支持人工智能。基本上,一个数据中心内大约有4000个GPU。如果我能大概理解的话,我将不记得它需要多少兆瓦。
这就是所谓的ResNets。他们实际上已经扩大了规模,为了让我们的研究规模更大,我们在英伟达内部建造。我们目前大约有10000名从事不同类型人工智能研究的研究人员和科学家,为了支持研究,我们的一个数据中心现在大约有15000个GPU,我们计划在明年年初增加到20000个。我们需要拥有基础设施和数据集。
在内部,我们设计了一个基于DGX2的硬件。单个DGX2具有16个GPU,在一个集群中有92个DGX2,一共大约是1500个GPU,供科学家做研究工作。我们进行了一些基准测试和类似的工作,尽管是一些基准测试,但这些都是世界记录。
现在我们谈论它的训练部分,它需要几乎一个核电站来为数据中心提供能量。我们需要低功耗的推理能力。其中之一就是英伟达拥有的DLA,即深度学习加速器。我们注意到,我们实际上是在制造低端芯片,但它是基于相同的单一架构,我们不能进一步压缩它们的功率。因此,我们和很多人合作,将DLA的这一部分公开开源。对于那些想要构建自己处理器的人来说,它可以下载源代码,然后构建处理器。
我们SoC的早期作品之一,也就是Xavier。一天前,我们发布了orin芯片,它比Xavier强大七倍。它也是基于开源,给你一个概念,这基本上是一个DLA的功耗。它比你在货架上或数据中心买到的GPU要低得多,为了使你发现的东西挤满所有的神经网络,我们做了很多工作。
对于那些正在开发神经网络并试图将其塞进手机或其它设备的人来说,他们需要做两件事,一是节约能源,二是缩小内存占用。所以在你训练了你的神经网络之后,你会发现,你的神经网络实际上是没用的,它们都是零分量或者极小分量。所以你需要做一些剪枝,我们已经做了一些事情,例如在机器人中,把网络缩小到非常小。换句话说,剪枝只是简单地移除所有这些合成。
我们在这方面做了很多工作来理解剪枝本身。我们可以重新训练它,恢复精度,在迁移时也可以压缩数据。我们发布了TensorRT,整个思路是这样的,你有一个神经网络,通过它,你可以做精确校准,也可以做动态张量。你需要做多任务处理、内核调优,所有这些事情都是为了压缩你的神经网络,尽可能高效地优化到推理引擎,对吧?
今天,我们仍然在开发这些东西。在神经网络领域,你每天都会看到新的神经网络涌现,我们需要对此进行了解,这就是TensorRT的例子,在这里我们可以极大地提高性能。
在英伟达内部,我们在底层做了很多工作,让这些框架能够在GPU上高效、透明地运行。当你使用TensorFlow或Alexnet时,你实际上根本不知道GPU,你所需要的就是运行速度。
所以,现在有很多人采用这种技术。例如Pensees等公司的许多工作以及诸如salesforce.com等许多其他公司现在都在将该技术应用于主流应用程序。因此,这种技术已经不单单处在研究领域,它已经处于应用领域。
我想给你们展示一个视频,这是一个专业的肚皮舞演员,这是两头驴,现在你可以用这种技术来转移它们,然后它们就会混合在一起。因此,我们现在有了制作假简历的技术,你可以将肚皮舞演员渐进式GAN(生成对抗网络)放入你的简历,然后将其发送到好莱坞,也许,你可以有机会成为电影明星。
转自 AIPharos月光社