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