深度学习-双精度

浮点数据类型主要分为双精度(Fp64)、单精度(Fp32)、半精度(FP16)。

首先来看看为什么需要混合精度。使用FP16训练神经网络,相对比使用FP32带来的优点有:

  • 减少内存占用:FP16的位宽是FP32的一半,因此权重等参数所占用的内存也是原来的一半,节省下来的内存可以放更大的网络模型或者使用更多的数据进行训练。
  • 加快通讯效率:针对分布式训练,特别是在大模型训练的过程中,通讯的开销制约了网络模型训练的整体性能,通讯的位宽少了意味着可以提升通讯性能,减少等待时间,加快数据的流通。
  • 计算效率更高:在特殊的AI加速芯片如华为Ascend 910和310系列,或者NVIDIA VOTAL架构的Titan V and Tesla V100的GPU上,使用FP16的执行运算性能比FP32更加快。

但是使用FP16同样会带来一些问题,其中最重要的是1)精度溢出和2)舍入误差

  • 数据溢出:数据溢出比较好理解,FP16的有效数据表示范围为 6.10 × 10 − 5 ∼ 655046.10 × 1 0 − 5 ∼ 65504 6.10×10−5∼655046.10\times10^{-5} \sim 65504 6.10×10−5∼655046.10×10−5∼65504,FP32的有效数据表示范围为 1.4 × 10 − 451.7 × 10381.4 × 1 0 − 45 1.7 × 1 0 38 1.4×10−45 1.7×10381.4\times10^{-45} ~ 1.7\times10^{38} 1.4×10−451.7×10381.4×10−45 1.7×1038。可见FP16相比FP32的有效范围要窄很多,使用FP16替换FP32会出现上溢(Overflow)和下溢(Underflow)的情况。而在深度学习中,需要计算网络模型中权重的梯度(一阶导数),因此梯度会比权重值更加小,往往容易出现下溢情况。
  • 舍入误差:Rounding Error指示是当网络模型的反向梯度很小,一般FP32能够表示,但是转换到FP16会小于当前区间内的最小间隔,会导致数据溢出。如0.00006666666在FP32中能正常表示,转换到FP16后会表示成为0.000067,不满足FP16最小间隔的数会强制舍入。
相关推荐
京东零售技术16 分钟前
京东零售胡浩:智能供应链从运筹到大模型到超级智能体的演进
大数据·人工智能
榕壹云20 分钟前
GEO正在通过大模型技术重构企业数字营销生态
人工智能·重构·geo
K姐研究社4 小时前
通义万相Wan2.5模型实测,可生成音画同步视频
人工智能·aigc·音视频
云起SAAS4 小时前
老年ai模拟恋爱抖音快手微信小程序看广告流量主开源
人工智能·微信小程序·小程序·ai编程·看广告变现轻·老年ai模拟恋爱·ai模拟恋爱
ModelWhale6 小时前
喜报!和鲸科技获张江国家自主创新示范区专项发展资金支持
大数据·人工智能·科研
飞哥数智坊6 小时前
AI 编程时代,你得学会“狠心”删代码
人工智能·ai编程
stbomei6 小时前
静默期的跃迁:2025 年 AI 技术落地与产业重构路径
人工智能·重构
可触的未来,发芽的智生7 小时前
新奇特:神经网络烘焙坊(下),万能配方的甜蜜奥义
人工智能·python·神经网络·算法·架构
RoboWizard7 小时前
移动固态硬盘无法被电脑识别怎么办?
大数据·人工智能·缓存·电脑·金士顿
zero13_小葵司7 小时前
基于多Agent构建AI驱动的智能化软件开发协作平台
人工智能·aigc·软件工程·团队开发·ai编程