微软开源的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%。
这些提升尤其对于大模型更加显著,例如,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来管理虚拟环境,安装步骤如下:
- 克隆项目代码:
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
- 创建虚拟环境并安装依赖:
conda create -n bitnet-cpp python=3.9
conda activate bitnet-cpp
pip install -r requirements.txt
- 构建项目:
可以通过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非常适合在资源有限的设备上运行大规模模型。
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/bitnet-cpp.html
转载时须注明出处及本声明