参考
全网最全-混合精度训练原理:https://zhuanlan.zhihu.com/p/441591808
FP64、FP32、FP16、FP8简介:https://blog.youkuaiyun.com/weixin_42330305/article/details/127518011
AI为何用fp32
你要搞清楚一点,深度学习场景下只要FP32就可以确保训练收敛,甚至目前还会进一步“退化”到FP16+FP32混合精度以提高效率,然后推理场景下因为不需要反向传播,FP16,INT8甚至INT4都可以。使用FP64在效果上几乎没有提升,反而会导致大量的算力和空间浪费.
那么AI4Science的目标是什么呢? 通过深度学习解决科学问题一一它本质上还是一个AI问题而非Science问题。很多问题的科学计算代价已经超过了硬件能承受的极限,所以才要使用深度学习方法,希望能找出一条结果准确性可以接受的“捷径”。
负数在计算机里面是怎么存储的
负数通常使用补码来存储的主要原因是它的计算方式更加简单和一致,而且可以使用相同的硬件电路来执行加法和减法操作。以下是补码的原理和如何得出它的简要说明:
原因:
- 一致性: 补码可以使计算机内部的运算在加法和减法时变得一致。这意味着计算机只需要一个加法电路来执行这两种操作,从而减少了硬件复杂性。
- 去除溢出问题: 补码的运算不需要考虑溢出问题,因为溢出时溢出的位被丢弃,这是因为加法和减法操作是相同的。
如何得出补码:
补码是通过对原码(二进制表示的正数)应用以下步骤来得出的: - 取反(反码): 首先,将原码中的每个位取反,即0变为1,1变为0。
- 加1: 然后,在得到的反码上加1。
举例来说,如果要得到 -3 的8位补码,首先需要将 3 的8位原码(00000011)取反得到反码(11111100),然后加1得到补码(11111101)。这就是 -3 的8位补码表示。
这样的表示方式使计算机能够执行加法和减法,同时不需要额外的硬件逻辑来处理负数。另外,补码还可以简化计算机中的逻辑运算,因为负数的补码与正数的原码可以使用相同的逻辑门电路来执行。
补码的定义方式是来自于数学和计算机科学的数值表示和运算原理。它基于原码(正数的二进制表示)取反再加一的方式,是因为这种方式满足了一致性和计算的需要,以及在计算机硬件中的实施方便。以下是补码形成方式的解释:
-
一致性: 补码的设计目的之一是为了使负数的加法和减法操作在计算机中变得一致。当一个正数的原码(二进制表示)被取反再加一时,得到了这个正数的相反数的补码。这就使得计算机可以使用相同的加法电路来执行这两种操作,从而减少了硬件复杂性。
-
简化硬件: 这种取反再加一的方式也简化了计算机内部的硬件设计。减法操作可以直接使用加法电路来实现,而不需要特殊的减法电路。
-
消除溢出问题: 补码运算不需要特别处理溢出。当计算结果溢出时,溢出的位被简单地丢弃,不需要特殊的逻辑来处理。
-
模运算: 补码在模运算下是封闭的。这意味着如果您对一个补码整数加上其相反数,您将得到零,这在某些数学和计算上有优点。
总之,补码的形成方式取反再加一是基于数学和硬件设计原理的一种选择,它使计算机在处理负数和正数时变得一致和高效,同时简化了硬件设计,是计算机科学中广泛接受的标准方式。