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

【自然语言处理】BitNet b1.58:1bit LLM时代

论文地址:https://arxiv.org/pdf/2402.17764.pdf

相关博客
【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM
【自然语言处理】BitNet b1.58:1bit LLM时代
【自然语言处理】【长文本处理】RMT:能处理长度超过一百万token的Transformer
【自然语言处理】【大模型】MPT模型结构源码解析(单机版)
【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版)
【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版)

一、BitNet

​ BitNet采用了与Transformer基本一致的模型架构,仅将标准矩阵乘法层换成了BitLinear,其他组件仍然是高精度的。BitLinear主要是包含的操纵:权重量化、激活量化以及LayerNorm。

权重量化。通过减均值实现0中心化,然后用sign实现二值化。假设全精度权重为 W ∈ R n × m W\in\mathcal{R}^{n\times m} WRn×m,则二值量化过程为
W ~ = Sign ( W − α ) (1) \widetilde{W}=\text{Sign}(W-\alpha) \tag{1} \\ W =Sign(Wα)(1)

Sign ( W i j ) = { + 1 , if W i j > 0 − 1 , if W i j ≤ 0 (2) \text{Sign}(W_{ij})=\begin{cases} +1,&&\text{if}\;W_{ij}>0 \\ -1,&&\text{if}\;W_{ij}\leq 0 \\ \end{cases} \tag{2} \\ Sign(Wij)={+1,1,ifWij>0ifWij0(2)

α = 1 n m ∑ i j W i j (3) \alpha=\frac{1}{nm}\sum_{ij}W_{ij} \tag{3} \\ α=nm1ijWij(3)

激活量化。使用absmax的方式将激活量化至b-bit。具体的实现方式是乘以 Q b Q_b Qb再除以输入矩阵的最大绝对值,从而将激活缩放至 [ − Q b , Q b ] ( Q b = 2 b − 1 ) [-Q_b,Q_b](Q_b=2^{b-1}) [Qb,Qb](Qb=2b1),即
x ~ = Quant ( x ) = Clip ( x × Q b γ , − Q b + ϵ , Q b − ϵ ) (4) \tilde{x}=\text{Quant}(x)=\text{Clip}(x\times\frac{Q_b}{\gamma},-Q_b+\epsilon,Q_b-\epsilon) \tag{4}\\ x~=Quant(x)=Clip(x×γQb,Qb+ϵ,Qbϵ)(4)

Clip ( x , a , b ) = max ⁡ ( a , min ⁡ ( b , x ) ) , γ = ∥ x ∥ ∞ (5) \text{Clip}(x,a,b)=\max(a,\min(b,x)),\quad\gamma=\parallel x\parallel_\infty \tag{5} \\ Clip(x,a,b)=max(a,min(b,x)),γ=∥x(5)

其中 ϵ \epsilon ϵ是防止裁剪时溢出的小浮点数。

​ 对于非线性函数之前的激活值则采用不同的量化方式,通过减轻最小值的方式将其缩放至 [ 0 , Q b ] [0,Q_b] [0,Qb],从而保证所有值均为非负:
x ~ = Quant ( x ) = Clip ( ( x − η ) × Q b γ , ϵ , Q b − ϵ ) , η = min ⁡ i , j x i j (6) \tilde{x}=\text{Quant}(x)=\text{Clip}((x-\eta)\times\frac{Q_b}{\gamma},\epsilon,Q_b-\epsilon),\quad\eta=\min_{i,j}x_{ij}\tag{6} \\ x~=Quant(x)=Clip((xη)×γQb,ϵ,Qbϵ),η=i,jminxij(6)
LayerNorm。在对激活值量化前,为了保证量化后的方差稳定,采用了SubLN

BitLinear的完成计算过程为
y = W ~ x ~ = W ~ Quant ( LN ( x ) ) × β γ Q b (7) y=\widetilde{W}\tilde{x}=\widetilde{W}\text{Quant}(\text{LN}(x))\times\frac{\beta\gamma}{Q_b}\tag{7} \\ y=W x~=W Quant(LN(x))×Qbβγ(7)

LN ( x ) = x − E ( x ) Var ( x ) + ϵ , β = 1 n m ∥ W ∥ 1 (8) \text{LN}(x)=\frac{x-E(x)}{\sqrt{\text{Var}(x)+\epsilon}},\quad\beta=\frac{1}{nm}\parallel W\parallel_1 \tag{8} \\ LN(x)=Var(x)+ϵ xE(x),β=nm1W1(8)

二、BitNet b1.58

​ BitNet b1.58在BitNet的基础上做了一些修改。

权重量化。采用absmean的方式将权重约束在 { − 1 , 0 , 1 } \{-1,0,1\} {1,0,1}中,而BitNet则将权重约束为二值 { − 1 , 1 } \{-1,1\} {1,1}。具体来说,先使用平均绝对值来缩放权重,然后通过舍入的方式转换为 { − 1 , 0 , 1 } \{-1,0,1\} {1,0,1}
W ~ = RoundClip ( W γ + ϵ , − 1 , 1 ) (9) \widetilde{W}=\text{RoundClip}(\frac{W}{\gamma+\epsilon},-1,1)\tag{9} \\ W =RoundClip(γ+ϵW,1,1)(9)

RoundClip ( x , a , b ) = max ⁡ ( a , min ⁡ ( b , round ( x ) ) ) (10) \text{RoundClip}(x,a,b)=\max(a,\min(b,\text{round}(x)))\tag{10} \\ RoundClip(x,a,b)=max(a,min(b,round(x)))(10)

γ = 1 n m ∑ i j ∣ W i j ∣ (11) \gamma=\frac{1}{nm}\sum_{ij}|W_{ij}|\tag{11} \\ γ=nm1ijWij(11)

激活量化。同BitNet一样,但是对于非线性函数前的激活不再量化至 [ 0 , Q b ] [0,Q_b] [0,Qb],而是都量化至 [ − Q b , Q b ] [-Q_b,Q_b] [Qb,Qb]

​ 此外,为了能够方便于开源软件兼容,整体结构采用类似LLaMA的结构。具体来说,使用RMSNorm、SwiGLU、RoPE并移除所有偏置。

三、实验

1. 困惑度

在这里插入图片描述

​ BitNet b1.58在3B大小时,困惑度与LLaMA相匹配,但是速度快2.71倍且显存使用减少3.55倍。当BitNet b1.58大小为3.9B时,速度快2.4倍且显存减少3.32倍,并且效果显著优于LLaMA 3B。

2. 下游任务

在这里插入图片描述

​ 随着模型尺寸的增加,BitNet b1.58和LLaMA在下游任务上的差距逐步缩小。在尺寸达到3B时,BitNet b.158能够与全精度相匹配。

3. 显存和延时

在这里插入图片描述

​ 随着模型尺寸的增加,BitNet b1.58的速度优势和显存优势会更加明显。

4. 能耗

在这里插入图片描述

​ 矩阵乘法是LLM中能耗最高的部分。BitNet b1.58主要是INT8的加法计算,而LLaMA则是由FP16加法和乘法组成。在7nm芯片上,BitNet b1.58能够节约71.4倍的计算能耗。随着模型尺寸的增加,BitNet b1.58在能耗方面会越来越高效。

5. 吞吐

在这里插入图片描述
​ 相同机器下,BitNet b1.58的batch size是LLaMA LLM的11倍,吞吐则是8.9倍。

相关文章:

【自然语言处理】BitNet b1.58:1bit LLM时代

论文地址:https://arxiv.org/pdf/2402.17764.pdf 相关博客 【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM 【自然语言处理】BitNet b1.58:1bit LLM时代 【自然语言处理】【长文本处理】RMT:能处理长度超过一百万t…...

【Axure高保真原型】可视化动点素材

今天和粉丝们免费分享可视化动点素材的原型模板,该模板使用简单,复制粘贴,预览时即可实现动点效果,本案例提供红黄蓝绿4中颜色的动点,如果需要其他颜色,可以自行编辑svg里面的代码 【原型效果】 【模板下载…...

分布式数据库 GaiaDB-X 金融应用实践

1 银行新一代核心系统建设背景及架构 在银行的 IT 建设历程中,尤其是中大行,大多都基于大型机和小型机来构建核心系统。随着银行业务的快速发展,这样的系统对业务的支持越来越举步维艰,主要体现在以下四个方面: 首先是…...

机器学习中的经典算法总结

经典算法 有监督算法逻辑回归支持向量机SVM决策树朴素贝叶斯K近邻(KNN) 无监督算法K-meansPCA主成分分析预留模版 有监督算法 逻辑回归 简介 逻辑回归是机器学习中一种经典的分类算法,通常用于二分类任务,基本思想是构建一个线性…...

ElasticSearch 学习(docker,传统方式安装、安装遇到的问题解决,)

目录 简介 什么是ElasticSearch 安装 传统方式安装 开启远程访问 Docker方式安装 Kibana 简介 安装 传统方式安装 Docker方式安装 compose方式安装 简介 什么是ElasticSearch ElasticSearch 简称 ES ,是基于Apache Lucene构建的开源搜索引擎&#xff0c…...

[百度二面]操作系统进程、锁相关面试题

2.22 什么是死锁 在多道程序环境下,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法…...

IP劫持的危害及应对策略

随着互联网的发展,网络安全问题日益凸显,其中IP劫持作为一种常见的网络攻击手段,对个人和企业的信息安全造成了严重的威胁。IP数据云将分析IP劫持的危害,并提出相应的应对策略。 IP地址查询:IP数据云 - 免费IP地址查询…...

Mac安装oh-my-zsh

目录 命令下载 卸载命令 注意 命令下载 curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 卸载命令 uninstall_oh_my_zsh 注意 终端init的时候并不会执行~/.bash_profile、~/.bashrc等脚本了, 这是因为其默认启动执行脚本…...

【Web开发】深度学习HTML(超详细,一篇就够了)

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Web开发】深度学习html(超详细,一篇就够了) 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 HTML1. HTML基础1.1 什么是HTML1.2 认识HTML标签1.3 HTML文件基本…...

深入了解二叉搜索树:原理、实现与应用

目录 一、介绍二叉搜索树 二、二叉搜索树的基本性质 三、二叉搜索树的实现 四、总结 在计算机科学中,数据结构是构建算法和程序的基础。其中,二叉搜索树(Binary Search Tree,简称 BST)作为一种常见的数据结构&#…...

【MybatisPlus】BaseMapper详解,举例说明

一、BaseMapper 简介 MyBatis-Plus 的核心类 BaseMapper 主要是用于提供基本的 CRUD(创建、读取、更新、删除)操作的接口定义。它是 MyBatis-Plus 框架中的一个重要组成部分,可以大大简化基于 MyBatis 的数据访问层代码的编写。 BaseMapper…...

LightDB24.1 oracle_fdw支持服务端GBK编码

功能介绍 oracle_fdw是一个PG的插件,用于连接oracle数据库,由于原生PG不支持服务端GBK编码,所以原生的oracle_fdw也不支持服务端GBK编码。在LightDB23.3中支持了服务端GBK编码,导致在GBK编码的数据库中使用oracle_fdw时报错。 Li…...

算法 环形数组是否存在循环 力扣执行速度击败100%

目录 题目 leetcode 457 求解思路 代码 结果 题目 leetcode 457 存在一个不含 0 的 环形 数组 nums ,每个 nums[i] 都表示位于下标 i 的角色应该向前或向后移动的下标个数: 如果 nums[i] 是正数,向前(下标递增方向&#xff0…...

FFmpeg——开源的开源的跨平台音视频处理框架简介

引言: FFmpeg是一个开源的跨平台音视频处理框架,可以处理多种音视频格式。它由Fabrice Bellard于2000年创建,最初是一个只包括解码器的项目。后来,很多开发者参与其中,为FFmpeg增加了多种新的功能,例如编码…...

怎么看待Groq

用眼睛看。 就是字面上的意思用眼睛看。 我属于第一波玩到的,先给大家一个直观的印象,Groq到底有多快。 目前Groq只能选Llama的70b,和Mixtral的MoE,那我选7*8的这个MoE模型来实验。 这么好些字大概花了不到1秒,流式响应,其实是不是流式已经没那么重要了 ,然后看每秒Toke…...

Kafka | SpringBoot集成Kafka

SpringBoot集成Kafka 一、前言二、项目1. pom2. application.properties4. 消息生产者-测试5. 消息消费者 三、启动测试四、有总结的不对的地方/或者问题 请指正, 我在努力中 一、前言 该文章中主要对SpringBoot 集成Kafka 主要是 application.properties 与 pom坐标就算集成完…...

python的tqdm库不显示动态进度条的问题

python的tqdm库不显示动态进度条的问题 本质原因是tqdm无法获取内部对象的长度,这可能是因为内部对象是一个迭代器,问题经常发生在同时使用tqdm与enumerate的场合,例如深度学习中经常可能出现的: tqdm.tqdm(enumerate(train_loade…...

【prompt四】Domain Prompt Learning for Efficiently Adapting CLIP to Unseen Domains

motivation 领域泛化(DG)是一个复杂的迁移学习问题,旨在学习未知领域的可泛化模型。最近的基础模型(FMs)对许多分布变化都具有鲁棒性,因此,应该从本质上提高DG的性能。在这项工作中,我们研究了采用视觉语言基础模型CLIP来解决图像分类中的DG问题的通用方法。虽然ERM使用标…...

利用Amazon Bedrock畅玩Claude 3等多种领先模型,抢占AI高地(体验倒计时4小时)

快乐的时间总是短暂的,Claude 3 在亚马逊云科技上限时体验仅剩4小时,上次分享了入门级操作教程,本期给大家带来AWS Lambda Amazon Bedrock一起构建可以便捷使用的Claude 3接口 AWS Lambda AWS Lambda 是一项计算服务,可以运行您…...

MySql分布式事务

1 seata 底层原理 Seata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案,其底层原理主要基于改进的传统2PC(Two-Phase Commit,两阶段提交)协议,并结合…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...