浅谈深度学习混合精度训练
↑ 点击 蓝字 关注视学算法 作者丨Dreaming.O@知乎 来源丨https://zhuanlan.zhihu.com/p/103685761 编辑丨极市平台 本文主要记录下在学习和实际试用混合精度过程中的一些心得总结和建议。 01. 前言 以前一直看到不少混合精度加速模型训练的工作,受限于手上没有 Volta 架构的GPU。体验工作也就只能作罢。但是最近成功申请下来V100机器,除了激动之外,当时心里最大的想法,就是要尝试下这心心念念已久的混合精度加速功能。 02. 基础理论 在日常中深度学习的系统,一般使用的是单精度 float(Single-Precision)浮点表示。在了解混合精度训练之前,我们需要先对其中的主角半精度『float16』进行一定的理论知识学习。 float vs float16 的组成bitmap 在上图可以看到,与单精度float(32bit,4个字节)相比,半进度float16仅有16bit,2个字节组成。天然的存储空间是float的一半。其中,float16的组成分为了三个部分: 最高位表示符号位; 有5位表示exponent位; 有10位表示fraction位; 根据wikipedia上的介绍,我总结下float16的这几个位置的使用,以及如何从其bitmap计算出表示的数字: 如果 Exponent 位全部为0: 如果 fraction 位