近年来,随着人工智能在自然语言处理、计算机视觉等领域上的快速发展以及在大规模算力上的普及,公众需要一个简单有效的指标来帮助判断系统的人工智能算力和整个高性能人工智能领域的发展状况。同时,一个好的指标也可以引领一个领域的健康持续发展。
然而,传统的高性能计算机评测方法和体系与当前人工智能需求的性能并不完全一致。例如,LINPACK是一个目前被广泛采用的高性能计算机双精度浮点运算性能基准评测程序,国际超算Top 500榜单依据LINPACK值来进行排名,而典型的人工智能 应用并不需要双精度浮点数运算。大部分人工智能训练任务以单精度浮点数或半精度浮点数为主,推理以Int8为主。
对大规模人工智能算力来说,制定一个简单有效的指标和测试方法并不是一件容易的事情。首先,大部分单个人工智能训练任务(例如训练一个推荐系统或者图像分类的神经网络模型)达不到全机上百张加速器卡规模的计算需求。很多人工智能应用,即使使用全机规模,其训练时间和准确率也可能没有改进。其次,如果要测试规模变化的人工智能集群计算机,测试程序必须能够规模可变。首先必须明确,什么样的主流人工智能应用是规模可以任意调整的。最后,准确率的判定和计算是大规模人工智能算力评测与传统高性能计算基准评测之间的一个显著区别。是否需要使残差小于给定标准,是否要将准确度计入分数统计,同样是需要明确的问题。
目前,各大企业、高校和相关组织在人工智能性能基准测试领域已经有了很多探索,相继开发了各类基准评测程序,比如谷歌等公司主导的MLPerf,小米公司的MobileAI bench,百度公司的DeepBench,中国人工智能产业发展联盟的AIIA DNN Benchmark,以及在双精度的LINPACK基础上改成混合精度的HPL-AI等。但是这些基准测试方案都不能很好地解决上述问题。根据MLPerf公开发表的数据,MLPerf程序在百张TPU加速卡以上规模测试下扩展性就会出现下滑,在千张TPU加速卡级别到达评测体系的扩展性瓶颈,该评测程序很难评价不同系统在该规模下人工智能算力的差异。
MLPerf 扩展性瓶颈
AIPerf设计目标与思路
AIPerf是清华大学设计研制的人工智能算力基准测试程序,设计目标有:
1. 统一分数
基准测试程序应当报告一个分数作为被评测计算集群系统的评价指标。使用一个而不是多个分数能方便地对不同机器进行横向比较,以及方便对公众的宣传。除此之外,该分数应当随着人工智能计算集群的规模扩大而线性增长,从而能够准确评测不同系统规模下算力的差异。
2. 可变的问题规模
人工智能计算集群往往有着不同的系统规模,差异性体现在节点数量、加速器数量、加速器类型、内存大小等指标上。因此,为了适应各种规模的高性能计算集群,预期的人工智能基准测试程序应当能够通过变化问题的规模来适应集群规模的变化,从而充分利用人工智能计算集群的计算资源来体现其算力。
3. 具有实际的人工智能意义
具有人工智能意义的计算,例如神经网络运算,是人工智能基准测试程序与传统高性能计算机基准测试程序的重要区别,也是其能够检测集群人工智能算力的核心所在。人工智能基准测试程序应当基于当前流行的人工智能应用而构建。
4. 评测程序包含必要的多机通信
网络通信是人工智能计算集群设计的主要指标之一,也是其庞大计算能力的重要组成部分。面向高性能计算集群的人工智能基准测试程序应当包括必要的多机通信,从而将网络通信性能作为最终性能的影响因素之一。同时,基准测试程序中的多机通信模式应该具有典型的代表性。
- 上一篇: 碧桂园建筑机器人正式上岗!工人会被淘汰吗?
- 下一篇: 工业机器人安装调试的13个步骤