Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型 精华

发布于 2024-10-22 14:29
浏览
1收藏

Hi,这里是Aitrainee,欢迎阅读本期新文章。

前两天,微软开源了Bitnet.cpp,这是一个重磅消息。简单来说,这意味着你现在可以在CPU上运行像72B甚至更大的超级大模型。原因是这些模型的精度已经降低到1位。

Bitnet.cpp是一个超级高效的1位LLM推理框架,你可以在本地设备上以高达六倍的速度运行100B模型,并且能耗降低82.2%。

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区

Bitnet.cpp 未来还会支持 NPU 和 GPU,它在 ARM CPU 上能让模型速度提高 1.37 到 5.07 倍,同时能耗降低 55.4% 至 70%。在 x86 CPU 上,加速幅度在 2.37 倍到 6.17 倍之间,能耗减少 71.9% 至 82.2%。

这个框架能在单个 CPU 上以每秒 5-7 个令牌的速度运行 100B bitnet_b1_58 模型(BitNet框架中的一种1位量化的语言模型)。与人类阅读速度相当,这显著提升了在本地设备上运行大型语言模型的潜力。

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区

你现在可以在Ubuntu Linux、Window s 或 MacOS上安装它,对了,Bitnet.cpp 不仅支持x86架构,还支持ARM架构。

那么,让我们看看它是如何工作的。

官方的部署:

简单直接使用 bitnet.cpp 非常简单,主要分为以下几步:

  1. 1.克隆仓库

git clone --recursive https://github.com/microsoft/BitNet.git
  1. 2.安装依赖:使用​​conda​​ 创建环境并安装依赖。
  2. 3.构建项目:使用​​setup_env.py​​ 脚本下载模型并构建项目。
  3. 4.运行推理:使用​​run_inference.py​​ 脚本进行推理。例如,运行推理的命令如下:

python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "Your prompt here" -n 6 -temp 0

我们实际走走:

首先,正如我之前所提到的,我们需要在Ubuntu上安装clang和cmake。如果你使用Windows,只需安装Visual Studio即可。

接下来,运行以下命令来安装LLVM工具链,这个命令会下载并执行一个脚本,自动安装clang、cmake以及其他一些必要的库。

bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"


如果在Windows上,打开一个新的命令提示符或PowerShell窗口。然后,运行以下命令:

Invoke-WebRequest -Uri https://apt.llvm.org/llvm.ps1 -OutFile llvm.ps1
powershell -ExecutionPolicy Bypass -File llvm.ps1

接下来,我们需要创建一个新的conda环境,以便安装所需的依赖。运行以下命令来创建一个名为myenv的环境,并安装Python 3.9:

conda create -n myenv pythnotallow=3.9 -y & conda activate myenv

接下来,我们需要从GitHub上克隆所需的项目。运行以下命令来递归克隆BitNet仓库,并进入该目录:

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

接着是依赖:

pip install -r requirements.txt

接下来,我们将下载Hugging Face的模型。运行以下命令:

python3 setup_env.py --hf-repo HF1BitLLM/Llama3-8B-1.58-100B-tokens -q i2 s

这将使用他们提供的setup_env.py脚本进行设置。我们使用的是1.58位的LLM模型。在Hugging Face上,还有许多其他可用的模型。第一次运行这个模型时,它会用C编译代码,大约需要10分钟。

让我运行这个模型。可以看到加载时间非常快,总共处理了53个token,使用CPU的时间也很短。它加载了Llama模型,并应用了适配器,同时告诉我们模型的层数和KV缓存等参数。

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区


最后,它给出了模型的原始输出和我们的LLM响应。

这里是花费的总用时:12233ms

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区


你可以问任何问题,比如现在我问它排球中有多少个L。

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区

它会打印出结果:

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区

虽然答案错误,但无妨,主要是我们现在可以在CPU上运行这个8B模型,速度也不算慢。

CPU配置如下:

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型-AI.x社区

BitNet 轻量、高效。体积仅为传统模型的20%。摒弃了复杂的浮点运算,采用简单的整数运算,使得计算变得快速而轻便,加载时间快。

此外,1位LLMs的训练还需从头开始,因为它们与现有模型有本质上的不同。尽管有将现有模型量化为1位的建议,但BitNet的设计使得这种转换并不简单,虽然可能达到与Q1模型相似的质量,但整体性能可能受到影响。因此,真正的高效训练仍需从零开始。

总之,若我们真的能够在普通桌面CPU上以较快速度的运行100B+的bitnet_b1_58 模型,或许我们将迎来一个新的黄金时代。

参考链接:
[1] github:https://github.com/microsoft/BitNet
[2] ​​​https://www.reddit.com/r/LocalLLaMA/comments/1g6jmwl/bitnet_inference_framework_for_1bit_llms/​

本文转载自 AI进修生​,作者: Aitrainee

收藏 1
回复
举报
回复
相关推荐