论文笔记: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)
- 值 - 符号独立的矩阵分解(SVID)
2.3 通过知识蒸馏迁移原模型能力
- 通过知识蒸馏从未量化模型(教师网络)中学习,实现能力向 量化模型(学生网络)的迁移

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

相关文章:
论文笔记:OneBit: Towards Extremely Low-bit Large Language Models
202402 arxiv 1 背景 模型量化主要通过把模型的线性层【nn.Linear】(Embedding 层和 Lm_head 层除外)转化为低精度表示实现空间压缩 此前工作的基础是利用 Round-To-Nearest(RTN)方法把高精度浮点数近似映射到附近的整数网格然而…...
英语文化中的音乐分类及其发展历史(Classical、Jazz、Rock、Pop、Electronic、Country、RB、Hip-Hop)
文章目录 英语文化中的音乐分类及其发展历史1. 简介2. 古典音乐 (Classical Music)2.1 起源与发展2.2 技术与风格 3. 爵士音乐 (Jazz Music)3.1 起源与发展3.2 技术与风格 4. 摇滚音乐 (Rock Music)(Rock and roll)4.1 起源与发展4.2 技术与风格 5. 蓝调…...
C语言-栈、队列、二叉树
12 栈、队列、二叉树 目录 12 栈、队列、二叉树 一、栈、队列、二叉树是什么? 二、栈 1. 特点:先进后出 -- 有底的盒子 2. 使用场景:函数调用 -- 中断机制 3. 实现栈的形式: 三、队列 1. 特点:先进先出 -- 水…...
pinia-plugin-persistedstate 插件不生效
引入使用该插件使用时发现不生效 原因:pinia实例调用顺序不当 将: // import ./assets/main.css import { createApp } from vue import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstate import App fr…...
sqlite 合并两个数据库中的特定表
sqlite 合并两个数据库中的特定表 命令行python 版本 命令行 .open v1/mydb.db attach v2/mydb.db as db2; insert into main.表1 select * from db2.表1; insert into main.表2 select * from db2.表2; .exit参数说明v1/mydb.db主db文件路径,合并后的结果就是它…...
winform中设置DateTimePicker参数为空
在C#中,使用DateTimePicker控件时,您可以将其Value属性设置为null或者DateTime.MinValue来表示没有选定的日期或时间。以下是如何设置默认值为空的示例代码: dateTimePicker1.Value DateTime.MinValue; 或者,如果您希望用户不能…...
Python爬虫(8)
JsonPath介绍使用 JsonPath是一种轻量级的查询库,可以从JSON文本数据中进行筛选和提取操作。有点类似于使用XPath在HTML数据中提取数据的功能。JsonPath 也可以通过使用类似于 XPath 的表达式来访问 JSON对象中的属性和元素,并支持通配符、筛选器和函数…...
靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解+卷积长短期+注意力多元时间序列预测
靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解卷积长短期注意力多元时间序列预测 目录 靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解卷积长短期注意力多元时间序列预测效果一览基本介绍程序设计…...
zdpgo_gin_limit 为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架
zdpgo_gin_limit 为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架 安装 go get github.com/zhangdapeng520/zdpgo_gin_limit使用教程 基于内存的限流 package mainimport (gin "github.com/zhangdapeng520/zdpgo_gin"…...
Java1234的Vue学习笔记
第一节 vue.js简介 简介 第二节 vue开发工具 vscode 第三节:vue HelloWorld实现 理解vue双向绑定v-model的概念 底层数据改变视图对应显示会变,视图绑定数据变会影响底层数据,对应MVVM模式http://blog.java1234.com/blog/articles/510.html <!DOCTYPE html> <…...
嵌入式八股-C++面试91题(20240809)
1. 讲一讲封装、继承、多态是什么? 封装:将具体实现过程和数据封装成一个类,只能通过接口进行访问,降低耦合性,使类成为一个具有内部数据的自我隐藏能力、功能独立的软件模块。 意义:保护代码防止被破坏&…...
如何恢复误删视频?找回误删视频文件的办法分享
在数字化时代,视频已成为我们生活中不可或缺的一部分,记录着珍贵的回忆、工作资料或是学习素材。然而,在电脑上一不小心误删视频文件,该怎么办?视频误删怎么恢复?有什么小技巧可以找回删除的视频࿱…...
游戏手柄开发一款游戏
使用游戏手柄开发一款游戏是一个既有趣又充满挑战的项目。这通常涉及多个步骤,包括选择合适的硬件、学习编程技能、设计游戏逻辑以及测试和优化游戏。以下是一个大致的步骤指南,帮助你开始这个过程: 1. 确定游戏类型和概念 游戏类型&#x…...
【阿旭机器学习实战】【39】脑肿瘤数据分析与预测案例:数据分析、预处理、模型训练预测、评估
《------往期经典推荐------》 一、【100个深度学习实战项目】【链接】,持续更新~~ 二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~ 三、深度学习【Pytorch】专栏【链接】 四、【Stable Diffusion绘画系列】专…...
深度学习基础 - 梯度垂直于等高线的切线
深度学习基础 - 梯度垂直于等高线的切线 flyfish 梯度 给定一个标量函数 f ( x , y ) f(x, y) f(x,y),它的梯度(gradient)是一个向量,表示为 ∇ f ( x , y ) \nabla f(x, y) ∇f(x,y),定义为: ∇ f ( x…...
py2exe打包
要用到py2exe打包python程序,记录一下。 写一个setup.py文件,内容如下: from distutils.core import setup import py2exeoptions {"py2exe":{"compressed": 1, # 0或1 1压缩,0不压缩"optimize&quo…...
Gerrit存在两个未审核提交且这两个提交有冲突时的解决方案
Gerrit存在两个未审核提交且这两个提交有冲突时的解决方案 问题背景 用户A提交了一个记录,用户A的记录未审核此时用户B又提交了,这个时候管理员去合并代码,合了其中一个后再去合另一个发现合并不了,提示冲突,这个时候另…...
基于单片机的智能风扇设计
摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整,必须人为地干预才能达到需求 。 本文基于单片机的智能风扇主要解决以往风扇存在的问题,其有两种工作模式: 手动操作模式和自动运行模式,人们可以根据需要进行模式选择。 在自动运行…...
【实战】Spring Security Oauth2自定义授权模式接入手机验证
文章目录 前言技术积累Oauth2简介Oauth2的四种模式授权码模式简化模式密码模式客户端模式自定义模式 实战演示1、mavan依赖引入2、自定义手机用户3、自定义手机用户信息获取服务4、自定义认证令牌5、自定义授权模式6、自定义实际认证提供者7、认证服务配置8、Oauth2配置9、资源…...
Redis数据失效监听
一、配置Redis开启 打开conf/redis.conf 文件,添加参数:notify-keyspace-events Ex 二、验证配置 步骤一:进入redis客户端:redis-cli步骤二:执行 CONFIG GET notify-keyspace-events ,如果有返回值证明配…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...


