当前位置: 首页 > news >正文

BF16相比FP16的优点

BF16和FP16

参考链接:

  • Understanding the advantages of BF16 vs. FP16 in mixed precision training
  • Megatron-LM & Megatron-Core
  • BFloat16: The secret to high performance on Cloud TPUs

BF16相比FP16的优点:

  • BF16和FP16都是两个字节,区别是指数位和小数位不一样
  • BF16的指数位和FP32一样,所以在整数表示的范围上,BF16和FP32保持一致,但是在小数精度上比较低。
    • 这样可以保证在模型训练的过程中尽量不要发生数据的溢出(上溢或者下溢),防止在一些计算中出现nan的数据(例如inf * 0 = nan),导致了模型的训练崩溃。
    • 小数精度上虽然BF16有损失,但是考虑到FP16在训练过程中,和FP32进行转换的时候,也会发生小数精度上的损失,所以小数精度虽然重要,但是相比数据溢出出现nan问题,可能并不是一个最大的问题,毕竟nan会导致模型无法正常训练,且一个参数出现nan,很快就会导致整个模型参数都变成nan。
  • 在混合精度训练过程中,BF16比FP16更加节省内容,这里我理解,是因为FP16的混合精度训练过程中,需要保存一个模型副本,然后前向推理过程中还需要一个FP16的副本。但是在BF16中,这个FP32和FP16的副本可以直接用一个FP32来使用,因为BF16相当于是FP32的前两个字节,需要用BF16的时候,直接截取前两个字节进行计算(这里可能会有精度损失,但是使用FP16这样转换也一样会有精度损失),需要FP32的时候,再把后两个字节加回来。
    • BF16转化到FP32更加简单,不需要做转化了,直接截取前2个字节。FP16和FP32之间的转换需要更多的逻辑操作。
    • 由于直接使用一个FP32来存储FP32和BF16的副本,所以这里减少了转换步骤,更加方便快捷
    • BF16 硬件可以实现比相同芯片尺寸的 FP32 单元更高的吞吐量(With fewer mantissa bits than FP16, the bfloat16 multipliers are about half the size in silicon of a typical FP16 multiplier, and they are eight times smaller than an FP32 multiplier!)

相关文章:

  • alist配合onlyoffice 实现在线预览
  • 达梦数据库
  • Ajax入门
  • 深度学习中2D检测
  • 小程序中用于跳转页面的5个api是什么?区别
  • Locust:用Python编写可扩展的负载测试
  • Vue 学习笔记 总结
  • 大厂真实面试题(一)
  • calibre,一个超厉害的 Python 库!
  • 重新学习STM32(2)NVIC
  • OpenGL相关库下载并解决三个入门问题
  • kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心
  • 路由器重启真的好吗?多久重启一次更好?
  • 计算机网络 4.1双绞线
  • python-windows10普通笔记本跑bert mrpc数据样例0.1.001
  • 网络传输文件的问题
  • 收藏网友的 源程序下载网
  • CentOS从零开始部署Nodejs项目
  • DataBase in Android
  • Mysql优化
  • PAT A1050
  • SegmentFault 2015 Top Rank
  • 搞机器学习要哪些技能
  • 计算机在识别图像时“看到”了什么?
  • 项目管理碎碎念系列之一:干系人管理
  • 终端用户监控:真实用户监控还是模拟监控?
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​TypeScript都不会用,也敢说会前端?
  • ​比特币大跌的 2 个原因
  • ​业务双活的数据切换思路设计(下)
  • # include “ “ 和 # include < >两者的区别
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #Z2294. 打印树的直径
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (备份) esp32 GPIO
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (区间dp) (经典例题) 石子合并
  • (十七)Flink 容错机制
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Scala的“=”符号简介
  • ./configure,make,make install的作用(转)
  • .“空心村”成因分析及解决对策122344
  • .form文件_一篇文章学会文件上传
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .net core 6 redis操作类
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • :O)修改linux硬件时间
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @在php中起什么作用?
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [20170728]oracle保留字.txt