首页 > 其他分享 >模型量化

模型量化

时间:2025-01-18 23:20:57浏览次数:1  
标签:表示 存储 尾数 模型 FP16 量化 浮点数 精度

模型量化实在是太常见了,但是我完全不知道 quantization 是什么东西,不好!

float

在计算机中,float 是一种用于表示单精度浮点数的标准数据类型。浮点数的存储遵循 IEEE 754 标准,具体来说,32 位浮点数由三部分组成:

  1. 符号位 (Sign bit):占 1 位

    • 0 表示正数
    • 1 表示负数
  2. 指数部分 (Exponent):占 8 位

    • 用于表示浮点数的“大小”或“数量级”。
    • 指数采用偏移二进制(biased representation),具体的偏移量是 127。所以,存储的指数值是实际指数值加上 127。
      这里这个 127 偏移可以理解为,从 0~255,又要表示正负,所以偏移 127
  3. 尾数部分 (Mantissa or Fraction):占 23 位

    • 存储的是浮点数的小数部分(不包含“1”这一部分)。浮点数通常是规范化表示的,所以在存储时不直接存储“1”,而假设它存在。这个假设是隐式的。

浮点数的表示形式

浮点数的标准表示形式是:
[
(-1)^{sign} \times 1.mantissa \times 2^{(exponent - 127)}
]
其中:

  • sign 是符号位
  • mantissa 是尾数部分,它存储的是有效数字的二进制表示(包括小数点后的部分)
  • exponent 是指数部分的值,经过偏移 127 后得到实际的指数。

例子:如何存储 5.75

让我们以 5.75 为例来说明如何将一个浮点数表示为 IEEE 754 单精度浮点数。

  1. 转换为二进制形式

    • 5.75 = 101.11 (二进制表示)
  2. 规范化

    • 规范化为 1.0111 × 2²
  3. 分解为三部分

    • 符号位:由于是正数,符号位是 0。
    • 尾数部分:去掉 1,得到 0111 (尾数部分只存储小数部分,且只保留 23 位)。
    • 指数部分:实际指数是 2,偏移量是 127,因此存储的指数值是 2 + 127 = 129,二进制表示为 10000001。
  4. 组合成 32 位二进制数

    • 符号位:0
    • 指数部分:10000001
    • 尾数部分:01110000000000000000000

最终,5.75 的 IEEE 754 单精度浮点数表示为:

0 10000001 01110000000000000000000

注意事项

  • 精度问题:浮点数表示有限的二进制位,可能导致精度丢失。例如,某些小数无法精确表示为二进制数。
  • :IEEE 754 标准对零的表示有特殊定义,使用全零的指数和尾数,但符号位不同表示正零和负零。
  • 特殊值:IEEE 754 标准还定义了“无穷大”和“NaN”(非数字)等特殊值,通过特定的指数和尾数组合来表示。

总结

float 类型通过符号位、指数部分和尾数部分来表示浮点数,采用的是 IEEE 754 标准的单精度格式。由于尾数部分有限,可能导致浮点数的精度丧失,但可以表示非常大的或非常小的数值范围。

和 float 的实现类似,double 类型不过是把指数换成了 11 位,尾数换成了 52 位;float128 和 long double 的指数 15 位,尾数 112 位

于是先解释一下名词 fp8 fp18 fp32 bf16

这些术语都是与数值表示和计算精度相关的浮点数格式,通常用于机器学习、科学计算和硬件加速领域。它们表示不同的浮点数精度,每种精度有不同的表示范围和计算性能。

  1. FP8 (8-bit Floating Point):

    • 这种格式使用8个位来表示浮点数。通常有不同的变种,常见的包括 Bfloat8Float8,这些格式设计用于提高计算速度,减少内存带宽需求,同时仍保留足够的精度。
    • 优点: 存储空间和带宽占用非常低,可以加速训练和推理过程。
    • 缺点: 数值表示范围非常小,适用于某些特定的应用场景,尤其是在对精度要求不高的情况下。
  2. FP16 (16-bit Floating Point, Half Precision):

    • 16位浮点数,通常由1位符号位、5位指数位和10位尾数位组成。FP16被广泛用于加速训练和推理,尤其是在深度学习中。
    • 优点: 相比FP32,存储需求减少一半,计算速度通常加快,适合现代GPU(如NVIDIA的Tensor Cores)进行高效运算。
    • 缺点: 精度相对较低,特别是在训练过程中,可能会遇到梯度下溢或溢出的问题。
  3. BF16 (Brain Floating Point 16):

    • 这种格式与FP16相似,也是16位浮点数,但是它使用8位指数和7位尾数。BF16的设计主要针对机器学习应用,特别是在训练过程中,它能够更好地保持较大的数值范围。
    • 优点: 比FP16具有更大的表示范围,能够更好地处理一些数值较大的情况,适合深度学习训练任务。
    • 缺点: 相比FP16,精度稍低,特别是在尾数部分。
  4. FP32 (32-bit Floating Point, Single Precision):

    • 32位浮点数格式,通常由1位符号位、8位指数位和23位尾数位组成。FP32是标准的浮点数表示格式,广泛用于计算机科学、图像处理、机器学习等领域。
    • 优点: 提供较高的精度和更大的表示范围,是许多科学计算的默认格式。
    • 缺点: 相比FP16和FP8,存储需求较大,计算速度较慢,尤其是在硬件上不支持浮点数优化时。

总结

  • FP8: 最小精度,适合低精度计算任务,存储和带宽要求最低。
  • FP16: 较低精度但适合加速计算,尤其在GPU加速计算中表现良好。
  • BF16: 与FP16类似,但具有更大的表示范围,适合深度学习训练。
  • FP32: 高精度,适合需要高精度计算的任务,但占用更多存储和带宽。

在现代深度学习中,随着硬件的支持,通常会优先使用FP16或BF16来加速训练过程,尤其是在硬件如TPU和NVIDIA Tensor Cores上。

主要注意一下 bf16 相比于常用的 fp16,优势在于可以应对值大的浮点数,劣势就是精度低。还有一个 int8 这个就最好理解了。

接下来要回答的问题有这么几个:

  • 主流模型在 pretrain 中是怎么用 quantization 的,尤其是通信场景下

  • quantization 是怎么被应用到 inference acceleration 中的

标签:表示,存储,尾数,模型,FP16,量化,浮点数,精度
From: https://www.cnblogs.com/yspm/p/18678988/quantizationNotes

相关文章

  • 软件开发模型
    1.瀑布模型(WaterfallModel)定义瀑布模型是一种线性顺序模型,将软件开发过程分为多个阶段,每个阶段完成后才能进入下一个阶段。典型的阶段包括需求分析、设计、编码、测试和维护。优点结构化和顺序化:每个阶段都有明确的输入和输出,易于管理和控制。文档化:每个阶段都需要详细......
  • 最新AIGC创作平台功能介绍+使用教程+支持GPT对话、AI绘画、AI视频、AI PPT等大模型
    在当今快速发展的数字时代,人工智能(AI)已成为推动创新和提升工作效率的重要工具。「银河易创」作为一站式AIGC创作平台,旨在帮助用户在工作和学习中显著提高效率。无论是进行AI对话、AI绘画、AI视频制作、AI音乐创作,还是快速制作PPT,都能满足您的需求,助您轻松实现创意与灵感的碰撞......
  • 【AI论文】Diffusion模型的推理时缩放:超越降噪步骤的缩放策略
    摘要:生成模型在各个领域产生了重大影响,这主要得益于它们能够在训练过程中通过增加数据、计算资源和模型规模来进行扩展,这一现象被称为扩展定律。最近的研究已经开始探索大型语言模型(LLMs)在推理时间的扩展行为,揭示了如何通过增加推理过程中的计算来进一步提升性能。与LLMs不同,D......
  • ODIN:用于 2D 和 3D 分割的单一模型
    大家觉得有帮助记得及时关注和点赞!!!目录抽象1介绍2相关工作3D实例分割3D数据集和基准测试基于2D的3D分割3方法4实验4.13D基准测试评估4.2模拟中多视图RGB-D的评估4.3具体指令跟随4.4消融和变异4.5其他实验4.6局限性5结论6确认附录A实验答1在Scan......
  • 从数据到模型,足球预测方法解析
    在足球赛事范畴内,比赛结局始终蕴含着诸多不确定性,而这恰恰构成了足球独特的魅力要素。对于广大球迷而言,尝试预测足球比赛的最终结果,向来是一项极具吸引力与挑战性的活动。近年来,伴随数据科学以及机器学习技术的迅猛发展,足球预测领域发生了深刻变革。这些先进技术为深入探究比赛背......
  • 【顶级EI复现】基于电力系统碳排放流理论的碳排放分摊模型研究(Matlab代码实现)
      ......
  • AIGC视频生成模型:Runway的Gen系列模型
    大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Runway开发的视频生成模型Gen系列,包括Gen-1、Gen-2和Gen3Alpha等,这些模型每次发布都震惊AI圈,荣获多个视频生成的“首个”称号。......
  • 手把手教你使用PySide6搭建AI聊天界面,使用DeepSeek大模型接口
    目录前言一、DeepSeek注册与使用二、安装环境三、界面设计四、后端实现1.QTextEdit输入控件实现2.API请求与响应处理3.消息显示与时间显示4.实现头像绘制和文本的绘制5.更换头像五、完整源码下载和使用方法总结前言随着深度学习和自然语言处理技术的不断进步,问答......
  • 空间计量模型,包括空间滞后模型、空间误差模型、空间杜宾模型的matlab代码
    空间计量模型,包括空间滞后模型、空间误差模型、空间杜宾模型的matlab代码资源文件列表NewElhorstPanelCode/allersdumregime.m , 7573NewElhorstPanelCode/cigardemo.wk1 , 28587NewElhorstPanelCode/cigarette.wk1 , 124885NewElhorstPanelCode/demean.m......
  • 利用离散世界模型掌握 Atari Dreamer github 强化学习
    利用离散世界模型掌握Atari在TensorFlow2中实现DreamerV2代理。包含全部55款游戏的训练曲线。如果您发现此代码有用,请在您的论文中引用:<spanstyle="background-color:var(--bgColor-muted,var(--color-canvas-subtle))"><spanstyle="color:#1f2328"><spanstyle......