目录
把参数都变成三进制
网友:能在消费级GPU跑120B大模型了
首页 科技周边 人工智能 微软6页论文爆火:三进制LLM,真香!

微软6页论文爆火:三进制LLM,真香!

Feb 29, 2024 pm 10:01 PM
ai 训练 内存占用

这就是由微软和中国中科院大学在最新一项研究中所提出的结论——

所有的LLM,都将是1.58 bit的。

微软6页论文爆火:三进制LLM,真香!

具体而言,这项研究提出的方法叫做BitNet b1.58,可以说是从大语言模型“根儿”上的参数下手。

将传统以16位浮点数(如FP16或BF16)形式的存储,统统变成了三进制,也就是 {-1, 0, 1}

微软6页论文爆火:三进制LLM,真香!

需要注意的是,“1.58 bit”并非表示每个参数占用1.58字节的存储空间,而是指每个参数可以用1.58位的信息来编码。

在如此转换之后,矩阵中的计算就只会涉及到整数的加法,因此会让大模型在保持一定精度的同时,显着减少所需的存储空间和计算资源。

例如BitNet b1.58在3B模型大小时与Llama做比较,速度提高了2.71倍的同时,GPU内存使用几乎仅是原先的四分之一。

而且当模型的规模越大时(例如70B),速度上的提升和内存上的节省就会更加显着!

这种颠覆传统的思路着实是让网友们眼前一亮,论文在X上也是受到了高度的关注:

微软6页论文爆火:三进制LLM,真香!

网友们惊叹“改变游戏规则”的同时,还玩起了谷歌attention论文的老梗:

1 bit is all YOU need.

微软6页论文爆火:三进制LLM,真香!

那么BitNet b1.58具体又是如何实现的?我们继续往下看。

把参数都变成三进制

这项研究实则是原班人马在此前发表的一篇论文基础之上做的优化,即在原始BitNet的基础上增加了一个额外的0值。

微软6页论文爆火:三进制LLM,真香!

整体来看,BitNet b1.58依旧是基于BitNet架构(一种Transformer),用BitLinear替换了nn.Linear。

至于细节上的优化,首先就是我们刚才提到的“加个0”,即权重量化(weight quantization)

BitNet b1.58模型的权重被量化为三元值{-1, 0, 1},这相当于在二进制系统中使用了1.58 bit来表示每个权重。这种量化方法减少了模型的内存占用,并简化了计算过程。

微软6页论文爆火:三进制LLM,真香!

其次,在量化函数设计方面,为了将权重限制在-1、0或+1之间,研究者们采用了一种称为absmean的量化函数。

微软6页论文爆火:三进制LLM,真香!

这个函数先会根据权重矩阵的平均绝对值进行缩放,然后将每个值四舍五入到最接近的整数(-1, 0, +1)。

接下来就到了激活量化(activation quantization)这一步。

激活值的量化与BitNet中的实现相同,但在非线性函数之前不将激活值缩放到[0, Qb]的范围内。相反,激活值被缩放到[−Qb, Qb]的范围,以此来消除零点量化。

值得一提的是,研究团队为了BitNet b1.58与开源社区兼容,采用了LLaMA模型的组件,如RMSNorm、SwiGLU等,使得它可以轻松集成到主流开源软件中。

最后,在实验的性能比较上,团队将BitNet b1.58与FP16 LLaMA LLM在不同大小的模型上进行了比较。

微软6页论文爆火:三进制LLM,真香!

结果显示,BitNet b1.58在3B模型大小时开始与全精度LLaMA LLM在困惑度上匹配,同时在延迟、内存使用和吞吐量方面有显着提升。

而且当模型规模越大时,这种性能上提升就会越发显着。

网友:能在消费级GPU跑120B大模型了

正如上文所言,这篇研究独特的方法在网上引发了不小的热议。

DeepLearning.scala作者杨博表示:

BitNet b1.58相比原版BitNet,最大的特点就是允许0参数。我觉得稍微修改一下量化函数,也许可以控制0参数的比例。当0参数的比例很大时,可以用稀疏格式存储权重,使得平均每个参数的显存占用甚至低于1比特。这就相当于权重级别的MoE了。我觉得比一般的MoE更优雅。

与此同时,他也提出了关于BitNet的缺点:

BitNet最大的缺点在于虽然能减少推理时的显存开销,但优化器状态和梯度仍然要用浮点数,训练仍然很费显存。我觉得如果能把BitNet和训练时节省显存的技术结合起来,那么相比传统半精度网络,同等算力和显存下支持更多参数,优势就很大了。

目前能节省优化器状态的显存开销的办法是offloading。能节省梯度的显存占用的办法可能是ReLoRA。但是ReLoRA的论文实验只用了十亿参数的模型,并没有证据表明能不能推广到百亿、千亿参数的模型。

微软6页论文爆火:三进制LLM,真香!

△图源:知乎,经授权引用

不过也有网友分析认为:

若论文成立,那么我们就能在24GB消费级GPU上跑120B的大模型了。

微软6页论文爆火:三进制LLM,真香!
微软6页论文爆火:三进制LLM,真香!

那么你觉得这种新方法如何呢?

以上是微软6页论文爆火:三进制LLM,真香!的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持续监听HTTP请求的?Uvicorn是一个基于ASGI的轻量级Web服务器,其核心功能之一便是监听HTTP请求并进�...

Python中如何通过字符串动态创建对象并调用其方法? Python中如何通过字符串动态创建对象并调用其方法? Apr 01, 2025 pm 11:18 PM

在Python中,如何通过字符串动态创建对象并调用其方法?这是一个常见的编程需求,尤其在需要根据配置或运行...

ChatGPT时代,技术问答社区思否如何应对挑战? ChatGPT时代,技术问答社区思否如何应对挑战? Apr 01, 2025 pm 11:51 PM

ChatGPT时代的技术问答社区:思否(SegmentFault)的应对策略StackOverflow...

Python多进程Pipe通信中如何优雅地处理'管道已关闭”错误? Python多进程Pipe通信中如何优雅地处理'管道已关闭”错误? Apr 01, 2025 pm 11:12 PM

Python多进程Pipe报错“管道已关闭”?在使用Python的multiprocessing模块中的Pipe方法进行父子进程通信时,可能会遇�...

requests库获取网页数据时,如何解决动态加载内容缺失的问题? requests库获取网页数据时,如何解决动态加载内容缺失的问题? Apr 01, 2025 pm 11:24 PM

使用requests库抓取网页数据时遇到的问题及解决方案在使用Python的requests库获取网页数据时,有时会遇到获取到�...

如何利用Go或Rust调用Python脚本实现真正的并行执行? 如何利用Go或Rust调用Python脚本实现真正的并行执行? Apr 01, 2025 pm 11:39 PM

如何利用Go或Rust调用Python脚本实现真正的并行执行?最近在使用Python...

使用Selenium模拟登录后重定向报404错误的原因是什么?如何解决? 使用Selenium模拟登录后重定向报404错误的原因是什么?如何解决? Apr 01, 2025 pm 10:54 PM

Selenium模拟登录后重定向报404错误的解决方案在使用Selenium进行模拟登录时,我们常常会遇到一些棘手的问题。�...

See all articles