微软开源的1-bit LLM推理框架——BitNet.cpp中文入门教程

近日,微软发布了一个全新的开源项目——BitNet.cpp,这是专为1-bit大语言模型(LLMs)推理而设计的框架。BitNet.cpp旨在通过优化内核为CPU上运行的1.58-bit模型提供快速且无损的推理支持,并在未来版本中计划支持NPU和GPU。

BitNet.cpp的开源为1-bit LLM的普及和大规模推理打开了新的大门,其在CPU上的高效推理性能,极大地扩展了大模型在本地设备上的可行性。未来,随着对NPU和GPU的支持,BitNet.cpp有望成为低比特模型推理的主流框架。如果你对大模型在实际应用中的推理性能感兴趣,BitNet.cpp无疑是值得关注和尝试的项目。

性能提升与能耗下降

根据微软的测试结果,BitNet.cpp在不同的CPU架构上带来了显著的性能提升和能耗下降:

  • ARM CPU:推理速度提升1.37倍到5.07倍,能耗降低55.4%到70.0%。
  • x86 CPU:推理速度提升2.37倍到6.17倍,能耗降低71.9%到82.2%。
    intel_performance.jpg
    m2_performance.jpg
    这些提升尤其对于大模型更加显著,例如,BitNet.cpp可以在单个CPU上运行100B参数的BitNet b1.58模型,达到每秒5-7个token的推理速度,接近人类阅读速度。这为大模型在本地设备上的推理打开了新可能。

支持的模型

目前,BitNet.cpp主要支持已经存在的1-bit模型,这些模型可从Hugging Face获取。具体可以直接在hf上查看https://huggingface.co/HF1BitLLM 我就不列举了,因为它可能会过段时间发生变化...

安装与配置

环境要求

要使用BitNet.cpp,需要配置以下环境:

  • Python 3.9及以上版本
  • CMake 3.22及以上版本
  • Clang 18及以上版本

Windows用户还需安装Visual Studio 2022,并确保启用了C++开发相关组件。Debian/Ubuntu用户可通过自动化脚本安装LLVM工具链:

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

推荐使用Conda来管理虚拟环境,安装步骤如下:

  1. 克隆项目代码:
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
  1. 创建虚拟环境并安装依赖:
conda create -n bitnet-cpp python=3.9
conda activate bitnet-cpp
pip install -r requirements.txt
  1. 构建项目:

可以通过Hugging Face下载模型并将其转换为量化格式,或者手动下载模型后进行推理。

python setup_env.py --hf-repo HF1BitLLM/Llama3-8B-1.58-100B-tokens -q i2_s

基本使用

BitNet.cpp提供了简单的命令行接口,便于用户进行推理。以下是一个运行推理的示例:

python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "Where is Mary?" -n 6 -temp 0

在这个例子中,模型会根据给定的上下文生成6个token,输出答案为:“Mary is in the garden.”。

关键参数解释
  • -m:模型路径。
  • -n:生成的token数量。
  • -p:提示词,用于生成文本。
  • -t:使用的线程数。
  • -temp:控制生成文本的随机性,值越低,输出越确定。

性能基准测试

BitNet.cpp还提供了性能基准测试脚本,以评估模型在本地设备上的推理表现。例如:

python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4

此命令会使用4个线程生成200个token,并对256个token的提示进行推理。用户还可以通过生成虚拟模型来进行自定义测试。

与现有框架的对比

BitNet.cpp与其他推理框架相比,最大的优势在于其高效的量化技术,能够在保持模型精度的前提下,极大提升推理速度并降低能耗。与常规16-bit或8-bit推理相比,1.58-bit模型的能效比明显更优,特别是在边缘设备或功耗敏感的环境中有着广阔的应用前景。

例如,与常见的LLM推理框架如Hugging Face Transformers或DeepSpeed相比,BitNet.cpp专注于低比特模型的推理,能够在仅使用CPU的情况下,达到其他框架需要GPU加速才能实现的性能。这使得BitNet.cpp非常适合在资源有限的设备上运行大规模模型。

标签: AI, Python

相关文章

使用Python3开发一个网站内链检查工具

1. 指定域名站点爬取与站内链接跟踪输入:指定一个域名(如https://www.lvtao.net),工具需要抓取该站点的所有页面内容。目标:递归跟踪并访问站点内的所有链接。只有同域名的站内链...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件