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

论文笔记:OneBit: Towards Extremely Low-bit Large Language Models

202402 arxiv

1 背景

  • 模型量化主要通过把模型的线性层【nn.Linear】(Embedding 层和 Lm_head 层除外)转化为低精度表示实现空间压缩
    • 此前工作的基础是利用 Round-To-Nearest(RTN)方法把高精度浮点数近似映射到附近的整数网格
    • 然而基于 RTN 的方法在极低位宽时(3bit 以下)存在严重的精度损失问题,量化后的模型能力损失十分严重
    • 基于 RTN 的量化方法在 1bit 量化时几乎失效,难以有效地保留原模型的性能。
  • ——>论文提出OneBit 框架,包括全新的 1bit 层结构、基于 SVID 的参数初始化方法和基于量化感知知识蒸馏的知识迁移

2 论文方法

2.1 1bit 结构

  • OneBit 的终极目标是将 LLMs 的权重矩阵压缩到 1bit。
  • 真正的 1bit 要求每个权重值只能用 1bit 表示,即只有两种可能的状态。
    • 论文认为,在大模型的参数中,有两个重要因素都必须被考虑进来
      • 浮点数的高精度
      • 参数矩阵的高秩
    • ——>引入两个 FP16 格式的值向量以补偿由于量化导致的精度损失
      • 不仅保持了原始权重矩阵的高秩
      • 还通过值向量提供了必要的浮点精度,有助于模型的训练和知识迁移
  • 假设对一个 4096*4096 的线性层进行压缩
    •  OneBit 需要一个 4096*4096 的 1bit 矩阵,和两个 4096*1 的 16bit 值向量
    • ——>总的位数为 16,908,288,总的参数个数为 16,785,408,平均每个参数占用仅仅约 1.0073 个 bit

2.2 基于 SVID 初始化量化模型

  • 为了使用充分训练好的原模型更好地初始化量化后的模型,进而促进更好的知识迁移效果,论文提出一种新的参数矩阵分解方法
    • 值 - 符号独立的矩阵分解(SVID)
      • 把符号和绝对值分开,并把绝对值进行秩 - 1 近似
        • 秩 - 1 近似可以通过常见的矩阵分解方式实现,例如奇异值分解(SVD)和非负矩阵分解(NMF)

2.3 通过知识蒸馏迁移原模型能力

  • 通过知识蒸馏从未量化模型(教师网络)中学习,实现能力向 量化模型(学生网络)的迁移

3 实验

3.1 效果

  • 从 1.3B 到 13B 不同大小、OPT 和 LLaMA-1/2 不同系列的模型来证明 OneBit 的有效性

3/2 效率

http://www.lryc.cn/news/419615.html

相关文章:

  • 英语文化中的音乐分类及其发展历史(Classical、Jazz、Rock、Pop、Electronic、Country、RB、Hip-Hop)
  • C语言-栈、队列、二叉树
  • pinia-plugin-persistedstate 插件不生效
  • sqlite 合并两个数据库中的特定表
  • winform中设置DateTimePicker参数为空
  • Python爬虫(8)
  • 靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解+卷积长短期+注意力多元时间序列预测
  • zdpgo_gin_limit 为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架
  • Java1234的Vue学习笔记
  • 嵌入式八股-C++面试91题(20240809)
  • 如何恢复误删视频?找回误删视频文件的办法分享
  • 游戏手柄开发一款游戏
  • 【阿旭机器学习实战】【39】脑肿瘤数据分析与预测案例:数据分析、预处理、模型训练预测、评估
  • 深度学习基础 - 梯度垂直于等高线的切线
  • py2exe打包
  • Gerrit存在两个未审核提交且这两个提交有冲突时的解决方案
  • 基于单片机的智能风扇设计
  • 【实战】Spring Security Oauth2自定义授权模式接入手机验证
  • Redis数据失效监听
  • 【达梦数据库】-SQL调优思路
  • DispatcherServlet 源码分析
  • 代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
  • 会议室占用的时间(75%用例)D卷(JavaPythonC++Node.jsC语言)
  • C++初阶_1:namespace
  • 低代码开发平台:效率革命还是质量隐忧?
  • 在 Django 表单中传递自定义表单值到视图
  • Android之复制文本(TextView)剪贴板
  • Ubuntu24.04设置国内镜像软件源
  • 分布式与微服务详解
  • Vue设置滚动条自动保持到最底端