尧图精选

BitNet 无 GPU 快速推理:1-bit LLM 在普通 CPU 上的完整落地路径

🕒 发布时间:2026/9/1 13:47:37 📁 来源:尧图网络
BitNet 无 GPU 快速推理1-bit LLM 在普通 CPU 上的完整落地路径【免费下载链接】BitNetOfficial inference framework for 1-bit LLMs项目地址: https://gitcode.com/GitHub_Trending/bitne/BitNetbitnet.cpp 是微软开源的 1-bit LLM 推理框架为没有 GPU 的 CPU 用户提供 BitNet b1.58 系列模型的本地部署能力。一台 8 核笔记本跑 2B 模型很多量化方案生成速度只有 2~3 tokens/s风扇却已经拉满。bitnet.cpp 用查找表内核LUT kernels把 1.58-bit 权重换成查表加整数累加官方数据x86 上比原始实现快 2.37x~6.17xARM 上快 1.37x~5.07x单台 CPU 即可把 100B 参数模型跑到接近人眼阅读速度。三个理由值得你部署它内存占用直降 8 倍相比 FP16 权重1-bit 量化让 2B 模型文件从数 GB 缩到约 1GB 量级8GB 内存的旧机器也能装下完整模型。不需要 GPU只需一台 CPUx86AVX2与 ARMNEON/DOTPROD都带专用内核笔记本、迷你主机、开发板均可部署。无损推理1.58-bit 权重 查表内核输出精度与原始模型一致速度提升不靠牺牲质量换取。图AMD EPYC 7V13 上 2B 模型的吞吐对比。绿色为优化内核红色为原始实现左侧子图是 prompt 处理pp128右侧是 token 生成tg128。跑通路径分四步拉仓库、一键编译、启动推理、压测拿数。每一步末尾附一条排错提示遇到报错先对照再翻日志。第 1 步克隆仓库并装 Python 依赖git clone --recursive https://gitcode.com/GitHub_Trending/bitne/BitNet # 带 --recursive 拉取 llama.cpp 子模块 cd BitNet conda create -n bitnet-cpp python3.10 -y # Python 3.10 是硬性要求 conda activate bitnet-cpp pip install -r requirements.txt # 转换/量化脚本依赖来自 llama.cpp 子模块排错cmake报3rdparty/llama.cpp相关目录为空 →git submodule update --init --recursive。第 2 步一键编译并准备 2B 模型setup_env.py 把内核代码生成 cmake 编译 模型下载 GGUF 量化串成一条命令首次执行最耗时的是编译。python setup_env.py -hr microsoft/BitNet-b1.58-2B-4T -q i2_s -md models # i2_s 量化模型与日志落盘到本地脚本按架构自动选择内核x86 默认 i2_s 路径ARM 上 tl1 为默认推荐。跑完后models/下会得到ggml-model-i2_s.gguf日志在logs/分步骤落盘哪一步挂了直接看对应的.log。排错编译阶段报std::chrono或log.cpp相关错误 → llama.cpp 子模块版本过新用git -C 3rdparty/llama.cpp log --oneline -5核对锁定回仓库锁定的子模块 commit。手动编译适合 ARM 开发板或想换量化内核的读者cmake -B build -DBITNET_ARM_TL1ON -DLLAMA_BUILD_TOOLSON \ -DCMAKE_C_COMPILERclang -DCMAKE_CXX_COMPILERclang # ARM 上启用 tl1 查找表内核 cmake --build build --config ReleaseARM 的 ARM 架构编译选项就这一个开关-DBITNET_ARM_TL1ON走 tl1 内核x86 若要用 tl2 内核则改为-DBITNET_X86_TL2ON但官方模型表里 2B 模型 x86 推荐 i2_s多数情况保持默认即可。第 3 步启动对话式推理python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf \ -p You are a helpful assistant -t 4 -cnv # -t 线程数-cnv 进入对话模式-t不必填到逻辑核数后面 §4 有实测依据-n控制生成 token 数默认 128-temp控制随机性默认 0.8。这个脚本本质是包装 run_inference.py 里的build/bin/llama-cli需要手动传参时直接看它的 usage 即可。排错加载阶段报 unsupported type / kernel mismatch → 量化类型与架构不匹配x86 换ggml-model-i2_s.ggufARM 换ggml-model-tl1.gguf后重跑第 2 步。第 4 步用 benchmark 脚本量化性能python utils/e2e_benchmark.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p 256 -n 200 -t 4-p是 prompt 长度默认 512-n是生成长度默认 128。脚本会分别输出 prompt processingpp和 token generationtg两组 tokens/s这才是你该记下的两个数字pp 决定首 token 延迟tg 决定打字机速度。排错tg 数值远低于官方图 → 先确认没有后台任务占满 CPUtop看一眼再降-t一档复测。实测快照三种 CPU 的吞吐量数据取自仓库 src/assets/ 中的官方测试图与 src/README.md模型均为 BitNet-b1.58-2B-4T左列为优化内核This Work右列为原始实现Original。CPU架构/量化线程生成 tg tok/sprompt pp tok/sAMD EPYC 7V13x86 / i2_s1662.6原始 48.5461原始 315Intel i7-13800Hx86 / i2_s620.1原始 17.478原始 53.4Cobalt 100ARM / DOTPROD852.6原始 35.1220原始 103EPYC 16 线程下 prompt 处理到 461 tok/s意味着 4096 token 的长文预处理不到 10 秒i7-13800H 上 6 线程比 4 线程还快一点再往上加线程没有收益说明瓶颈在内存带宽而不是核数。ARM 平台收益最大——Cobalt 100 上 prompt 处理提速 2.19x这正是 LUT 内核在 DOTPROD 指令集上的主场。图EPYC 7V13 上不同线程数的吞吐曲线。绿色为 bitnet.cpp 优化内核红色为原始实现横轴线程数纵轴 tokens/s。踩坑速查⚠️llama.cpp 子模块编译报std::chrono/log.cpp错误官方 FAQ 记录的新版子模块回归。解法git submodule update --init --recursive锁定回仓库指定 commit 后重新 cmake。源自仓库 README FAQ⚠️线程拉满反而变慢i7 上 6 线程 tg 约 20.1 tok/s继续加线程不升反降EPYC 在 12→16 线程也出现回落。解法从nproc的 3/4 起步用 utils/e2e_benchmark.py 各跑一轮取 tg 峰值。源自 src/README.md 官方测试曲线⚠️clang不是 recognized commandWindows或版本 18编译器不满足 clang≥18 的硬性要求。解法Debian/Ubuntu 走 LLVM 官方 apt 源装 clang-18Windows 必须用 VS2022 Developer Command Prompt 并勾选 Clang 组件。源自仓库 README FAQ⚠️x86 机器指定-q tl1直接失败tl1 是 ARM 专用 LUT 内核x86 上 setup_env 会直接拒绝。解法x86 用-q i2_sARM 用-q tl1对应关系见 setup_env.py 里的SUPPORTED_QUANT_TYPES。⚠️想要更快但不知道调哪kernel 分块参数ROW/COL BLOCK、PARALLEL_SIZE集中在 include/gemm-config.hEPYC 8 线程 pp128 的官方最优解是 parallel4 / row block4 / col block128可作起点微调。跑通之后还有三条路GPU 内核入口在 gpu/官方 CUDA 推理核自训的 BitNet 权重可用 utils/convert-helper-bitnet.py 从 safetensors 转 GGUFembedding 场景0.6B/270M的 I2_S 转换指南在 docs/bitnet-embeddings-i2s-guide.md。下一步建议用e2e_benchmark.py扫一遍-t把你机器的 tg 峰值记下来作为基线。【免费下载链接】BitNetOfficial inference framework for 1-bit LLMs项目地址: https://gitcode.com/GitHub_Trending/bitne/BitNet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →