UnbiasedStrata - 把 PolyStrata 推理引擎包进一个 make build 的 C++ 前端
UnbiasedStrata 是 PolyStrata 的一个分支:保留两套推理引擎不动,替换掉周围的一切——没有安装器、构建与启动时不下载、请求到 token 之间不经过 Python。一次 make build 在带 NVIDIA 显卡的 Linux 机器上产出引擎和一个 OpenAI 风格聊天 API 的 C++ 前端。
UnbiasedStrata 是托管在 GitHub 上的一个开源项目,由 robertkarl 维护。按项目自述,它是 PolyStrata v0.1.45-poly.1 的一个分支:两套推理引擎保持原样,被替换的是引擎之外的所有部分——没有安装器,构建和启动阶段都不下载任何东西,请求到 token 之间也没有 Python 参与。它的目标场景很明确:一台装有 NVIDIA 显卡的 Linux x86-64 机器,可能完全没有网络,执行一次 make build 就得到引擎和一个名为 unbiased-strata 的 C++ 前端,由后者提供 OpenAI 风格的聊天 API。适合谁?适合愿意自己编译、自己准备模型文件、并且希望推理链路上少一层脚本胶水的本地部署用户。
维护者与状态
仓库为 robertkarl/UnbiasedStrata,维护者是 robertkarl。仓库创建于 2026-10-07,最后一次提交在 2026-11-03。截至 2026-11-05,项目获得 215 个星标。需要说明的是,项目目前尚无正式 release,因此没有可引用的版本号或发布包,使用方式以仓库中的源码为准。
项目自述把自己定位为 Strata 的「suckless(dwm)变体」,即尽量精简、由使用者自行克隆与编译的形态。README 中称其经过了一些验证:有 agent 逐项核对内核,对照 llama.cpp 中 CPU 与 GPU 的差异;以及用 Qwen 3.8 Flash Next 在 Bob-bench 宽测试集上完整跑过一轮并取得高分。这些是维护者的自述,项目本身没有在文中给出可复核的分数明细。README 里也有一句直白的提醒:「Use at your own risk. Works on my machine.」
主要能力
以下能力均据项目 README 与说明整理,属于项目自述,未经本站独立验证。
- 单一构建产出:在带 NVIDIA 显卡的 Linux 机器上执行一次
make build,产出strata、strata-poly、strata-dsv41、libstrata_kq.so与前端unbiased-strata。另有make test,据说明可在无 GPU、无模型的情况下用假引擎测试前端。 - OpenAI 风格接口:前端基于 llama.cpp 自身的 server 代码,提供
/v1/chat/completions(支持流式与非流式)、/v1/models、/health、/props、/tokenize、/detokenize。项目说明其一次处理一个请求。 - 参数分层传递:命令行中
--之前的部分是llama-server的选项(如--host、--port、--api-key、--alias、--temp、--top-k、--top-p、--min-p、--reasoning-format等),--之后的部分传给引擎,引擎作为子进程启动并通过行协议通信。 - 多引擎支持:README 给出了
strata-poly、strata(Qwen3.8-Flash-Next GSQ-RCO IQ3_XXS)与strata-dsv41(DeepSeek-V4.1-Flash-1017,Strata v0.2.4 的第三个引擎)三类调用示例,各自对应不同的模型文件与参数组合。 - 图片输入:在
--之前加上--mmproj指向投影器文件,并给编码器指定--threads,前端会用 llama.cpp 的 mtmd 编码图片,再通过上游的GENI协议把结果交给引擎。默认单张图片最多 300 行,可用--image-max-tokens调整。 - 离线打包工具:
strata需要预先离线制作 pack 目录与 MTP 草稿目录,仓库提供tools/iq_pack.py、mtp_fetch.py、mtp_pack.py、mtp_rt.py等脚本,依赖 numpy、regex 与子模块中的 gguf-py。
使用入口
源码与文档都在仓库中:robertkarl/UnbiasedStrata。据 README,基本流程是克隆仓库、初始化子模块、编译:
git clone https://github.com/robertkarl/UnbiasedStrata && cd UnbiasedStrata git submodule update --init make build make test
启动方式为 unbiased-strata --engine -m [llama-server options] --。其中 -m 指定读取词表与聊天模板的 GGUF 文件,前端本身不从该文件加载张量;--engine 接受路径,或接受在程序旁边查找的裸名称。README 给出的一个示例是:
build/bin/unbiased-strata --engine build/bin/strata-poly \ -m /models/Qwen3.6-35B-A3B-UD-Q3_K_M.gguf --host 127.0.0.1 --port 18091 \ --alias qwen3.6-35b-a3b-ud-q3_k_m \ -- --model /models/Qwen3.6-35B-A3B-UD-Q3_K_M.gguf --max-context 32768 \ --expert-profile /models/expert-profile-q3km.txt --tail-skip 6
模型文件需要先在联网机器上下载,再拷贝到推理机上;项目自述该分支本身不负责下载模型。
许可与限制
仓库采用 MIT 许可证。但项目说明中特别指出,部分组件以及每一个模型都有各自的许可证,需要分别确认;README 的致谢部分列出了 PolyStrata、Strata、llama.cpp / ggml、Qwen 团队、ISTA-DASLab、Unsloth 等来源。
已知限制与前置条件,据项目说明:
- 目标平台为 Linux x86-64,单张 NVIDIA GPU,Pascal 或更新架构,CUDA 12.x。README 提到 CUDA 13 不再包含 sm_61,Pascal 卡应停留在 12.4。
- 构建需要 git、cmake、build-essential、gcc-13、nvidia-cuda-toolkit 等;README 称工具链约占 8 GB 磁盘。不同架构的编译耗时与产物体积在 README 中有记录(例如 compute 8.9 在 16 核上约 6 分 40 秒、557 MB)。
- 模型文件、pack 目录与 MTP 草稿目录需要自行准备;
strata与strata-dsv41的调用参数较复杂,分别有docs/MEMORY_LAYOUT.md与docs/DEEPSEEK41.md等文档说明。 - 前端一次只处理一个请求。
- 维护者明确表示按现状提供、风险自负,并称「Works on my machine」,即未对更广泛的硬件组合做保证。
由于项目尚无正式 release,接口与构建方式仍可能随提交变化,采用前建议先阅读仓库中的 UPSTREAM.md 与 PLAN.md 了解改动范围与后续计划。