nvidia tf32格式的意义是啥?:https://www.zhihu.com/question/545977619
作者:丽台科技
链接:https://www.zhihu.com/question/545977619/answer/2629134304
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
TF32(TensorFloat32)是NVIDIA在Ampere架构推出的时候面世的,现已成为Tensorflow和Pytorch框架中默认的32位格式。大多数AI浮点运算采用16位“半”精度(FP16)、32位“单”精度(FP32),以及面向专业运算的64位“双”精度(FP64),人工智能训练的默认是FP32 ,没有张量核心(Tensor Core)加速度。 NVIDIA Ampere架构引入了TF32的新支持,使AI训练能够在默认情况下使用张量核心,非张量运算继续使用FP32数据路径,而TF32张量核心读取FP32数据并使用与FP32相同的范围,内部精度降低,然后生成标准IEEE FP32输出。 TF32 使用与半精度 (FP16) 数学相同的10位尾数,表明其具有足够的余量来满足AI工作负载的精度要求。TF32采用与FP32相同的8位指数,因此可以支持相同的数值范围。这种组合使TF32成为FP32的绝佳替代品,用于处理单精度数学,特别是深度学习和许多HPC应用程序核心的大量乘法累加函数。除此之外,Ampere架构还引入了Bfloat16 ( BF16 )的数据类型,BF16 / FP32混合精度张量核心运算的运行速度与FP16 / FP32混合精度相同。相对来说,在深度学习计算里,范围比精度要重要得多,于是有了BF16,牺牲了精度,保持和 FP32 差不多的范围,而TF32的设计,在于即汲取了BF16的好处,又保持了一定程度对主流 FP32 的兼容,FP32只要截断就是TF32 了。先截断成TF32计算,再转成FP32,对历史的工作几乎无影响
TF32为用于训练和推理的AI应用程序提供了巨大的开箱即用性能提升,零代码更改,同时能够保持FP32级别的准确性。