Ram Cherukuri MathWorks
本视频介绍了半精度或float16的概念,这是一种相对较新的浮点数据。它可以将记忆的使用减少一半,并在加速深度学习训练和推理方面变得非常流行。我们还将讨论传统控制应用程序相对于传统32位单精度或64位双精度数据类型的优点和折衷。
与传统的32位单精度或64位双精度数据类型不同,半精度或float16是一种使用16位的相对较新的浮点数据类型。
所以,当你在MATLAB中声明变量为1 / 2时,比如说pi,你可能会注意到,与我们在这里看到的单或双表示相比,精确度有所下降。
这种差异来自于半精度所使用的有限位数。我们只有10位精度和5位指数,而不是23位精度和8位指数。因此eps要大得多,而且动态范围有限。
那么为什么它很重要呢?Half最近的流行是由于它在加速深度学习训练和推理方面的有用性,主要是在NVIDIA gpu上。此外,英特尔和ARM平台也支持一半加速计算。金宝app
使用半精度的明显好处是减少了50%的内存和数据带宽,正如我们在这里看到的Resnet50。此外,硬件供应商还提供了一半的计算硬件加速,如NVIDIA gpu的CUDA内部特性。
我们看到传统的应用程序,如动力系统控制系统,在这里可能以查找表的形式显示数据,如图所示。通过使用一半的存储类型,您可以将这个2D查找表的内存占用减少4x。
然而,理解有限精度和半精度范围之间的权衡是很重要的。以深度学习网络为例,量化误差的数量级为10^-4,需要分析量化误差对网络整体精度的影响。
这是对半精确的简短介绍。请参考下面的链接来学习更多关于如何在MATLAB和Simulink中模拟和生成C/ c++或CUDA代码。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。