查看原文
其他

Bitnet.cpp:微软开源1比特推理框架,CPU跑100B模型(Windows / Linux部署)

Aitrainee AI进修生
2024-12-28

🍹 Insight Daily 🪺

Aitrainee | 公众号:AI进修生

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

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

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

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位量化的语言模型)。与人类阅读速度相当,这显著提升了在本地设备上运行大型语言模型的潜力。

你现在可以在Ubuntu Linux、Window s 或 MacOS上安装它,对了,Bitnet.cpp 不仅支持x86架构,还支持ARM架构。
那么,让我们看看它是如何工作的。
官方的部署:

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

  1. 1. 克隆仓库

    git clone --recursive https://github.com/microsoft/BitNet.git
  2. 2. 安装依赖:使用 conda 创建环境并安装依赖。

  3. 3. 构建项目:使用 setup_env.py 脚本下载模型并构建项目。

  4. 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.ps1powershell -ExecutionPolicy Bypass -File llvm.ps1

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

conda create -n myenv python=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缓存等参数。

最后,它给出了模型的原始输出和我们的LLM响应。
这里是花费的总用时:12233ms

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

它会打印出结果:

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

BitNet 轻量、高效。体积仅为传统模型的20%。摒弃了复杂的浮点运算,采用简单的整数运算,使得计算变得快速而轻便,加载时间快。
此外,1位LLMs的训练还需从头开始,因为它们与现有模型有本质上的不同。尽管有将现有模型量化为1位的建议,但BitNet的设计使得这种转换并不简单,虽然可能达到与Q1模型相似的质量,但整体性能可能受到影响。因此,真正的高效训练仍需从零开始。
总之,若我们真的能够在普通桌面CPU上以较快速度的运行100B+的bitnet_b1_58 模型,或许我们将迎来一个新的黄金时代。

🌟希望这篇文章对你有帮助,感谢阅读!如果你喜欢这系列文章请以 点赞 / 分享 / 在看 的方式告诉我,以便我用来评估创作方向。

💫video source:https://www.youtube.com/watch?v=PJs1a76i5t0
👽Submission:kristjahmez06@gmail.com
参考链接:
[1] github:https://github.com/microsoft/BitNet

[2] https://www.reddit.com/r/LocalLLaMA/comments/1g6jmwl/bitnet_inference_framework_for_1bit_llms/

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~ 

修改于
继续滑动看下一个
AI进修生
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存