【什么是FLOPS】

FLOPS,是“每秒所执行的浮点运算次数”(floating-poInt operations per second) 的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。

在这里所谓的“浮点运算”,实际上含括了所有涉及小数的运算。这类运算在某类应用软件中常常出现,而它们也较整数运算花时间。现今大部分的处理器中,都有一个专门用来处理浮点运算的“浮点单元”(FPU)。也因此 FLOPS 所量测的,实际上就是 FPU 的执行速度。对于处理器处理浮点运算来说,而最常用来测量 FLOPS 的基准程序 (benchmark) 之一,就是 LINPACK。

例如:算能公司的“基于SOPHON第三代智算芯片 BM1684”芯片。该款芯片FP32 精度算力也达到 2.2 TFLOPS,INT8算力可高达17.6Tops,在Winograd卷积加速下,INT8算力更提升至35.2Tops,是一颗低功耗、高性能的SoC芯片。BM1684还内置了张量计算模块TPU,该TPU模块包含64个NPU运算单元,每个NPU包括16个EU单元,总共有1024个EU运算单元。

边缘计算和ai算力(关于衡量AI算力的)(1)

1TFlops=1024GFlowps,即1T=1024G。

各种FLOPS的含义:

1) 一个MFLOPS(megaFLOPS)等于每秒1百万(=10^6)次的浮点运算;

2) 一个GFLOPS(gigaFLOPS)等于每秒10亿(=10^9)次的浮点运算;

3) 一个TFLOPS(teraFLOPS)等于每秒1万亿(=10^12)次的浮点运算;

4) 一个PFLOPS(petaFLOPS)等于每秒1千亿(=10^15)次的浮点运算。

【关于 Linpack】

Linpack是国际上使用最广泛的测试高性能计算机系统浮点性能的基准测试。通过对高性能计算机采用高斯消元法求解一元 N次稠密线性代数方程组的测试,评价高性能计算机的浮点计算性能。Linpack的结果按每秒浮点运算次数(flops)表示。

很多人把用 Linpack基准测试出的最高性能指标作为衡量机器性能的标准之一。这个数字可以作为对系统峰值性能的一个修正。通过测试求解不同问题规模的实际得分,我们可以得到达到最佳性能的问题规模,而这些数字与理论峰值性能一起列在 TOP500列表中。

Linpack 测试包括三类,Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组,它只允许采用编译 优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解1000阶的线性代数方程组,达到指定的精度要求,可以在 不改变计算量的前提下做算法和代码上做优化。HPL即High Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方 法。前两种测试运行规模较小,已不是很适合现代计算机的发展。

HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可 以调节问题规模大小(矩阵大小)、使用CPU数目、使用各种优化方法等等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。求解 问题规模为N时,浮点运算次数为(2/3 * N^3-2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3-2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。HPL测试结果是TOP500排名的重要依据。

计算机计算峰值简介:衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点 计算最大次数,它主要是由 CPU的主频决定的。计算公式如下: 、理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算次数×CPU数量。

【AI算力评估为什么不用LINPACK】

传统的高性能计算机评测方法和体系与当前人工智能需求的性能并不完全一致。例如,LINPACK是一个目前被广泛采用的高性能计算机双精度浮点运算性能基准评测程序,国际超算Top 500榜单依据LINPACK值来进行排名,而典型的人工智能 应用并不需要双精度浮点数运算。大部分人工智能训练任务以单精度浮点数或半精度浮点数为主,推理以Int8为主。

对大规模人工智能算力来说,制定一个简单有效的指标和测试方法并不是一件容易的事情。首先,大部分单个人工智能训练任务(例如训练一个推荐系统或者图像分类的神经网络模型)达不到全机上百张加速器卡规模的计算需求。很多人工智能应用,即使使用全机规模,其训练时间和准确率也可能没有改进。其次,如果要测试规模变化的人工智能集群计算机,测试程序必须能够规模可变。首先必须明确,什么样的主流人工智能应用是规模可以任意调整的。最后,准确率的判定和计算是大规模人工智能算力评测与传统高性能计算基准评测之间的一个显著区别。是否需要使残差小于给定标准,是否要将准确度计入分数统计,同样是需要明确的问题。

目前,各大企业、高校和相关组织在人工智能性能基准测试领域已经有了很多探索,相继开发了各类基准评测程序,比如谷歌等公司主导的MLPerf,小米公司的MobileAI bench,百度公司的DeepBench,中国人工智能产业发展联盟的AIIA DNN Benchmark,以及在双精度的LINPACK基础上改成混合精度的HPL-AI等。但是这些基准测试方案都不能很好地解决上述问题。根据MLPerf公开发表的数据,MLPerf程序在百张TPU加速卡以上规模测试下扩展性就会出现下滑,在千张TPU加速卡级别到达评测体系的扩展性瓶颈,该评测程序很难评价不同系统在该规模下人工智能算力的差异。

边缘计算和ai算力(关于衡量AI算力的)(2)

MLPerf是一套衡量机器学习系统性能的权威标准,于2018年由谷歌、哈佛、斯坦福、百度等机构联合发起成立,每年定期公布榜单成绩,它将在标准目标下训练或推理机器学习模型的时间,作为一套系统性能的测量标准。MLPerf训练任务包括图像分类(ResNet50)、目标物体检测(SSD)、目标物体检测(Mask R-CNN)、智能推荐(DLRM)、自然语言处理(BERT)以及强化机器学习(Minigo)等。最新的1.0版本增加了两项新的测试项目:语音识别(RNN-T)和医学影像分割(U-Net3D)。

在Resnet50训练中,硬件及设备平台的选取至关重要。其中磁盘读取性能、CPU运算性能、内存到显存的传输性能以及GPU运算性能对训练速度的影响都比较大:磁盘读取性能直接决定训练数据供给的速度;CPU的性能、CPU到GPU的传输带宽以及GPU的性能共同决定了数据前处理的速度;而训练中的前向推理和反向传播由GPU的性能及GPU之间的数据传输带宽决定。如同工厂流水线上的几名工人,任何一名工人的处理速度跟不上就会导致堆积,成为性能瓶颈,影响最终结果。因此这几个重要部分不能有明显的短板。

此时就会用Resnet50模型进行图片分拣,得出每秒处理图片数量作为一个性能指标。

边缘计算和ai算力(关于衡量AI算力的)(3)

【经典芯片的算力】

以下列出几个有代表性硬件的每秒浮点运算次数

GFLOPSTFLOPSPFLOPS

,