新基建中的高性能人工智能算力基础设施的架构与测评

2020-01-04 07:09郑纬民
机器人产业 2020年6期
关键词:算力高性能精度

算力,作为人工智能“三驾马车”之一,也是人工智能“新基建”的重点。在2020世界计算机大会名家讲堂上,中国工程院院士、清华大学计算机科学与技术系教授郑纬民围绕高性能人工智能算力基础设施的重要性和架构进行了阐述,并诠释了人工智能算力评估的意义。

人工智能算力基礎设施的重要性

今年4月,国家发改委首次明确了“新基建”的范围。人工智能是“新基建”的内容之一。“新基建”中一定会花很多钱。新时代人工智能的发展包含大数据、算法和算力。对于人工智能“新基建”而言,需要花不少钱购买一台大机器,用来处理其中人工智能算力的问题。

人工智能有多种多样的应用场景,主要包括三类。

第一类应用是图像检测、视频检索。这人工智能算力基础设施的重要性

今年4月,国家发改委首次明确了“新基建”的范围。人工智能是“新基建”的内容之一。“新基建”中一定会花很多钱。新时代人工智能的发展包含大数据、算法和算力。对于人工智能“新基建”而言,需要花不少钱购买一台大机器,用来处理其中人工智能算力的问题。

人工智能有多种多样的应用场景,主要包括三类。

第一类应用是图像检测、视频检索。这一类相当于人脸识别。学术上,其核心是卷积网络。这类应用不需要太大的机器,主要出现在安防、医疗诊断和自动驾驶领域。例如,坐飞机安全检查的地方需要人脸识别,把口罩摘了,识别一下就可以通过,后面没有成千上万的大机器进行人脸识别。这类应用现在已经取得了很好的落地成果。

第二类应用是博弈决策。这个问题学术上的核心是强化学习。其最典型的例子是AlphaGo。AlphaGo不需要非常大的机器。它与围棋冠军比赛取得胜利,并且也可以完成其他决策类的任务。这类应用也非常好。

上述两类应用不需要大机器,但第三类应用——自然语言处理需要。

自然语言处理需要很大的算力,也就需要很大的机器。其发展非常迅速,典型模型包括GPT-1、GPT-2、GPT-3、BERT。它能做什么事情?一是语言翻译。将中文翻译为英文,将英文翻译为日文,将日文翻译为阿拉伯文……二是自动问答。不仅能够回答简单的问题,而且需要能够回答非常复杂的问题。三是生成文本摘要和创作。需要机器在读完一篇文章之后写出三句话的摘要,或者需要机器将给定的三句话扩写成一篇文章、一部剧本。这类应用问题中有些很复杂,要求机器具有很大的规模。

语言模型发展迅速。2015年,马斯克和其他人创建了OpenAI公司。2019年,OpenAI核算了从2012年以来所有模型所用的计算量。结果发现,最大规模人工智能模型所需算力已经增长了30万倍,每三四个月翻一番,也就是说每三四个月计算机的算力扩大一倍,这比摩尔定律厉害。摩尔定律指出,芯片性能翻倍的周期是18至24个月。今年5月,微软推出了一台专门为OpenAI设计的超级计算机,托管在Azure上。这台机器包含超过28.5万个处理器内核、1万块 GPU,处理人工智能问题。其每个显卡服务器的连接速度为400Gbps/s,它的性能在超级计算机排名中可以排到前五。

GPT-1在2018年6月发布,拥有1.17亿个参数,预训练数据量约5GB。2019年2月发布的GPT-2,拥有15亿个参数,预训练数据量40GB。2020年2月发布的Turing NLG参数达到170亿个。今年5月发布GPT-3,截至到今年7月,拥有1750亿个参数,比Turing NLG增加了10倍以上,比GPT-2增加了116倍以上,其预训练数据量是45TB。

参数越多,计算效果越好,需要的机器也就越大。这就引发一个问题:在哪台机器上能够训练这么复杂、参数数量这么多的模型?

根据GPT-3 的论文,所有模型都是在高带宽集群中的英伟达V100 GPU上进行训练的,训练费用预估为1200万美元。1万块英伟达V100 GPU大概需要训练15天。

下一代人工智能的发展将继续大规模人工智能算力基础设施的支持。GPT-3取得了很好的进步,但与人类智能相比还有很大差距。人脑有100亿个神经元,有100万亿个突触,GPU与此相比还距离很远。因此,下一代人工智能模型可能具有超过万亿个参数。图灵奖获得者Geoffrey Hinton认为,如果模型的参数个数是4.398万亿,即现在GPT-3参数数量的25倍,就可以包含一切,但现有计算机系统无法胜任其训练任务。

自然语言处理需要机器无止境的算力。当前,国内外很多人说“人工智能需要很大的算力”“人工智能需要很大的机器”,这里的“人工智能”所指的是自然语言处理这一类问题。

人工智能算力基础设施的架构

人工智能算力基础设施的系统结构要素与传统高性能计算机器的组成是差不多的,都是处理器、内存、存储、互连网络几个部分。

具有代表性的处理传统高性能计算(传统科学计算)的机器有以下四台。

第一台机器是天河2号。天河2号是由国防科技大学做的,在2013年6月至2015年11月期间位于世界Top500评比第一名。国际上,每年对这一领域的机器排名两次,6月一次,11月一次。天河2号最关键、最有特点之处在于引入了异构加速器。在这之前,做高性能机器使用的所有CPU都是同构的。

第二台机器是神威太湖之光。神威太湖之光是由无锡的一个部队研究所做的,在2016年6月至2017年11月期间多次位于世界Top500评比第一名。它最精彩的地方在于所有的芯片都是自己造的,采用了全国产异构众核处理器。

第三台机器是Summit。Summit是由美国人做的,在2018年6月至2019年11月期间排名位于世界Top500评比第一。其中使用了NVLink连接的GPU、本地NVMe SSD存储等设备。

第四台机器是富岳。富岳是由日本人做的,在今年6月世界Top500评比时位居第一名。它使用了同构向量处理器、高维互联网络,能够实现半精度优化。

深圳鹏城实验室在建的鹏城云脑二期花费了42亿元制造,它是一台很大的机器,用于处理人工智能问题。它包括4套华为Atlas 900系统,每套系统128个结点,每个结点有8块华为的昇腾加速卡,每套系统有1024块加速卡。相当于你把它看成了有1024块GPU卡,英伟达叫GPU,我们叫升腾。鹏城云脑二期由4套系统结点间用200Gbps网络互联,全交换无带宽裁剪,全局共享存储。最后总的计算性能达到半精度1Eflops,双精度1Pflops。

人工智能算力系统与传统高性能计算系统之间在处理器、互联网络和存储系统三个方面都存在着区别。

它们最大的区别在处理器方面。传统高性能计算系统以双精度性能优化,兼顾低精度计算,更大规模的机器甚至需要采用80位或者128位的高精度。它处理的问题本身很大,因此高性能计算系统可以处理80位或者128位是很厉害的。人工智能算力系统处理人工智能问题,也就是处理图像检测和视频检索问题、博弈决策问题、自然语言处理问题。这不需要80位、128位,半精度的性能就足够了。有些8位、16位即可,最多32位。它着重半精度计算性能,面向神经网络运算的优化。因此,我们经常说,用传统高性能计算系统处理的人工智能问题是不匹配、不合适的。

在互联网络方面,传统高性能计算系统一般从全系统角度考虑网络拓扑和通信需求,而人工智能算力系统需要高性能参数平面网络连接训练单一模型的加速器组。

在存储系统方面,传统高性能计算系统一般采用Lustre等全局并行文件系统,支持MPI-IO,而人工智能算力系统局部高性能存储(NVMe SSD)存放训练数据集,避免从全局文件系统读取数据造成瓶颈。

更大的机器能做什么?这是一个持续已久的争论。在计算机领域,特别是在高性能计算机领域,在机器做出来之前,是没有确定性应用的,它是应用驱动型的。湖南大学国家超级计算长沙中心的传统高性能计算机器在七八年前刚出来时,人们都没想到它能够处理这么大的问题。最近,面对新冠肺炎疫情,这台机器能够处理人从外地到长沙的轨迹,很快将病人找出来。大规模的机器做出来之后,还会促进应用的发展。这是与其他学科不一样的地方。因此,我们说,更大的机器不仅是将已有的问题算得更快,更重要的是解决现在不能解决的问题。

人工智能算力的评估方法

现在,北京、珠海、嘉兴、武汉、成都等多个城市,以及华为、海尔、曙光、国防科技大学等多家企业单位,都在花钱建设人工智能机器。那么,我们有没有基准来评价这台机器好不好、适不适合做人工智能?

我们为什么需要一个人工智能算力基准测试程序?

截至目前,还没有一个比较合理、公平的评测用于考量人工智能机器好不好。公众需要一个简单的指标来回答,需要一个简单的程序测试哪套系统的人工智能算力更强。测完后会产生一个简单的数据值结果,用这个数据值的大小反映这台机器对人工智能问题处理的水平如何。这个基准测试程序做好了,整个领域会发展得更好。如果全国各地各单位做的机器测试后的数值结果都是0.1,說明我们国家人工智能机器的水平不高;如果我们的机器测试后的数值结果有不少0.98、0.7,说明我们国家人工智能机器的水平很高,因为满分就是1。另外,好的指标还可以反映出人工智能机器的问题,从而引领该领域的健康发展。

传统高性能计算机器的测试结构与人工智能需要的性能不完全一致。传统的高性能计算机器已经有了一个评测软件,世界Top500排名就是以它为基准的,水平最好就是Top500的第一名,很差就在500名以外。大家都认可用这个软件进行传统高性能计算机器的排名。这个高性能计算算力测试程序主要使用双精度浮点数运算的算法,测试做双精度加减乘除计算的能力,反映了通用科学计算的问题,因此适用于测评传统的机器。但这个软件不适用于测评人工智能机器。人工智能训练以单精度浮点数或者16位浮点数为主,推理以Int8位为主。

有人陆续在进行人工智能性能基准测试程序的研究开发。一些人所做的测试程序是规模固定的,支持由16个CPU构成的人工智能机器进行测试。一些人所做的程序需要测试多个应用,测试一次得一分,之后再测试另一个。最明显的一个就是hpl-ai。这个软件是由测试Top500的团队做的,它很好地处理了混合精度研究,但这个软件本身和人工智能的关系不直接。我们希望有一个软件专门处理人工智能问题,而不是随便写一个软件测试加减乘除各种问题,然后再间接与人工智能问题相关。还有人所做的测试程序是最终产生多个分数的。

在我看来,现有的人工智能基准测试程序都不是太好。我们预期的人工智能算力基准测试程序应当具备下面几点特性。

第一,一个分数。我们希望有0.98、0.9这样非常明显、简单的分数。分数越接近1说明机器水平越高。

第二,可变的问题规模。这个软件既可以适应单卡内存规模的变化,也可以适应多卡;既可以测试小规模的机器,也可以测试中规模的和大规模的机器。我们现在做人工智能处理问题,比如说机器学习,大多数人只买一块GPU卡,用在原来的服务器上直接做人工智能的深度学习,结果比原来没有插这块卡的普通CPU速度快10倍,人们就很满意。一些人有钱买第二块卡,问题是国内大多数做机器学习的人不会在二块卡上处理问题,更不会在四块卡、一万块卡上处理问题。因此,我们需要一个软件,既能够适应一块卡,也能够适应二块卡、四块卡行、一万块卡。目前,有些人已经使用十六块卡,但大多数人仍然只使用一块卡。因此,扩展是一件难度很高的事。

第三,计算要有人工智能的意义。这个软件要反映人工智能本质,处理的是人工智能问题,需要面向神经网络运算。

第四,多机通信可以少,但不能没有,也不能是EP类型的。

对人工智能算力来说,制定这样一个指标和测试方法并不容易。首先,单个人工智能训练任务很可能达不到全机规模。即使能达到,可能在训练时间和准确率上也没有改进,使用全机规模是没有意义的。其次,如果要测试规模变化巨大的人工智能集群计算机,测试程序必须是规模可变的。那么,什么样的主流人工智能应用是规模可以大幅变化的?最后需要考虑准确率的问题。残差小于给定标准?还是将准确度计入分数?

清华大学与国防科技大学合作做了一个软件,已经在很多台机器上进行过测试。

我们的设计思路是AutoML。AutoML是通过算法自动搜索合适的神经网络模型结构,找到针对特定任务效果最好的解。其所需的计算资源极高,基础算法也包含训练模型本身。AutoML+NN现有两个主要方面:超参数搜索、网络结构搜索。超参数搜索易于实现,但搜索空间存在一定限制(~100);网络结构搜索搜索空间往往较大(~10000)。AutoML具有足够的并行度,常常需要同时训练大量候选模型来对结构进行评估。其搜索的结果虽然有一定的随机性,但整体上能找到的解的优劣程度随着搜索所消耗的计算量而逐渐改善。

这个基于AutoML的基准程序测试终止条件为:运行一段时间(如24小时),或精度已收敛。其量度指标为运行过程中达到的ops。其任务自身是深度学习任务设计中的关键环节,且任务能够直接体现超算系统在深度学习方面的综合性能(包括训练、推断);找到的解的优劣程度随着搜索所消耗的计算量而逐渐提升;可以换算成计算效率(%)。

(本文根据中国工程院院士、清华大学计算机科学与技术系教授郑纬民在“2020世界计算机大会”名家讲堂现场演讲整理而成,未经演讲人审阅)

猜你喜欢
算力高性能精度
杭州“算力小镇”
智能计算浪潮迭起
边缘计算与算力网络专题导读
数控车床加工精度的工艺处理及优化试析
高性能混凝土不同配合比下的性能研究
计算万物 算力之下要有坚实的地基
高性能混凝土开裂成因及控制要点
近似边界精度信息熵的属性约简
电力系统短期负荷预测方法与预测精度
中国E级高性能计算机原型系统正式进入研制阶段