Float32、Float16、BFloat16

news2025/4/26 16:27:20
  • 我们先介绍 Float32、Float16、BFloat16 的 浮点数表示方法

  • 然后根据浮点数表示,来分析总结他们是怎么控制 精度和 数值范围 的

  • 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持

1、浮点数的表示方法

  • Float32 : 单精度浮点数格式

    • 使用 32位(4字节)来表示一个浮点数

    • 遵循 IEEE 754标准,32位 包括 1 位符号位、8 位指数部分和 23 位尾数部分

  • Float16:半精度浮点数格式,

    • 使用 16位(2字节)来表示一个浮点数

    • 遵循 IEEE 754标准,16位 包括 1 位符号位、5 位指数部分和 10 位尾数部分

  • BFloat16: Brain Floating Point 16-bit

    • 使用 16位(2字节)来表示一个浮点数

    • 不遵循 IEEE 754标准,16位 包括 1 位符号位、8 位指数部分 和 7 位尾数部分

数据类型

一共位数

符号位数(Sign)

指数位数(Exponent)

尾数位数(Mantissa)

Float32

32

1

8

23

Float16

16

1

5

10

BFloat16

16

1

8

7

float32 结构为 :
S | EEEEEEEE | MMMMMMMMMMMMMMMMMMMMMMM

float16 结构为 :
S | EEEEE | MMMMMMMMMM

bfloat16 结构为 :
S | EEEEEEEE | MMMMMMMMMMMM

 

浮点数的值 通过以下公式计算:

\text { value }=(-1)^{S} \times(1+\text { Mantissa }) \times 2^{(\text {Exponent-Bias })}

其中 :

  • S:符号位,表示数字的正负:0 为正,1 为负

  • Mantissa:尾数部分

  • Exponent:指数部分,表示 2 的幂次

  • Bias:指数的偏置

    • float32 的 Bias 为 127

    • float16 的 Bias 为 15

    • bfloat16 的 Bias 为 127

下面我们具体来举例说明 浮点数的表示

1)float32

  float32 :32位浮点数,通常称为 单精度浮点数

2)float16

  float16 是 16 位浮点数,通常称为 半精度浮点数

  float16的浮点数表示方法 与 float32 的表示方法类似,只不过在表示上有较小的精度和范围。

3)bfloat16

BFloat16 主要用于 深度学习训练阶段,特别是在需要保持与 Float32 类似的 数值范围 的同时,减少内存占用(精度比较低)


2、指数偏置 Bias

指数的偏置(Bias) 主要是用来 控制指数部分的正负。

由上面例子可知 :

  • 实际指数 是 -1,它表示的是浮点数的真实指数。

  • 实际指数 -1 加上 指数偏置 127 后,得到存储的指数 126,它的二进制形式 01111110 是存储在浮点数表示中的值。

所以,指数偏置的作用:是将原本可能为负的指数值 (-1),转换为 无符号整数(126),以便于计算机在表示时能够方便地使用无符号整数表示 指数部分。


3、精度 与 数值范围

1)指数部分 (Exponent) 控制数据范围

 

  结论 :指数部分位数越多,可以表示的 数据范围越大 

2)尾数部分 (Mantissa) 控制精度

结论 :尾数部分位数越多,可以表示的 精度越高

有效数字:指的是在浮点数表示中,能够精确表达的数字。即,从最左边非零数字到最后一位数字的所有数字

  • 123.45 有 5 个有效数字:1, 2, 3, 4, 5

  • 0.00456 有 3 个有效数字:4, 5, 6

  • 400 有 3 个有效数字:4, 0, 0


4、应用场景 与 硬件支持

应用场景:

  • Float32:最常见的浮点数类型,适用于大多数机器学习的训练阶段和推理阶段,适合精度要求高的任务

  • Float16: 主要用于推理阶段, 数值精度较低,可通过硬件加速提高计算效率

  • BFloat16:主要用于深度学习训练阶段,尤其是在需要保持数值范围的同时(BFloat16保留了和 float32 类似的数值范围),又想要降低内存需求的任务,旨在减少内存占用和加速计算

硬件支持 :

  • Float32 :大多数现代硬件(如 CPU 和 GPU)都对 float32 提供良好的支持

  • Float16:一些 GPU(尤其是 NVIDIA 的 Volta 及之后的架构,如 V100、A100、T4)对 float16 有硬件支持,可以显著加速训练和推理

  • BFloat16bfloat16 在某些硬件(特别是 Google 的 TPU 以及 Intel 的处理器)上得到硬件支持,用于加速深度学习的训练和推理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2343386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…

微信小程序蓝牙连接打印机打印单据完整Demo【蓝牙小票打印】

文章目录 一、准备工作1. 硬件准备2. 开发环境 二、小程序配置1. 修改app.json 三、完整代码实现1. pages/index/index.wxml2. pages/index/index.wxss3. pages/index/index.js 四、ESC/POS指令说明五、测试流程六、常见问题解决七、进一步优化建议 下面我将提供一个完整的微信…

龙虎榜——20250425

指数依然在震荡,等待方向选择,整体量能不搞但个股红多绿少。 2025年4月25日龙虎榜行业方向分析 一、核心主线方向 绿色电力(政策驱动业绩弹性) • 代表标的:华银电力(绿电运营)、西昌电力&…

计算机组成原理:指令系统

计算机组成原理:指令集系统 指令集体系结构(ISA)ISA定义ISA包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…

【Go语言】RPC 使用指南(初学者版)

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许程序调用另一台计算机上的子程序,就像调用本地程序一样。Go 语言内置了 RPC 支持,下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…

Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)

一、引言 深度学习的重要性 深度学习是一种通过模拟人脑神经元结构来进行数据学习和模式识别的技术,在分类任务中展现出强大的能力。 分类任务的多样性 分类任务涵盖了各种场景,例如簇分类、圆环分类和月牙分类,每种任务都有不同的…

uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1

配送方式在订单确认页面最上方,可以进行选中配送还是自提,这里先看看配送。 代码样式: 可以看出来是通过组件来实现的。组件名字是:delivery-layout 1、建立组件文件夹和页面,delivery-layout这里就只有配送 2、具体…

uniappx 打包配置32位64位x86安装包

{"app": {"distribute": {"android": {"abiFilters": ["armeabi-v7a","arm64-v8a","x86","x86_64"]}}} }

【深度强化学习 DRL 快速实践】逆向强化学习算法 (IRL)

Inverse Reinforcement Learning (IRL) 详解 什么是 Inverse Reinforcement Learning? 在传统的强化学习 (Reinforcement Learning, RL) 中,奖励函数是已知的,智能体的任务是学习一个策略来最大化奖励 而在逆向强化学习 (Inverse Reinforc…

《普通逻辑》学习记录——性质命题及其推理

目录 一、性质命题概述 二、性质命题的种类 2.1、性质命题按质的分类 2.2、性质命题按量的分类 2.3、性质命题按质和量结合的分类 2.4、性质命题的基本形式归纳 三、四种命题的真假关系 3.1、性质命题与对象关系 3.2、四种命题的真假判定 3.3、四种命题的对当关系 四、四种命题…

人工智能(AI)对网络管理的影响

近年来,人工智能(AI)尤其是大语言模型(LLMs)的快速发展,正在深刻改变网络管理领域。AI的核心价值在于其能够通过自动化、模式分析和智能决策,显著提升网络运维效率并应对复杂挑战。具体表现为: 快速数据查询与分析​​&#xff1…

embedding_model模型通没有自带有归一化层该怎么处理?

embedding_model 是什么: 嵌入式模型(Embedding)是一种广泛应用于自然语言处理(NLP)和计算机视觉(CV)等领域的机器学习模型,它可以将高维度的数据转化为低维度的嵌入空间&#xff0…

八大排序——冒泡排序/归并排序

八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序(递归) 1.2 递归排序(非递归) 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换…

银发科技:AI健康小屋如何破解老龄化困局

随着全球人口老龄化程度的不断加深,如何保障老年人的健康、提升他们的生活质量,成为了社会各界关注的焦点。 在这场应对老龄化挑战的战役中,智绅科技顺势而生,七彩喜智慧养老系统构筑居家养老安全网。 而AI健康小屋作为一项创新…

命令行指引的尝试

效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…

【Dify系列教程重置精品版】第1课 相关概念介绍

文章目录 一、Dify是什么二、Dify有什么用三、如何玩转Dify?从螺丝刀到机甲战士的进阶指南官方网站:https://dify.ai github地址:https://github.com/langgenius/dify 一、Dify是什么 Dify(D​​efine + ​​I​​mplement + ​​F​​or ​​Y​​ou)。这是一款开源的大…

leetcode0106. 从中序与后序遍历序列构造二叉树-medium

1 题目:从中序与后序遍历序列构造二叉树 官方标定难度:中 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入…

Spring Boot默认缓存管理

Spring框架支持透明地向应用程序添加缓存,以及对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法,从而减少操作数据的执行次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能&#xff…

XYNU2024信安杯-REVERSE(复现)

前言 记录记录 1.Can_you_find_me? 签到题,秒了 2.ea_re 快速定位 int __cdecl main_0(int argc, const char **argv, const char **envp) {int v4; // [esp0h] [ebp-1A0h]const char **v5; // [esp4h] [ebp-19Ch]const char **v6; // [esp8h] [ebp-198h]char v7;…

MySQL的MVCC【学习笔记】

MVCC 事务的隔离级别分为四种,其中Read Committed和Repeatable Read隔离级别,部分实现就是通过MVCC(Multi-Version Concurrency Control,多版本并发控制) 版本链 版本链是通过undo日志实现的, 事务每次修改…