AI 算力计算方式
目录
文章目录
- 目录
- 科学计数法基础
- 浮点数
- IEEE 754 计算机浮点数标准
- 单精度浮点数(FP32)
- 双精度浮点数(FP64)
- 单、双精度的应用场景
- 算力
- 浮点数算力
科学计数法基础
科学计数法最初被设计用于表示一个极大或极小数,基本形式为 a * 10^n,通过对 n 次幂的转换使得 a 的取值范围为 [1, 10)。例如:
- 19971400000000 可以表示为 1.99714 * 10^13
- 0.00001 可以表示为 1 * 10^-5
科学计数法被广泛应用于科学、工程、数学等领域,很好的简化了极大数或极小数的书写方式和计算。
- 简化表示:极大或极小数可以用更简洁的形式表示,避免书写大量零。
- 方便计算:在科学和工程计算中,科学计数法可以简化运算过程,尤其是处理极大数或极小数时。
- 易于比较:通过比较指数,可以快速判断两个数的大小。
尤其在计算机科学领域,科学计数法通常会使用 E 或 e 来表示 10 的幂次。例如:
- 1.2 * 10^4 可以表示为 1.2E4 或 1.2e4
- 5 * 10^-3 可以表示为 5E-3 或 5e-3
浮点数
浮点数就是小数,“浮点” 的含义是它的小数点的位置可以漂浮不定,这是基于科学计数法带来的特性,例如:
- 十进制小数 0.1234,用科学计数法表示可以有多种方式:
1.234 = 1.234 * 10^0
1.234 = 12.34 * 10^-1
1.234 = 123.4 * 10^-2
...
IEEE 754 计算机浮点数标准
IEEE 754 标准的全称为 IEEE Standard for Floating-Point Arithmetic,旨在统一计算机中浮点数的表示、存储和计算方法。其核心内容包括:浮点数的书写格式和数据类型。
浮点数的书写格式:由 4 个部分组成。
- 符号位(S):表示数的正负,0 正数,1 负数。
- 尾数位(M):表示有效数字。
- 基数位(R):计算机二进制的基数就是 2。
- 指数位(E):表示 R 的 E 次幂。
V = (-1)^S * M * R^E
其中,为了让 E 始终以一个无符号整数存储,IEEE 754 引入了偏置值(bias)来表示实际 E 的负数。
- 对于单精度浮点数,偏置值为 127,例如:当实际 E 是 -1,那么存储 E 则为 127 - 1 = 126。
- 对于双精度浮点数,偏置值为 1023。
2)浮点数的类型:主要包括 2 大类。
- 单精度浮点数(32 位):1 位符号位、8 位指数位和 23 位尾数位组成。
- 双精度浮点数(64 位):1 位符号位、11 位指数位和 52 位尾数位组成。
单精度浮点数(FP32)
十进制数 0.125 的 IEEE 754 标准单精度浮点数表示如下:
1)将十进制 0.125 转换为二进制 0.001,科学计数法 1.0 * 2^-3,方法为:
- 整数部分:除 2 取余法,0/0=0,余 0。
- 小数部分:乘 2 取整法,
- 0.125×2=0.25,整数部分 = 0
- 0.25×2=0.5,整数部分 = 0
- 0.5×2=1.0,整数部分 = 1
2)将二进制 1.0 * 2^-3 转换为单精度浮点存储数值,方法为:
- S:由于数字为正数,所以符号位为 0。
- M:由于指数的偏移量为 127,实际 E 为 -3,所以存储 E 为 -3+127=124,二进制为 01111100。
- E:由于尾数 1.0 的整数位 1 被标准定义省略,则剩下的为 22 个 0。
最终,将符号位、指数位和尾数位组合在一起,得到十进制数 0.125 的单精度浮点数的二进制表示为 0 01111100 00000000000000000000000。
双精度浮点数(FP64)
同理,得到十进制数 0.125 的双精度浮点数的二进制表示为 0 01111111100 0010000000000000000000000000000000000000000000000000。
单、双精度的应用场景
单精度浮点数通常应用在需要较高计算速度的场景,例如嵌入式系统和移动设备。在这些应用中,对于一些实时性要求较高的任务,如图形渲染、音视频处理等,单精度浮点数能够提供足够的精度,并且在存储和计算上更加高效,能够满足实时性和资源限制的需求。此外,单精度浮点数也广泛应用于科学研究和工程领域中的数值计算,包括求解方程、模拟物理过程等。在这些领域中,单精度浮点数的精度已经足够满足大部分的计算需求,同时可以提高计算速度和节省存储空间。
双精度浮点数主要应用于需要更高精度的场景,如科学计算、工程计算、金融分析等。在这些领域中,对计算结果的精确性要求较高,需要更多的有效数字来表示和处理实数。双精度浮点数能够提供更高的精度和更大的表示范围,能够处理更复杂和精细的计算任务。在科学计算中,如天文学、数值模拟等领域,双精度浮点数常常用于求解复杂的数学模型和算法,以获得更准确的结果。在金融分析中,双精度浮点数可以处理更大的数值范围和更高的精度,确保计算结果的准确性和可靠性。
简而言之,相比于单精度浮点数,双精度浮点数能够处理更大范围的数值和提供更高的精度,适用于对精确性要求较高的计算任务。选择单精度还是双精度浮点数应根据具体应用的需求来决定,需要权衡计算速度、精度要求和资源限制等因素。单精度浮点数适用于对计算速度要求较高且精度要求不是特别严格的场景,而双精度浮点数适用于对精度要求更高的科学计算和工程领域。
算力
算力(Computational Power):指计算机系统的运算能力,涵盖了 CPU、GPU、TPU、NPU 等运算芯片的能力特征,算力决定了计算机处理信息的速度和效率,是评估计算机整体性能的重要指标。
算力单位:是计算机系统在单位时间内(每秒)能够完成的运算次数,例如:Peta-FLOPS,千万亿次浮点运算/每秒。算力单位 = 算力量级 + 算力类型。
算力类型:
- OPS(Operations Per Second):每秒整数运算次数,通常指的是 GPU 的 INT8、INT16 算力,典型代表了计算机在处理图像、音频等任务时的处理能力。
- FLOPS(Floating-point Operations Per Second):每秒浮点数运算次数,通常指的是 GPU 的 FP8、FP16、FP32、FP64 算力,典型代表了 AI/ML 训练和推理的处理能力。
算力量级:
- Kilo:千,10^3
- Mega:百万,10^6
- Giga:十亿,10^9
- Tera:万亿,10^12
- Peta:千万亿,10^15
- Exa:百亿亿,10^18
浮点数算力
浮点运算其实就是带小数的加减乘除运算。举个例子:1.1+2.2 就是典型的浮点运算,估计你已经心算出结果是 3.3 了。不过对计算机来说,这个问题并不简单。我们知道,计算机是以 0 和 1 构成的二进制数字进行运算的,比如在基础的二进制里,1 就是 1,2 就变成了 “10”,3 是 “11”。
这也带来一个问题:计算机能够处理的数字只有整数。其实,0.1 可以看成是1除以10的结果,我们想让计算机计算一个带小数点的数字,只要告诉 CPU 这是一个被 1 后面加了多少个 0 整除的整数就行了。这样一来,计算机在处理小数点的时候,就多了好几个运算步骤。浮点运算的速度也就成了衡量计算机性能的标准。