Bitnet.cpp 实践指南:1位LLM推理

Bitnet.cpp 实践指南:1位LLM推理1 位 LLM 是大型语言模型领域的一项重要创新 与使用 32 位或 16 位浮点数来表示权重和激活的传统 LLM 不同 1 位 LLM 将值量化为仅 1 位 这减少了计算占用空间并大大提高了推理速度 最近 微软发布了 bitnet

欢迎大家来到IT世界,在知识的湖畔探索吧!

1 位 LLM 是大型语言模型领域的一项重要创新。与使用 32 位或 16 位浮点数来表示权重和激活的传统 LLM 不同,1 位 LLM 将值量化为仅 1 位。这减少了计算占用空间并大大提高了推理速度。

最近,微软发布了 bitnet.cpp,这是一个用于在 1 位 LLM 上进行更快、无损推理的框架。本文对其进行了深入介绍,并解释了其在 LLM 领域的实用性。

Bitnet.cpp 实践指南:1位LLM推理



欢迎大家来到IT世界,在知识的湖畔探索吧!

NSDT工具推荐: Three.js AI纹理开发包 – YOLO合成数据生成器 – GLTF/GLB在线编辑 – 3D模型格式在线转换 – 可编程3D场景编辑器 – REVIT导出3D模型插件 – 3D模型语义搜索引擎 – AI模型在线查看 – Three.js虚拟轴心开发包 – 3D模型在线减面 – STL模型在线切割 – 3D道路快速建模

1、了解 1 位 LLM

1 位 LLM 是一种独特的大型语言模型方法,可大幅减少训练和推理所需的计算资源。与使用 32 位或 16 位浮点数的传统 LLM 不同,1 位 LLM 将权重和激活量化为仅 1 位,从而显著压缩模型大小并加速推理生成。

我们通过一个简单的比较来了解传统 LLM 和 1 位 LLM 之间的区别:

传统 LLM –

  • 权重精度 = 32 位 = 4 字节
  • 参数 = 70 亿
  • 推理内存估算 = (7,000,000,000 * 4)/(1024^3) GB = 26.077 GB

1 位 LLM –

  • 权重精度 = 1 位 = 0.125 字节
  • 参数 = 70 亿
  • 推理内存估算 = (7,000,000,000 * 0.125)/(1024^3) GB = 0.815 GB

我们可以看到传统(32 位)LLM 和 1 位 LLM 之间所需的计算和存储资源的差异。

1 位 LLM 变体,即 BitNet b1.58 每个权重使用 1.58 位,并以三元格式 [-1,0,1] 存储权重,这意味着权重可以是 -1、0 或 +1。这种格式意味着普通 Transformer 模型中发生的矩阵乘法被简单的加法和减法所取代,从而降低了计算强度。

Bitnet.cpp 实践指南:1位LLM推理

1 位 LLM 提供了帕累托解决方案来降低推理成本

BitNet b1.58 基于 BitNet 架构,保留了原始 1 位 BitNet 的所有优点,包括一种新的计算范式,该范式几乎不需要矩阵乘法运算,并且可以高度优化。它还表现出与原始 1 位模型相同的能耗。

2、bitnet.cpp 无损推理概述

1 位 LLM(例如 BitNet 1.58)的官方推理框架是 bitnet.cpp,微软最近将其开源。它提供了一组优化的内核,支持在 CPU 上对 1.58 位模型进行快速无损推理

bitnet.cpp在 x86 CPU 上实现了从 2.37 倍到 6.17 倍的显著加速,能耗降低了 71.9% 到 82.8%。在 ARM CPU 上,它实现了从 1.37 倍到 5.07 倍的加速,涵盖不同模型大小,能耗降低了 55.4% 到 70%,进一步提高了整体效率。

Bitnet.cpp 实践指南:1位LLM推理

不同 BitNet b1.58 模型大小的推理速度和能耗(Apple M2 Ultra)

Bitnet.cpp 实践指南:1位LLM推理

不同 BitNet b1.58 模型大小的推理速度和能耗(Intel i7-13700H)

bitnet.cpp 提供了一组优化的内核,旨在在 ARM 和 x86 架构上快速无损地推理 1.58 位模型。对 bitnet.cpp 的评估也是在推理速度和能耗方面完成的。它在 ARM 和 x86 架构上都比 llama.cpp 有显著的改进,尤其是在模型尺寸增加时。

3、bitnet.cpp 的实际实现

步骤 1:克隆官方存储库 –

!git clone --recursive https://github.com/microsoft/BitNet.git

欢迎大家来到IT世界,在知识的湖畔探索吧!

步骤 2:更改当前工作目录 –

欢迎大家来到IT世界,在知识的湖畔探索吧!%cd /content/BitNet/

步骤 3:使用 requirements.txt 安装所需的依赖项 –

!pip install -r requirements.txt

步骤 4:从 HuggingFace 下载 1 位模型并将其转换为 GGUF 格式 –

欢迎大家来到IT世界,在知识的湖畔探索吧!!huggingface-cli download 1bitLLM/bitnet_b1_58-large --local-dir bitnet_b1_58-large\n!python setup_env.py -md bitnet_b1_58-large

步骤 5 – 使用 inference.py 脚本运行推理 –

!python run_inference.py -m bitnet_b1_58-large/ggml-model-i2_s.gguf -p "John went to eat dinner while his friend Janardan was playing on PlayStation. While playing Playstation, Janardan called his friend Johny. Who is Johny to John?\nAnswer:" -n 50 -temp 0 

输出 –

欢迎大家来到IT世界,在知识的湖畔探索吧!Answer: Johny is a friend of John.

4、结束语

1 位 LLM 比传统 LLM 小得多,并且精度降低也会导致更快的计算,尤其是当硬件针对按位运算进行了优化时。bitnet.cpp 在优化内核方面提供了巨大的改进,用于推理 1 位 LLM,支持更快的推理和更低的能耗。它仍处于起步阶段但有望在 LLM 推理和节能时代带来重大变革。


原文链接:Bitnet.cpp 实践指南 – BimAnt

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/95844.html

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信