TOPS、MIPS、DMIPS、MFLOPS、吞吐量与推理效率

1.概述

在深度学习对应的神经推理中经常涉及几个重要概念,TOPS、MIPS、DMIPS,MFLOPS,下文对其做对比说明。

2.概念对比

2.1 MIPS

Million Instructions Per Second的缩写,每秒处理的百万级的机器语言instructions。这是衡量处理速度的一个指标。比如一个Intel 80386 电脑可以每秒处理3 million到5 million机器语言指令,那么我们就说80386是3~5MIPS的CPU。MIPS只是衡量CPU性能的指标。注意:这里的instructions指的是任意类型的,可能有取数据、译码、decimal numbers相关等。

与此同时,MIPS还是一家美国著名的芯片设计公司,是一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。1984年,MIPS计算机公司成立。1992年,SGI收购了MIPS计算机公司。1998年,MIPS脱离SGI,成为MIPS技术公司。

MIPS公司设计RISC处理器始于1980s年代初,1986年推出R2000处理器,1988年推R3000处理器,1991年推出第一款64位商用微处器R4000。之后又陆续推出R8000(于1994年)、R10000(于1996年)和R12000(于1997年)等型号。

随后,MIPS公司的战略发生变化,把重点放在嵌入式系统。1999年,MIPS公司发布MIPS32和MIPS64架构标准,为未来MIPS处理器的开发奠定了基础。新的架构集成了所有原来NIPS指令集,并且增加了许多更强大的功能。MIPS公司陆续开发了高性能、低功耗的32位处理器内核 (core)MIPS324Kc与高性能64位处理器内核MIPS64 5Kc。2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及64位MIPS 64 20Kc处理器内核。 


2.2 DMIPS

DMIPS是D-MIPS的组合。具体来说:D是Dhrystone的缩写,表示了在Dhrystone这样一种测试方法下的MIPS,Dhrystone是一种整数运算测试程序。以下是在FOLDOC上的解释:

Dhrystone
A short synthetic benchmark program by Reinhold Weicker , intended to be representative of system (integer) programming. It is available in ADA, Pascal and C.The current version is Dhrystone 2.1. The author says, "Relying on MIPS V1.1 (the result of V1.1) numbers can be hazardous to your professional health."
Due to its small size, the memory system outside the cache is not tested. Compilers can too easily optimise for Dhrystone. String operations are somewhat over-represented.
(2002-03-26)
(c) Copyright 1993 by Denis Howe


2.3 MFLOPS

MFLOPS在FOLDOC上的解释如下:

A benchmark which attemps to estimate a system's floating-point "MFLOPS" rating for specific FADD, FSUB, FMUL and FDIV instruction mixes.

是一种基于浮点运算的CPU测试程序,当然,这种测试的结果也以 MFLOPS来加以表示,代表了CPU处理浮点运算的能力。

CPU性能评估采用综合测试程序,较流行的有Whetstone 和 Dhrystone 两种。Dhrystone主要用于测整数计算能力,计算单位就是DMIPS。采用Whetstone 主要用于测浮点计算能力,计算单位就是MFLOPS。

无论是MIPS或MFOPS表示的与decimal numbers相关的指令操作,取数据、译码不包含在内。

2.4 TOPS

  • TOPS是Tera Operations Per Second的缩写,是计算机的算力单位。1TOPS代表处理器的算力是1s可进行一万亿次(10^{12}) 或tera计算操作op,单次运算op,当前一般指矩阵相乘时的乘加运算。

  • 与此对应的还有GOPS(Giga Operations Per Second),MOPS(MillionOperation Per Second)算力单位。1GOPS代表处理器每秒钟可进行十亿次(10^9),1MOPS代表处理器每秒钟可进行一百万次(10^6)计算操作。

  • TOPS、MOPS、GOPS都是算力单位,都代表每秒钟能计算的次数,可以相互换算。

  • 广义上,它可以再任意加上一个数据类型,作为指对在特定数据类型上的处理能力,比如对INT8(8位整型)、FP32(32位双精度)。对于后者这些浮点数类型,单位会增加一个 FL 特指 Float-point,即 TFLOPS。

  • 除了表示计算操作的速度快慢,还有类似 TOPS/W 这样的单位来附加说明能耗关系,它表示每瓦电力能产生多少算力。

由于目前市场主流的计算性能对比都在 TOPS (兆亿每秒)这个级别上,所以这个单位被广泛使用。不同算力单位的数量级对比如下。

3.推理效率

目前市场上有数十家公司已经或正在开发用于神经网络推理的 IP 和芯片。几乎每家人工智能公司都提供 TOPS的信息,但几乎没有介绍其他信息。

TOPS是每秒数万亿或万亿次操作。它主要是衡量可实现的最大吞吐量,而不是实际吞吐量的衡量标准。大多数操作是 MAC(multiply/accumulates),因此:

                         TOPS =(MAC 单元数)x(MAC 操作频率)x 2

因此,更多的 TOPS 意味着更多的硅基面积、更高的成本、更高的功耗,也许还有更高的吞吐量,但这取决于推理加速器的其他方面。

光有TOPS来指代推理效率是不够的。进一步需要知道具体的model、image size、batchsize - 所有这些结合起来才能告诉芯片或 IP 是否满足具体的吞吐量要求。

单位成本的吞吐量Throughput 是给定模型、图像大小、批量大小的推理效率,不同的备选方案之间可以进行综合比较或单项比较。通过查看芯片的市场价格,可以来粗略估算它的推理成本。

所有推理加速器都将有 4 个关键组件,这些组件将构成芯片的大部分:

  1. MAC(现在假设所有 MAC 都是 INT8,但许多 MAC 都有 INT16 和 BFloat16 选项);
  2. SRAM(可以是芯片上分布式的或在芯片上是集中式的);
  3. DRAM(每个 DRAM 需要片上一个 DDR PHY 和大约 100 个额外的 BGA balls);
  4. 连接计算和内存模块以及控制神经网络模型执行逻辑的互连架构。

更多的MAC、更多的SRAM、更多的DRAM和更多的互连将提高推理效率,但同时也会增加成本。

推理目标是获得最大的推理效率:使用最少的 MAC、SRAM、DRAM 和互连架构,最大限度地提高吞吐量(对于给定模型、图像大小、批量大小)。由于功耗与成本具有大致的相关性:功耗来自MAC、SRAM、DRAM和互连架构 - 其中的每一项增加都将转化为更高的功率。

少量但不是很多公司为其推理加速芯片提供额外的数据:TOPS、DRAM 数量(决定 DRAM 带宽)和 ResNet-50 的吞吐量。单位成本的Throughput可以通过查看Throughput/TOPS、Throughput/SRAM 和Throughput/DRAM 的组合来近似计算得出。

ResNet-50 可能不是最好的测试benchmark ,也没有人在应用程序中实际使用它。但它是唯一有足够数据进行比较的基准。需要注意的是,根据每种体系结构的特征不同,更大的models和更大的图像尺寸的相对性能可能也会发生显著变化。

下面我们将比较 TOPS 从 400(Groq)~0.5 (Jetson Nano)的推理加速性能。由于很难提供想要的全部数据,下表中列出的芯片已发布特定批量大小的 TOPS 和 ResNet-50 性能数据,我们从中也足以看到一些基本的趋势。芯片按从最高 ResNet-50 吞吐量到最低吞吐量的顺序排列,其中两列显示 batch=1 吞吐量和 batch=10++ 吞吐量。如果未给出batch大小,我们假设它是 large batch。

注意,TOPS 和吞吐量具有松相关性,但某些芯片比其他芯片以更少的 TOPS 也可以提供更高的吞吐量。这是因为互联架构、SRAM大小和DRAM数量在决定吞吐量方面也非常重要。

a)  Throughput/TOPS:衡量模型使用 MAC 效率的指标

Throughput/TOPS告诉我们芯片使用其MAC的效率如何,至少对于给定的模型而言是这样。

下表中除了 InferX X1 之外,其它芯片都没有表明它们有多少 SRAM(X1 有 8MB)。更多的SRAM和更多的DRAM都将有助于提高MAC的利用率,但需要付出相应代价。因此,最高Throughput/TOPS不一定是最佳单位成本下的Throughput,我们需要知道使用了多少会增加成本的内存。

下表按吞吐量降序显示了 ResNet-50 的Throughput/TOPS。

b)  Throughput/DRAM:衡量DRAM利用效率的指标

接下来,可以查看ResNet-50 Throughput/DRAM(DRAM 的数量,而不是千兆位:DRAM 主要用于推理带宽而不是容量)。

下表按 ResNet-50 的Throughput/DRAM 降序排序。

c) Throughput/SRAM:衡量SRAM利用效率的指标

SRAM大小可能与MAC的面积一样大或更大,因此了解SRAM 容量对于估算单位成本Throughput非常重要。不幸的是,很少有芯片提供具体数据:下表中只列出有 2 个,Hailo-8 的 SRAM 大小是微处理器报告的估计值。

通过汇制出Throughput/TOPS vs Throughput/DRAM,以及Throughput/TOPS vs Throughput/SRAM 关系图,可以估算得到单位成本下的Throughput,由此可以得出一些结论。

上述表格中 TOPS 和 DRAM 数据最多——我们在下面绘制了 ResNet-50 batch=1 和 ResNet-50 batch=10+ 的数据。

关于TOPS和SRAM的数据最少,如下图所示,只有 ResNet-50 batch=1对应数据。


4.结论

如何将上述分析方法应用于具体的程序,这主要有三步。

1)首先,需要具体的model-size、image-size和batch-size。

2)然后,通过查看芯片供应商资料手册提供的该model-size、image-size和batch-size下的 INT8 Throughput,以及对应的 TOPSSRAM 的片上megabytes大小和用于实现Throughput的 DRAM 数量。

3)最后,使用上述分析方法绘制结果,可以深入了解应用程序的单位成本对应的Throughput。

5.参考资料

TOPS, Memory, Throughput And Inference Efficiency

MIPS?、DMIPS和MFLOPS的定义、区别和联系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【单片机】四种烧写方式简介

目录 单片机的四种烧写方式简介 1.使用JTAG接口实现2.SWD接口烧录方式3.ISP烧写方式,用UART实现(常用)4.SWIM单总线下载方式 烧录方式基本介绍烧录方式详述 1、ISP:In System Programming2、IAP:In Applicatin Program…

部分城市公交站点数据,Shp+excel格式数据,2020年,几何类型为点

随着城市的发展和人口的增长,公共交通成为了人们出行的重要方式之一。而公交站点作为公共交通的重要组成部分,其数据信息的获取和分析对于城市规划和管理具有重要意义。 今天来分享一下部分城市公交站点数据: 首先先了解下该数据的基本信息 …

报错解决:RuntimeError: Error building extension ‘bias_act_plugin‘

系统: Ubuntu22.04, nvcc -V:11.8 , torch:2.0.0cu118 一:BUG内容 运行stylegan项目的train.py时遇到报错👇 Setting up PyTorch plugin "bias_act_plugin"... Failed! /home/m…

使用 RaiseExceptionMeta 元类隐式装饰 Validator 类中的所有校验方法

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、相关回顾 使用 raise…

Qt QLineEdit文本框控件

文章目录 1 属性和方法1.1 占位字符串1.2 对齐方式1.3 回显模式1.4 读写控制1.5 格式控制1.6 信号和槽 2 实例2. 布局2.2 代码实现 QLineEdit 是Qt 中的文本框,准确地说是单行文本框,通常用于接受用户的输入。 比如用户输入用户名、密码等,都…

ChatGPT付费创作系统V2.5.5独立版+前端

ChatGPT付费创作系统V2.5.5版本优化了很多细节,功能增加增加长篇写作功能。该版本为编译版无开源,本版本特别处理了后台弹窗、暗链网址。特别优化了数据库。升级过程中未发现任何BUG,全新安装或者升级安装均未出现400或者500错误,…

【数据结构专题】「延时队列算法」史上手把手带你认识一下数据结构的基本概念与术语

在本节中,我们将对一些概念和术语赋以确定的含义,以便与读者取得“共同的语言”。这些概念和术语将在以后的章节中多次出现。 数据 概念 数据(data) 是对客观事物的符号表示, 在计算机科学中是指所有能输人到计算机中并被计算机程序处理的…

Python 工具 | conda 基本命令

Hi,大家好,我是源于花海。本文主要了解 Python 的工具的 conda 相关的基本命令。Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。在Windows下,需要安装…

Mobile Aloha 【软硬件原理+代码解析】

1. Mobile ALOHA Hardware2. Imitation Learning3. Co-training with Static ALOHA Data4. Task Setting5. Experiments5.1 ACT5.2 对比ACT、Diffusion Policy和VINN 6. Software Code Analyze Mobile ALOHA: 利用低成本全身远程操作系统学习复杂的双手移动操作技能 [译] 硬件代…

Elasticsearch基本操作之文档操作

本文来说下Elasticsearch基本操作之文档操作 文章目录 文档概述创建文档示例创建文档(生成随机id)创建文档(自定义唯一性标识) 查看文档示例根据主键查看文档查看所有文档 修改文档示例全局修改文档局部修改文档 删除文档示例根据文档的唯一性标识删除文档条件删除文档 本文小结…

【leetcode 447. 回旋镖的数量】审慎思考与推倒重来

447. 回旋镖的数量 题目描述 给定平面上 **n **对 互不相同 的点 points ,其中 points[i] [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的欧式距离相等(需要考虑元组的顺序)。 返回平…

Linux引导过程和服务

一、Linux操作系统引导过程 1.引导过程 bios 加电自检——mbr——grub——加载内核——启动进程 加电后BIOS程序回自检硬件,硬件无故障后,会根据第一次启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mb…

深入了解网络流量清洗--使用免费的雷池社区版进行防护

​ 随着网络攻击日益复杂,企业面临的网络安全挑战也在不断增加。在这个背景下,网络流量清洗成为了确保企业网络安全的关键技术。本文将探讨雷池社区版如何通过网络流量清洗技术,帮助企业有效应对网络威胁。 ![] 网络流量清洗的重要性&#x…

第四站:指针的进阶-(二级指针,函数指针)

目录 二级指针 二级指针的用途 多级指针的定义和使用 指针和数组之间的关系 存储指针的数组(指针数组:保存地址值) 指向数组的指针(数组指针) 传参的形式(指针) 数组传参时会退化为指针 void类型的指针 函数指针 定义: 调用:两种方式:(*指针名)(参数地址) 或者 指针…

别闹了,真的不是你的技术菜!!!

最近经常听到有小伙伴总是在抱怨自己的技术菜,公司没有机会让自己去成长技术,于是小编就此场景来写一篇文章,希望对大家有帮助。 错误的理解CRUD工程师 CRUD工程师这个名称是很多小伙伴都听过的,并且很多工程师都把自己比作是代…

Ubuntu 18.04.5 LTS 解决安装包复杂依赖相关问题解决的主要法则和VIM的安装实录

前言:目标和环境 环境: Ubuntu 18.04.5 LTSVMware 目标: 安装vim,解决包依赖的冲突: 本文,通过一个很好的实例,诠释了,LINUX系统下,安装一个应用遇到的依赖库问题如何…

Wilcoxon秩和检验-校正P值(自备)

R语言 boxplot作图 图内展示校正后的P值(padj)_r语言 p值校正-CSDN博客 FDR错误发现率-P值校正学习_fdr和p值的关系-CSDN博客 原理介绍: Benjamini-Hochberg 方法介绍 有N次假设检验,对每一次假设检验都计算其P值,然后将计算出的P值按照…

对接讯飞聊天机器人接口--复盘

1、准备工作 1)、进入以下平台进行注册,登录后,点击红框处 2)、点击个人免费包(会弹出实名认证,先进行实名认证) 3)、认证后,会进入以下界面,先添加应用 4&am…

代码随想录刷题题Day29

刷题的第二十九天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day29 任务 ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 …

软件测试|深入理解Python的encode()和decode()方法

简介 在Python中,字符串是不可变的序列对象,它由Unicode字符组成。当我们需要在字符串和字节之间进行转换时,Python提供了两个非常重要的方法:encode()和decode()。这两个方法允许我们在Unicode字符和字节之间进行相互转换&#…