RepoDaily · 2026-07-17 · Dataset / Public directory

Bonsai Demo:用两条 Shell 命令在本地运行 1-bit 与三值大语言模型

#16 Dataset / Public directory Shell +323 PrismML-Eng/Bonsai-demo 打开仓库

PrismML 的演示仓库通过 Shell 脚本自动下载并在本地启动 Bonsai 27B 视觉语言模型。1-bit 权重压缩到约 1.125 bits/参数,27B 模型可装入现代 iPhone。

项目类型Dataset / Public directory
最适合希望在 Mac(Metal)、Linux/Windows(CUDA、Vulkan、ROCm)或 CPU 上本地运行 Bonsai 1-bit 或三值模型、且不想手动编译 llama.cpp 的开发者
风险等级中等——27B 模型仓库目前为私有,需要 HuggingFace token;演示固定 open-webui==0.10.2 并要求 Python 3.11+
评估时间15–30 分钟完成下载与首次推理(硬件充足的前提下)

核心问题: Bonsai 27B 的 sub-2-bit 权重压缩在你的目标设备上能否提供可用的对话、视觉和工具调用质量?

90/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 90/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 4 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 5 个工作流步骤、5 个下一步动作,以及 3 个命令/安装信号。

62维护可信度

趋势热度为 +323 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

90生产准备度

采纳风险标记为 medium,并包含 4 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 7 个 AI/Agent 相关信号。

项目概览

Bonsai Demo 是 PrismML-Eng 发布的基于 Shell 的模型启动仓库,用于自动化下载和运行 Bonsai 系列压缩语言模型。仓库本身不包含模型权重或推理引擎,而是提供 setup 脚本来从 HuggingFace 拉取预编译二进制文件和模型文件,并在 http://localhost:8080 启动 llama.cpp 服务器。整个流程围绕两条命令设计:./setup.sh 和 ./scripts/start_llama_server.sh。

Bonsai 模型系列有两种压缩变体。1-bit 系列将权重压缩到约 1.125 bits/参数,使 270 亿参数的模型可以装入现代 iPhone 而无需内存卸载。三值系列使用约 1.7 bits/权重,打包为 2-bit 存储以加速内核计算,是演示的默认选择。两个系列均提供 27B、8B、4B 和 1.7B 四种规模。

27B 是该系列最新、最大的一代,首次引入视觉语言能力。用户可以发送照片、截图和 PDF 让模型进行分析。27B 模型还支持 OpenAI 风格的 tool_calls(含完整往返调用)、两个演示 UI 中的 MCP 服务器集成、每轮对话可调的推理力度,以及 256k+ token 的上下文窗口。配套发布了三份白皮书:Bonsai 27B、1-bit Bonsai 8B 和 Ternary-Bonsai 8B。

仓库标记为 Shell 语言,因为其主要接口是 bash 和 PowerShell 脚本:setup.sh、setup.ps1、scripts/download_models.sh、scripts/run_llama.sh、scripts/start_llama_server.sh 及对应的 Windows 版本。pyproject.toml 管理 Python 依赖(huggingface-hub、cmake、ninja、setuptools),并可选固定 open-webui==0.10.2 用于 Web 聊天界面。项目采用 Apache 2.0 许可证。

解决什么问题

  • 在本地运行 27B 视觉语言模型通常需要 40–60 GB 显存(标准 FP16),这排除了大多数消费级硬件——Bonsai 的 1-bit 压缩正是针对这一缺口。
  • 编译 llama.cpp 并选择正确后端(Metal、CUDA、Vulkan、ROCm)再匹配对应的 GGUF 模型格式是一个手动且容易出错的过程,演示脚本旨在将其自动化。
  • 27B 模型仓库目前在 HuggingFace 上为私有,用户需要在 setup 前设置 BONSAI_TOKEN——这对开放评估造成了门槛。

工作原理

  1. 克隆仓库,可选设置 BONSAI_MODEL(27B 为默认,可选 8B、4B、1.7B)和 BONSAI_TOKEN(27B 私有仓库必需)环境变量。
  2. 在 macOS/Linux 上运行 ./setup.sh,在 Windows 上运行 .\setup.ps1。脚本安装 Python 依赖(huggingface-hub>=1.5.0、cmake、ninja、setuptools),下载默认的 Ternary-Bonsai-27B 模型文件,并获取预编译推理二进制文件。
  3. 运行 ./scripts/start_llama_server.sh,在 http://localhost:8080 启动本地服务器,提供聊天、视觉输入和工具调用端点。
  4. 切换模型时设置 BONSAI_FAMILY(ternary 或 1-bit)和 BONSAI_MODEL,重新运行 scripts/download_models.sh 和 scripts/run_llama.sh。切换是即时的,因为推理二进制文件已经安装。
  5. 可选:安装 open-webui 包(pyproject.toml 中固定为 0.10.2),获得基于浏览器的聊天界面,支持视觉上传和 MCP 工具面板。

命令面:脚本、参数与环境变量

  • setup.sh / setup.ps1:单命令安装器,安装依赖、下载模型和二进制文件。默认模型为 Ternary-Bonsai-27B。
  • scripts/start_llama_server.sh:在 http://localhost:8080 启动基于 llama.cpp 的服务器,启用聊天、视觉和工具。
  • scripts/download_models.sh:当 BONSAI_FAMILY 或 BONSAI_MODEL 变更时重新下载指定模型。
  • scripts/run_llama.sh / scripts\run_llama.ps1:运行单次推理,例如 ./scripts/run_llama.sh -p "Hello!"
  • BONSAI_MODEL:选择规模——27B(默认)、8B、4B 或 1.7B。
  • BONSAI_FAMILY:选择压缩系列——ternary(默认)或 1-bit。
  • BONSAI_TOKEN:HuggingFace 访问令牌,仅在 27B 仓库为私有时必需。
  • AGENTS.md:专为 AI 编程代理编写的指南,涵盖硬件相关参数、默认值和需要向用户确认的事项。
  • VISION.md 和 TOOLS.md:文档说明视觉输入(照片、截图、PDF)和工具调用能力(OpenAI 风格 tool_calls、MCP 服务器)。

试用路径:从克隆到首次对话的 30 分钟流程

在 Apple Silicon Mac 上,路径是:git clone 仓库,运行 ./setup.sh(下载 Ternary-Bonsai-27B 和 Metal 编译的二进制文件),然后运行 ./scripts/start_llama_server.sh 并在浏览器打开 http://localhost:8080。无需手动编译 llama.cpp,因为脚本会根据检测到的后端获取匹配的预编译二进制文件。

在配备 CUDA、Vulkan 或 ROCm 的 Linux/Windows 上,相同的 setup.sh 或 setup.ps1 会检测可用后端并下载对应的二进制文件。pyproject.toml 要求 Python 3.11+,列出 huggingface-hub>=1.5.0、cmake、ninja 和 setuptools 作为构建依赖。

要对不同模型规模做基准测试,设置 BONSAI_FAMILY 和 BONSAI_MODEL,重新运行 download_models.sh,并参考 community-benchmarks/ 目录中的硬件特定结果和提交模板。

维护风险:版本固定与私有模型仓库

演示将 open-webui 固定到 0.10.2 版本,pyproject.toml 的注释说明这是演示验证通过的版本——具体原因是 0.10.2 是首个包含 CHAT_RESPONSE_MAX_TOOL_CALL_ITERATIONS 循环上限的版本,脚本依赖该机制。升级此依赖需要刻意重新验证。

27B 模型仓库目前在 HuggingFace 上为私有,用户必须在 setup 前获取并设置 BONSAI_TOKEN。这增加了一个准入门控步骤——如果仓库公开则可移除,但在撰写时 27B 体验并非完全开放。

pyproject.toml 声明版本为 0.1.0,表明演示仍处于早期发布阶段。底层的 Bonsai 模型、压缩格式和推理内核可能在版本间发生变化。

谁适合关注

适合关注

  • 评估 sub-2-bit 权重压缩以在消费级 GPU、Apple Silicon 甚至移动设备上部署大语言模型的开发者
  • 构建需要在本地运行 OpenAI 风格 tool_calls 和 MCP 服务器集成、且不产生云端 API 成本的代理应用的团队
  • 比较 1-bit(约 1.125 bits/权重)与三值(约 1.7 bits/权重)压缩在 27B、8B、4B 和 1.7B 规模上质量差异的研究者
  • 需要视觉语言能力(照片、截图、PDF 理解)和 256k+ token 上下文窗口、且运行在本地硬件上的应用开发者

可以先跳过

  • 需要保证模型权重持续可用的生产部署——27B 仓库目前为私有
  • 需要稳定 semver 标记推理 API 的项目——演示处于 0.1.0 版本且依赖被固定
  • 没有 Python 3.11+ 或足够磁盘空间进行多模型下载的团队
  • 需要 FP16 或更高精度推理、压缩伪影不可接受的使用场景

风险与注意事项

演示脚本结构清晰,部署确实是单命令的,但 27B 模型仓库仍为私有,项目版本为 0.1.0,open-webui 因工具调用稳定性被固定到特定版本。

  • Bonsai 27B HuggingFace 仓库目前为私有,需要 BONSAI_TOKEN,并非所有用户都能获取
  • 项目版本为 0.1.0——演示、模型格式和脚本可能在无向后兼容保证的情况下变更
  • open-webui 固定在 0.10.2,因为特定的工具调用迭代上限;升级需要手动重新验证
  • README 中未发布速度基准测试——结果存放在 community-benchmarks/ 中,依赖社区提交
  • 演示从 HuggingFace 获取预编译二进制文件而非从源码编译,对 PrismML 的 HF 仓库形成供应链依赖
  • 27B 模型需要将 HuggingFace token(BONSAI_TOKEN)设为环境变量,意味着 token 在主机的进程环境中可见。
  • 脚本在运行时从 HuggingFace 下载预编译二进制文件和模型文件——用户应在运行下载的可执行文件前验证 HF 仓库完整性。
  • 本地服务器默认在 http://localhost:8080 运行,无身份认证,适合单用户本地测试,但不应暴露到网络。
  • Apache 2.0 许可证允许商业使用、修改和再分发,需保留归属声明。

替代方案比较

方案适用场景代价
llama.cpp
你想从源码编译推理引擎,完全控制量化格式和后端免费,MIT 许可证
Ollama
你需要一个完善的 CLI 和库管理器来运行各种 GGUF 模型,无需编写 Shell 脚本免费,MIT 许可证
text-generation-webui (oobabooga)
你想要基于 Gradio 的 Web UI,支持广泛的模型格式和扩展生态免费,AGPL-3.0 许可证
vLLM
你在配备 GPU 的服务器上部署,需要高吞吐批量推理来处理生产流量免费,Apache 2.0 许可证

这个趋势说明了什么

在你的特定硬件上基准测试 1-bit 与三值

演示提供四种规模(1.7B、4B、8B、27B)和两种系列。在你的目标设备上运行 community-benchmarks/ 模板,构建 tokens/second 与质量的权衡表。这些数据可直接发布,对硬件特定的部署决策有实际参考价值。

克隆仓库,先用 BONSAI_MODEL=8B 运行 ./setup.sh(下载量更小),然后用 scripts/run_llama.sh 对比 BONSAI_FAMILY=1-bit 的相同规模。

用 tool_calls + MCP 原型化代理工作流

Bonsai 27B 支持 OpenAI 风格 tool_calls(含完整往返调用)和两个演示 UI 中的 MCP 服务器集成。构建本地优先代理原型的开发者可以在不产生云端 API 成本的情况下测试多步工具调用。

设置 BONSAI_MODEL=27B,运行 ./scripts/start_llama_server.sh,将 OpenAI 兼容客户端指向 localhost:8080 测试 tool_call 往返。

在消费级硬件上评估视觉语言任务

27B 视觉语言模型接受照片、截图和 PDF。在 Mac 或消费级 GPU 上测试图像问答,可验证 sub-2-bit 压缩是否保留了足够的视觉推理质量。

按 VISION.md 文档在 setup 后向 localhost:8080 发送截图或 PDF,将输出质量与云端托管的 VLM 进行对比。

下一步建议

先在本地运行 Bonsai 8B 做基准测试,再决定是否上 27B

8B 模型比 27B 下载量更小,且不需要 HuggingFace token(仅 27B 仓库为私有)。它让你验证部署流程、测试硬件上的推理速度,并在不受 token 门控的情况下比较 1-bit 与三值的质量。

  1. 克隆仓库:git clone https://github.com/PrismML-Eng/Bonsai-demo.git && cd Bonsai-demo
  2. 设置 BONSAI_MODEL=8B 跳过私有 27B 仓库并减少下载量
  3. 在 macOS/Linux 上运行 ./setup.sh,在 Windows 上运行 .\setup.ps1
  4. 运行 ./scripts/run_llama.sh -p "用两句话解释 1-bit 权重压缩是什么。"
  5. 切换对比:BONSAI_FAMILY=1-bit BONSAI_MODEL=8B ./scripts/download_models.sh && BONSAI_FAMILY=1-bit ./scripts/run_llama.sh -p "相同的提示词"

RepoDaily 判断

Bonsai Demo 达成了核心目标:用两条 Shell 命令让 sub-2-bit 压缩大语言模型在本地运行起来。真正的差异化在于权重压缩——27B 模型压缩到约 1.125 bits/参数并装入 iPhone 是一个实在的技术里程碑。但私有 27B 仓库、0.1.0 版本和固定的 open-webui 依赖意味着它更适合作为预览级评估工具,而非生产部署路径。

信息来源