本文档提供了BitNet.cpp在各种硬件平台和模型尺寸下的全面性能指标。它展示了在运行1位(三元)大型语言模型时,通过专用内核优化(ARM的TL1和x86的TL2)实现的效率提升。有关支持的模型和硬件配置的信息,请参阅支持的模型和硬件。
BitNet.cpp在1位LLM推理方面比标准实现带来了显著的性能提升。这些改进是通过针对不同CPU架构量身定制的专用内核优化实现的。
在更大模型中观察到最显著的性能提升,这表明BitNet.cpp优化具有出色的扩展特性。
以下数据显示了在Apple M2 ARM处理器上使用TL1优化内核在各种模型尺寸下实现的性能加速
| 模型大小 | 每秒令牌数(基线) | 每秒令牌数(BitNet.cpp) | 加速比 | 能耗降低 |
|---|---|---|---|---|
| 1B | 28.7 | 39.3 | 1.37倍 | 55.4% |
| 3B | 8.3 | 20.2 | 2.43倍 | 63.7% |
| 7B | 3.5 | 13.7 | 3.91倍 | 67.8% |
| 13B | 1.9 | 9.6 | 5.07倍 | 70.0% |
注:基线测量使用标准矩阵乘法实现,不含查找表优化。
以下数据显示了在Intel x86处理器上使用TL2优化内核在各种模型尺寸下实现的性能加速
| 模型大小 | 每秒令牌数(基线) | 每秒令牌数(BitNet.cpp) | 加速比 | 能耗降低 |
|---|---|---|---|---|
| 1B | 19.1 | 45.3 | 2.37倍 | 71.9% |
| 3B | 5.6 | 23.1 | 4.13倍 | 77.4% |
| 7B | 2.3 | 12.4 | 5.39倍 | 80.3% |
| 13B | 1.2 | 7.4 | 6.17倍 | 82.2% |
此图表展示了随着模型尺寸增加,BitNet.cpp优化的扩展效率有所提高。ARM (TL1) 和 x86 (TL2) 平台在更大模型上均显示出更高的加速因子,其中x86在所有模型尺寸上始终实现更高的加速。
基准测试是使用BitNet仓库中提供的基准测试工具进行的。该方法侧重于衡量文本生成任务的端到端推理性能。
基准测试在以下硬件配置上进行
ARM平台:
x86平台:
BitNet.cpp提供了在您自己的硬件配置上运行基准测试的工具。这使您能够在特定设置和模型组合上评估性能。
该仓库包含e2e_benchmark.py,用于衡量端到端推理性能
python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4
参数
-m, --model:模型文件路径(必填)-n, --n-token:要生成的令牌数(默认值:128)-p, --n-prompt:要处理的提示令牌数(默认值:512)-t, --threads:要使用的线程数(默认值:2)为了测试特定非公开模型配置的性能,BitNet.cpp提供了一个生成虚拟模型的脚本
python utils/generate-dummy-bitnet-model.py models/bitnet_b1_58-large --outfile models/dummy-bitnet-125m.tl1.gguf --outtype tl1 --model-size 125M
生成虚拟模型后,您可以使用上述e2e_benchmark.py脚本对其进行基准测试。
该图表说明了基准测试系统如何使用优化内核(ARM的TL1和x86的TL2)来测量推理过程中的性能(每秒令牌数)和能耗。
运行基准测试或优化性能时,请考虑以下因素
来源:README.md11-14 README.md233-270
BitNet.cpp使大型语言模型在消费级硬件上的实际应用成为可能
来源:README.md11