本页面提供了使用 BitNet.cpp 运行推理的实用示例,展示了如何针对各种用例使用不同的模型和参数。有关命令行参数的信息,请参阅命令行参数。
本文档涵盖:
在深入了解示例之前,我们先了解 BitNet.cpp 中推理是如何执行的
此命令使用 BitNet-b1.58-2B-4T 模型和 i2_s 量化,从提示“Microsoft Corporation is”开始生成文本。
对于为指令遵循而微调的模型(如 Falcon3-Instruct),请使用对话模式
在此模式下,由 -p 指定的提示将用作系统提示,模型将进入交互式聊天会话。
来源:README.md207-209 run_inference.py35-36
run_inference.py 脚本接受多个参数,用于控制推理过程的不同方面
不同的模型在质量和速度之间提供权衡
控制生成的令牌数量
调整 CPU 线程数以获得最佳性能
设置最大上下文大小
调整温度参数以控制随机性
BitNet.cpp 支持各种用例,从简单的文本补全到交互式对话
来源:run_inference.py46-53 README.md204-231
适用于简单文本补全任务
用于与指令调优模型进行交互式对话
-cnv 标志激活对话模式,在该模式下,系统将初始提示视为系统消息,然后进入交互式聊天会话。
针对具有更确定性答案的事实问题
较低的温度设置有助于为事实问题生成更确定和集中的响应。
用于创意内容生成
较高的温度设置和较长的令牌计数对于创意写作任务很有用。
要使用不同模型对 BitNet.cpp 的性能进行基准测试,请使用 e2e_benchmark.py 脚本
基准测试脚本参数
| 参数 | 描述 | 默认 |
|---|---|---|
-m, --model | 模型文件路径 | 必填 |
-n, --n-token | 要生成的令牌数量 | 128 |
-p, --n-prompt | 要处理的提示令牌数量 | 512 |
-t, --threads | 使用的线程数 | 2 |
用于使用虚拟模型进行测试
此方法有助于在不下载大型模型文件的情况下测试框架性能。
BitNet.cpp 根据您的硬件平台提供不同的优化内核
| 内核 | 硬件 | 描述 |
|---|---|---|
| i2_s | ARM64 和 x86_64 均支持 | 所有平台的默认内核类型 |
| tl1 | ARM64(例如 Apple Silicon) | 为 ARM 处理器优化 |
| tl2 | x86_64(例如 Intel、AMD) | 为 x86 处理器优化 |
在模型准备期间指定内核类型
然后使用准备好的模型运行推理
来源:setup_env.py49-52 README.md178-186
以下是 BitNet.cpp 支持的不同模型的示例