NInfer for Windows and around 16GB VRAM: RTX 5070 Ti / 5080 / 5090, Qwen3.8-27B GSQ-RCO Q3, CUDA 13 Native engine, tray manager, model conversion and measured setup guides.
C++
65
1,993 commits
updated Oct 1, 2026
简体中文 | English
RTX 5070 Ti / RTX 5080 / RTX 5090 · 本地推理与托盘管理
https://github.com/user-attachments/assets/9695e989-e3f2-4727-8735-48d00910d90a
下载引擎和模型(夸克网盘) · 单独打开视频 · 5070 Ti 中文指南 · English guide · 下载与模型转换说明
面向希望在 Windows、约 16GB 独立显存上运行 Qwen3.8-27B GSQ-RCO 的用户。本分支整理了 CUDA 13 Native 引擎、Windows 托盘管理器与日常启动配置:通过网页管理模型、保存参数、查看运行监控,并提供 GSQ-RCO GGUF → .ninfer 的转换步骤。
下载目录包含 Swift S 和 Swift XXS 两套模型,模型合计约 20 多 GB 磁盘空间,完整运行目录当前约 23.5 GB,建议预留至少 30 GB 磁盘空间。这是文件占用,不是显存要求。
本仓库提供的预编译引擎与配套 .ninfer 模型成品,发布支持范围仅限 RTX 50 系列;本分支实测硬件为 RTX 5070 Ti 16GB。 RTX 5080、RTX 5090 的显存容量、可用上下文和合适参数因硬件而异,本分支尚未逐卡实测。
独立显存 16GB 及以上的 RTX 30 / RTX 40 系列,理论上也可以尝试,但本分支没有相应实测。 其他系列需要针对目标显卡从源码构建引擎,并按相应配方转换模型;RTX 50 系列成品不能直接当作通用部署包。RTX 30 / 40 的常用构建架构分别为 86 / 89,当前成品引擎仅包含 sm_120a 机器码。不要直接套用相同的上下文容量或性能结论。可以把本仓库和对应部署指南交给 AI,协助完成源码构建、GGUF 转换和启动配置。
本仓库:ninfer-16g-5070ti-5080-5090-qwen3.8-27b-gsq-rco。上游汇总仓库:iamwavecut/ninfer-all。原始推理引擎:Neroued/ninfer。
本分支在上游基础上提供 Windows / RTX 5070 Ti 构建、显存策略和管理器。下方保留上游项目的重要信息和贡献者出处,方便继续查阅。
以下内容译自上游介绍。其中的硬件、模型、历史测试限制与性能数字属于上游工作,不是本分支 Windows 16GB 运行包的实测或保证。当前 RTX 5070 Ti 参数与性能请看 Windows 部署指南。
上游汇总线将多个 NInfer 分支整合到一起,覆盖 RTX 3090、RTX 4090、RTX 5090 和 RTX PRO 6000 Blackwell,并在此基础上继续开发。基础来自 ashalliants/ninfer-3090 的 master:包括 v0.11.0 和多 GPU 流水线阶段,其中大部分由 Warlax 编写,延续了 Don-Chad/ninfer-3090 从 Neroued NInfer 开始的工作。
另外还整合了 TertiumOrganum1/ninfer-3090 的补丁、UDPSendToFailed/ninfer-4090 及其贡献者的思路、提交给 Neroued/ninfer 的开放 PR,以及以下作者的工作:
各项改动保留原作者署名;维护者与改动对应表列出作者和涉及文件。
下文之外的引擎说明,例如构建、软件包、服务 API、支持模型和参数,可参考 NInfer-3090 原始 README 与 NInfer-4090 原始 README。上游新增的、会影响数值或服务行为的功能通常需要手动开启,有三项例外:
--device-profile off 保留编译时的路线表。NINFER_PREFILL_ALIGN=0 保留用户请求的 chunk。NINFER_T2_A8_TILE=off 恢复被替换的内核。下列数字测于 2026 年 9 月,每种显卡各一张,采用 greedy 采样;除特别标注外,均为单请求。具体设置和完整数据见参考测试。
| 项目 | RTX 3090 | RTX 4090 | RTX 5090 | RTX PRO 6000 |
|---|---|---|---|---|
| Ternary Bonsai 2 27B,短对话(DFlash2,7 个草稿) | 202 tok/s | 256 tok/s | 397 tok/s | 381 tok/s |
| 读入 261K-token 文档后的解码速度(最快草稿方案) | 90 tok/s | 123 tok/s | 218 tok/s | 218 tok/s |
| 261K-token 输入的首 token 延迟 | 215 s | 102 s | 82 s | 78 s |
| 填满后仍找到全部三个检索目标的最大上下文 | 970,752 | 958,464 | 978,944 | 1,048,576* |
| 八请求并发总吞吐(MTP,3 个草稿) | 551 tok/s | 824 tok/s | 1,063 tok/s | 1,155 tok/s |
| Qwen3.8-27B,短对话(DFlash2,7 个草稿) | 118 tok/s | 149 tok/s | 236 tok/s | 237 tok/s |
| 填满后仍找到全部三个检索目标的最大上下文 | 417,792 | 405,504 | 872,448 | 1,048,576* |
| 八请求并发总吞吐(MTP,3 个草稿) | 329 tok/s | 442 tok/s | 690 tok/s | 739 tok/s |
* 这是引擎上限。RTX PRO 6000(96 GB)在各种 KV 格式和草稿方案下都能以该容量启动;填满后,两个模型均找到三个目标中的两个。
master 比较:**261K-token Bonsai 输入在 RTX 3090 上从 315 秒降至 215 秒,4090 从 138 秒降至 102 秒,5090 从 115 秒降至 82 秒;24 GB 显卡上随后进行的 rk4v4 解码快了 11–13%。短上下文解码仍受读取权重带宽限制,速度基本不变。Qwen3.8 在 RTX 5090 上的 8K–32K 输入预填充反而慢了 8–10%。rk4v4 验证注意力比编译路线快 3.2 倍。三张卡上的快速 prompt 内核配合 FP16 P·V 累加,使 prompt 注意力耗时减少 19–30%。qwen3_8_27b_gguf 配方原样复制每个量化张量的数据块;运行时直接计算全部 15 种 dense ggml 块格式。解码和验证使用向量内核,每列只解码一次权重;prompt 使用 llama.cpp 的整数 Tensor Core 内核。MTP、DFlash2、Vision 的使用方式与官方产物一致。3.5-bit GSQ-RCO IQ3_S 的 WikiText-2 困惑度为 7.071,与模型卡的 7.07 一致,官方产物为 7.286;权重占用从 15.9 GiB 降为 10.95 GiB。IFBench 为 80.3%,AIME 2025/2026 均为 100%,GPQA-Diamond 为 88.4%;官方产物分别为 77.7、96.7、96.7、87.4。无推测解码时,RTX 3090 为 59.9 对 40.3 tok/s,RTX 5090 为 107.5 对 88.1;RTX 4090 开启 MTP 后为 146 对 109 tok/s。详见 GGUF 块格式。ninfer-calibrate 可按需重测。3090 的 262K rk4v4 验证注意力快 3.2 倍;三张卡都启用 FP16 P·V 累加(该注意力耗时减少 15–17%,困惑度不变)与快速 prompt 内核(prompt 注意力耗时减少 19–30%)。当两个候选 token 分数接近时,同一 greedy 请求单独执行或与其他请求组成批次,可能比以前更容易给出不同答案。--device-profile off 保留此前 master 的编译调度。详见设备 profile。120a 构建都会编译 FP8 A8 与 NVFP4 W4A4 Tensor Core 单元,mma.sync 兼容路径也能使用其专用路线。此前 NVFP4 产物会在该路径启动失败,FP8 预填充则走反量化路线。RTX PRO 6000 上,Qwen3.8-27B NVFP4/FP8 产物的 4096-token 预填充为 11,822 tok/s,与 Native 构建差距在 1.4% 内;Qwen3.6-35B-A3B NVFP4 为 30,938 tok/s。rk8v4、rk4v4、rk4v4-e8、rk2v4-e8;所有 prompt 内核都将 chunk 对齐到完整 SM 调度批次,沿用 Ian Ranson 快速内核的思路。RTX 3090 的 131K rk8v4 输入耗时从此前 master 的 101 秒降至 76 秒。--spec mtp --draft-tokens 10..15 能正常启动;此前会在 graph update 时失败。t2_g128_fp16 权重,每权重 2.125 bits,从 PQ2_0 GGUF 导入时不重新舍入。检查点中的 Hadamard 旋转融合到各投影输入的 norm 和 gate;token 表与输出头仍保持三值。bonsai2_27b_ternary 配方加入 ProCreations 为 Bonsai 训练的 MTP 头、DFlash2 adapter,以及精确 proposal 头。tool_choice 会在生成提示中打开指定调用,模板默认思考让位于该要求。上下文缓存无法容纳请求时只让该请求失败(HTTP 429),不拖垮引擎。Paged KV 耗尽会报告页号,连续三次耗尽将引擎标为不健康。修复私有缓存回收、demand window 和零价值候选的捕获搜索,减少长 agent 会话重新预填充。cudaGraphGetEdges。来源:TertiumOrganum1/ninfer-3090。
rk4v4-e8 KV。 Key 与 rk8v4 一样先旋转,再按 8 维组映射到 int4 的 E8 格点;Value 保留 rk8v4 的 int4 平面。E8 KV 编码最早由 UDPSendToFailed 与 Daniel Parker 在 NInfer-4090 中引入。每 token、每 KV head 占 280 bytes,而 rk8v4 为 408。Ternary Bonsai 2 的 262,144 窗口可节省 2.0 GiB;两个并发槽各放一个完整窗口(共 524,288 tokens,rk8v4 为 519,744)后还剩 5.7 GiB。131K / 250K 的三个预埋目标仍全部找到;快速语料困惑度从 5.631 变为 5.650。NINFER_T2_A8_TILE=off)相比,Bonsai 2 在 8K、32K、64K 下的预填充分别快 33%、21%、15%,快速语料困惑度保持 5.631。sm_120a(RTX 50 系列)可使用 mma.sync 兼容路径构建。来源:NInfer-4090,除标注外作者为 UDPSendToFailed,已在汇总线中重新实现。
rk8v4 验证注意力耗时减少 9–21%;Bonsai 2 在 64K 下的 MTP 步耗时减少 6.6%,8K 及以上预填充快 2–7%,答案不变。TCP_NODELAY。 流式 token 写出后立即发送。-DNINFER_SFU_SIGMOID_SILU=ON 用 ex2.approx 和正确舍入的倒数替代 expf 与除法。Bonsai 2 在 8K 以上预填充快约 2%,快速语料困惑度从 5.6306 变为 5.6309,MTP 解码不变。-DNINFER_SFU_SOFTPLUS=ON 对 GDN decay gate 的 softplus 使用同样思路;当 e^x 小于 1/16 时改用 log1p 级数,保留长记忆 head 的慢衰减精度,困惑度为 5.6302。--max-context 可达到 1,048,576。超出原生窗口后可用普通 RoPE,或通过 --rope-yarn 使用 YaRN;默认 factor 为 Qwen 文档中的 --max-context / 262144,计算与 Hugging Face / vLLM 一致。Bonsai 2 配合 rk2v4-e8 的三目标测试,在文档 33%、66%、90% 位置放入代码:500,000 tokens 不开 YaRN 找到全部三个;开启后在 131,072、500,000、1,000,000 下都只找到两个。因此默认不开,除非普通 RoPE 已无法回答。--rope-yarn-factor F 可为所有位置固定 factor,不随窗口变化。rk2v4-e8 KV(与 Daniel Parker 合作,他也通过 Neroued/ninfer#173 向上游提出该方案)。旋转并按 G64 缩放的 key 每 8 维仅占两个字节:一个记录最近的 E8 240 根向量,另一个记录 4-bit 对数半径和有符号残差轴。每 token、每 KV head 为 216 bytes,rk4v4-e8 为 280,rk8v4 为 408。这是 24 GB 卡上能与 Bonsai 2 同时容纳 1,048,576 tokens 的格式;不开推测剩 2.8 GiB,MTP 剩 1.3 GiB。两个完整 262,144 窗口剩 7.7 GiB。代价是质量:快速语料困惑度从 5.631 增为 5.820(rk4v4-e8 为 5.651),DFlash2 草稿接受率从 54.4% 降为 51.8%,解码慢 4%。131,072 / 250,000 tokens,以及 1,048,576 窗口中的 500,000-token 输入,都找到三个目标。-DNINFER_D3D12_RESIDENCY=ON 提供 --wddm-evictable-budget:设备内存池来自最高优先级驻留的共享 D3D12 heap,再导入 CUDA;KV 容量按 WDDM 可驱逐其他分配来安排。上游记录当时没有 Windows 测试机,因此只做过 MinGW 语法检查,并非运行验证。其他来自 4090 分支的思路包括:服务端默认思考级别、最多 15 个 MTP 草稿、/metrics 和 /slots(Sergiusz Michalik)及 /props、从 NINFER_WEBUI_DIR 编译内嵌 WebUI、仅受上下文约束的输出上限、块采样器候选驻留共享内存、可选 bf16 残差加法(-DNINFER_BF16_RESIDUAL_ADD=ON)、分块 GDN 预填充的向量存储,以及受限分片编译和 ptxas 报告构建选项。
--disk-kv-path DIR 将被驱逐会话的 KV 页与状态图像写入按 prompt 摘要索引、带 CRC 检查和 LRU 管理的文件,重启后仍保留。--disk-kv-restore 可从相同已存前缀恢复,只预填充剩余部分。Bonsai 2 + MTP 中,一个 17,444-token 输入被另两个请求驱逐后,从磁盘恢复耗时由 9.6 秒降至 1.2 秒,重启后为 1.0 秒,答案一致;DFlash2 与无推测解码也可恢复。Windows 的 -DNINFER_DIRECTSTORAGE=ON 构建可用 --disk-kv-directstorage 经 DirectStorage 读取;上游当时与 D3D12 一样尚未实测。--adaptive-mtp 根据实测草稿存活率和轮次成本,每轮在 K 个草稿中验证 3..K 个,并为各宽度准备 CUDA Graph。RTX 3090 上的 Bonsai 2、K=5,59% 轮次验证 5 个,23% 验证 4 个,18% 验证 3 个;没有超过固定 K=3:短输入为 200 对 204 tok/s,8K 为 150 对 163。各宽度 Graph 也占显存,因此 Huihui 的 198,400-token 缓存在开启后无法再装入 24 GB 卡。宽度改变可能让接近同分的 token 结果不同,与切换固定窗口时类似。rk8v4 和打包 key 编码,并让 device profile 在更快时开启;三张实测卡的 prompt 注意力耗时减少 19–30%。--fast-prefill-kernel 可强制开启。Bonsai 2 的 64K rk8v4 快速语料困惑度从 5.2074 变为 5.2079,131K 三目标测试全部找到。<function name=...>、<invoke name=...>、<function_calls>、<param name=...>,并经过同一恢复流程;来自 Pavel Kochubey 的上游 PR #300,经 Wallawalla47 引入。--structured-output 启用 xgrammar,支持推测解码;来自 Andrey Shvartsman 的上游 PR #294。--first-token-logprobs 后,Chat Completions 请求可使用 top_logprobs 获取第一个生成 token 及其候选的对数概率(IMGillusion)。--context-cache-policy rolling 让一个长会话不断向前移动已缓存边界(IMGillusion)。--release-diverged-checkpoints 优先丢弃所属会话已经不再使用的私有检查点;Ian Ranson 根据 pkochubey 的上游 PR #300 实现。--recipe qwen3_6_35b_a3b_nvfp4 转换,并运行于任意 120a 构建。RTX 5090 Native 构建(-DNINFER_SM120_NATIVE=ON)上,20.6 GB 纯文本产物的 4K 预填充为 27,663 tok/s、解码 397 tok/s。预填充把激活量化为 4 bits,走 Blackwell 独有 W4A4,所以 sm_8x 构建会拒绝这种权重库。--ngram-draft-tokens、--ngram-min-match)。开启 --spec 后默认启用;每个复制 token 都由目标模型验证,属于精确推测。可选 RAM 归档 --ngram-archive-mib 为同一 X-NInfer-Draft-Session 后续请求保留已完成请求的复制来源。--use-alt-prefix-caching 用按内容寻址、跨请求共享的 64-token KV 块和稀疏状态快照替换检查点目录,按可用显存和一个 --host-cache-mib Host 预算安排容量。围绕默认目录还增加了可选近期访问驱逐、先降级到 Host(--recency-eviction),按需扩展回答的 Device KV 租用量(--kv-lease-growth),统一 Host 保留预算(--host-cache-mib),对重写会话自动设置消息边界锚点(--auto-long-anchors);默认还会复用中止请求已预填充内容,并在目录满时以 LRU 替换自动共享前缀。--thorough-admission-search 最多花 250 ms 检查所有复用候选;--value-aware-demote 按检查点重建成本排序驱逐;--concurrent-prefill 在其他请求预填充时接纳新请求;--recover-invariant-failures 在内部不变量失败后继续服务。--mtp-attention-window N 让 MTP 草稿头只关注开头 64 个 key 和最近 N 个,避免草稿读取量随历史持续增长,最终 token 仍由目标模型验证。思考结束后的采样可切到单独预设(temperature 0.2),支持服务端 --post-thinking* 或请求中的 post_thinking 对象。GET /stats 提供全部 Engine 计数和等待队列,可用主端口或独立 --stats-port;tools/monitor 提供终端仪表盘与卡死 watchdog;支持请求日志轮转(--request-log-max-mib)。还提供 --assistant-prefill、--unconstrained-response-format、--lenient-assistant-history、--derive-session-keys;Anthropic 流每个心跳发送协议 ping 事件;分组 --help、--log-colours、统计面板 --log-stats-panel,以及每个产品二进制中的 build id。--vision-residency cpu 使用 Host FP32 权重和 CPU 线程编码图片,不分配设备 Vision 显存;--rope-scaling-factor 配合 --rope-scaling-original-context 对超过原生窗口的位置做插值。-DNINFER_PDL=ON)、长上下文上短 prefill 步的 split-KV 注意力、通用 BF16 GEMM fallback、混合格式 MTP 权重库、所有宽度的融合 RMSNorm 与 NVFP4 attention 输入,以及 ModelOpt NVFP4/FP8、Quasar NVFP4 和 grouped_mse scale 搜索转换器;还提供基于预构建 vcpkg 树的 Windows 原生构建。NINFER_LINEAR_ROUTES=legacy|unified 可强制路线表。NINFER_GDN_TWO_STAGE=0|1 可强制选择。NINFER_PROMPT_PACK_GQA=1 或 profile 的 attn_pack_gqa)。1024-token chunk 在 32K / 131K 上下文中,3090 快 2.7%,4090 / 5090 分别慢 0.5% / 3.9%,因此内置 profile 均未开启。--kv-headroom-mib、--cuda-graph-allowance-mib、--thinking-budget-message(Ian Ranson);--webui-mcp-proxy 转发 WebUI MCP 流量、E8 根码查表解码、按 SM 数量设置 RMSNorm 阈值(tmark00);带拓扑分类的 MTP Graph profile(Mykhailo Dementii,上游 PR #221);可直接打开的服务 URL 与 CORS 预检回显(pelebel、natpate)。还有 GGUF 转换源(giveen)、Q6 配方(bingchengcc)、稀疏 MoE/NVFP4/attention epilogue 调优(Mykhailo Dementii、Duncan Betts、MOVIBALE)、带引号标记与重复参数工具调用修复(Fedor Suchkov、adubkov)、Copilot 工具格式(Damian Sromek)。维护者与改动对应表列出各项改动涉及的文件和测试。
以下是上游参考测试使用的命令,不等于本分支 16GB 运行包的默认配置。从下方模型表选择相应产物并交给 ninfer-serve。原始命令行服务默认在 127.0.0.1:8080 提供 OpenAI / Anthropic API,自动选择显卡 profile;参考表记录了这些配置的实测。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 262144 --kv-capacity 262144 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec dflash2 --draft-tokens 5
5 个草稿是综合选择:短回答 7 个更快,长文档后最佳为 3–7 个,见草稿长度测试。图片输入可添加 --vision --vision-residency overlay --vision-max-merged 12288;图像编码借用 drafter 显存,完整窗口仍可装入 24 GB 卡。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 262144 --kv-capacity 262144 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec mtp --draft-tokens 3 --lm-head-draft
rk4v4ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 958464 --kv-capacity 958464 --kv-dtype rk4v4 --gdn-state-fp16 --rope-yarn
RTX 5090 使用 rk4v4 可容纳 1,048,576-token 上限,包括 DFlash2 或 MTP;rk8v4 为 978,944。填到 1,048,576 时,无论 YaRN 还是普通 RoPE,都找到 33%、66% 的代码,但漏掉 90%(约 943K)的目标;约 880K 以内,三张卡均找到全部目标。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 198400 --kv-capacity 198400 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec mtp --draft-tokens 5 --lm-head-draft --adaptive-mtp \
--disk-kv-path /var/cache/ninfer --disk-kv-gib 64 --disk-kv-restore
rk4v4ninfer-serve Qwen3.8-27B-NInfer/qwen3_8_27b.ninfer --model-id qwen3.8-27b \
--max-context 245760 --kv-capacity 245760 --kv-dtype rk4v4 --gdn-state-fp16 \
--spec dflash2 --draft-tokens 5
相同推测方案换成 rk8v4,RTX 4090 可放 167,936 tokens,3090 可放 176,128;RTX 5090 两种格式都能放完整 262,144。
ninfer-calibrate --print > my-gpu.json
引擎首次启动会自动执行;手动运行可在驱动或时钟变化后刷新 profile。详见设备 profile。
这张表保留上游发布的模型,体积、组件和要求各不相同;它们不是顶部下载目录中那两份 Swift text/MTP 模型的说明。
| 模型 | 产物 | 说明 |
|---|---|---|
| Ternary Bonsai 2 27B | WaveCut/Ternary-Bonsai-2-27B-NInfer-v3 | 8.87 GiB。三值文本网络、token 表和输出头,含 Vision、Bonsai 专用 MTP 头、DFlash2 adapter 与精确 proposal 头。仅适用于此汇总线。 |
| Qwen3.8-27B GSQ-RCO IQ3_S | WaveCut/Qwen3.8-27B-GSQ-RCO-IQ3_S-NInfer-v3 | 13.99 GiB。逐字节保留 ISTA-DASLab 的 3.5-bit GGUF 块,包含其 Q6_K MTP 头、Vision、DFlash2 adapter 和 proposal 头。仅适用于此汇总线。 |
| Qwen3.8-27B | neroued/Qwen3.8-27B-NInfer | 19 GiB,groupwise-int(Q4/Q5);参考测试使用的官方产物。 |
| Qwen3.8-27B,abliterated 版本 | WaveCut/Huihui-Qwen3.8-27B-abliterated-NInfer-v3 | 19.03 GiB,官方 qwen3_8_27b 配方,含 MTP、DFlash2 和 proposal 头。 |
| Qwen3.6-35B-A3B NVFP4 | WaveCut/Qwen3.6-35B-A3B-NVFP4-NInfer-v3 | 20.39 GiB。原样保留 RedHatAI NVFP4 专家权重编码,含 Q8 投影、Vision、MTP、proposal 头,需要 sm_120a GPU。 |
原始 README 列出的官方 NInfer 产物也可在此汇总线加载。权重转换说明介绍 Bonsai 和 GSQ-RCO 产物的生成方法。
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES=86
cmake --build build --target ninfer-serve ninfer-calibrate
CMAKE_CUDA_ARCHITECTURES:RTX 30 系列为 86,RTX 40 系列为 89,RTX 50 系列和 RTX PRO 6000 Blackwell 为 120a,后者使用三值路线需要的 mma.sync 兼容路径。可选开关见 Linux 构建指南。上游 Windows 构建、发行包、测试和基准流程参见 NInfer-3090 README。本分支 Windows RTX 5070 Ti 的构建方法见顶部专用指南。
与上游一致,采用 Apache-2.0。Bonsai 产物中的权重来自 PrismML、ProCreations 和 Qwen,均为 Apache-2.0;相关声明见其模型卡。
NInfer for Windows and around 16GB VRAM: RTX 5070 Ti / 5080 / 5090, Qwen3.8-27B GSQ-RCO Q3, CUDA 13 Native engine, tray manager, model conversion and measured setup guides.
C++
65
1,993 commits
updated Oct 1, 2026
简体中文 | English
RTX 5070 Ti / RTX 5080 / RTX 5090 · 本地推理与托盘管理
https://github.com/user-attachments/assets/9695e989-e3f2-4727-8735-48d00910d90a
下载引擎和模型(夸克网盘) · 单独打开视频 · 5070 Ti 中文指南 · English guide · 下载与模型转换说明
面向希望在 Windows、约 16GB 独立显存上运行 Qwen3.8-27B GSQ-RCO 的用户。本分支整理了 CUDA 13 Native 引擎、Windows 托盘管理器与日常启动配置:通过网页管理模型、保存参数、查看运行监控,并提供 GSQ-RCO GGUF → .ninfer 的转换步骤。
下载目录包含 Swift S 和 Swift XXS 两套模型,模型合计约 20 多 GB 磁盘空间,完整运行目录当前约 23.5 GB,建议预留至少 30 GB 磁盘空间。这是文件占用,不是显存要求。
本仓库提供的预编译引擎与配套 .ninfer 模型成品,发布支持范围仅限 RTX 50 系列;本分支实测硬件为 RTX 5070 Ti 16GB。 RTX 5080、RTX 5090 的显存容量、可用上下文和合适参数因硬件而异,本分支尚未逐卡实测。
独立显存 16GB 及以上的 RTX 30 / RTX 40 系列,理论上也可以尝试,但本分支没有相应实测。 其他系列需要针对目标显卡从源码构建引擎,并按相应配方转换模型;RTX 50 系列成品不能直接当作通用部署包。RTX 30 / 40 的常用构建架构分别为 86 / 89,当前成品引擎仅包含 sm_120a 机器码。不要直接套用相同的上下文容量或性能结论。可以把本仓库和对应部署指南交给 AI,协助完成源码构建、GGUF 转换和启动配置。
本仓库:ninfer-16g-5070ti-5080-5090-qwen3.8-27b-gsq-rco。上游汇总仓库:iamwavecut/ninfer-all。原始推理引擎:Neroued/ninfer。
本分支在上游基础上提供 Windows / RTX 5070 Ti 构建、显存策略和管理器。下方保留上游项目的重要信息和贡献者出处,方便继续查阅。
以下内容译自上游介绍。其中的硬件、模型、历史测试限制与性能数字属于上游工作,不是本分支 Windows 16GB 运行包的实测或保证。当前 RTX 5070 Ti 参数与性能请看 Windows 部署指南。
上游汇总线将多个 NInfer 分支整合到一起,覆盖 RTX 3090、RTX 4090、RTX 5090 和 RTX PRO 6000 Blackwell,并在此基础上继续开发。基础来自 ashalliants/ninfer-3090 的 master:包括 v0.11.0 和多 GPU 流水线阶段,其中大部分由 Warlax 编写,延续了 Don-Chad/ninfer-3090 从 Neroued NInfer 开始的工作。
另外还整合了 TertiumOrganum1/ninfer-3090 的补丁、UDPSendToFailed/ninfer-4090 及其贡献者的思路、提交给 Neroued/ninfer 的开放 PR,以及以下作者的工作:
各项改动保留原作者署名;维护者与改动对应表列出作者和涉及文件。
下文之外的引擎说明,例如构建、软件包、服务 API、支持模型和参数,可参考 NInfer-3090 原始 README 与 NInfer-4090 原始 README。上游新增的、会影响数值或服务行为的功能通常需要手动开启,有三项例外:
--device-profile off 保留编译时的路线表。NINFER_PREFILL_ALIGN=0 保留用户请求的 chunk。NINFER_T2_A8_TILE=off 恢复被替换的内核。下列数字测于 2026 年 9 月,每种显卡各一张,采用 greedy 采样;除特别标注外,均为单请求。具体设置和完整数据见参考测试。
| 项目 | RTX 3090 | RTX 4090 | RTX 5090 | RTX PRO 6000 |
|---|---|---|---|---|
| Ternary Bonsai 2 27B,短对话(DFlash2,7 个草稿) | 202 tok/s | 256 tok/s | 397 tok/s | 381 tok/s |
| 读入 261K-token 文档后的解码速度(最快草稿方案) | 90 tok/s | 123 tok/s | 218 tok/s | 218 tok/s |
| 261K-token 输入的首 token 延迟 | 215 s | 102 s | 82 s | 78 s |
| 填满后仍找到全部三个检索目标的最大上下文 | 970,752 | 958,464 | 978,944 | 1,048,576* |
| 八请求并发总吞吐(MTP,3 个草稿) | 551 tok/s | 824 tok/s | 1,063 tok/s | 1,155 tok/s |
| Qwen3.8-27B,短对话(DFlash2,7 个草稿) | 118 tok/s | 149 tok/s | 236 tok/s | 237 tok/s |
| 填满后仍找到全部三个检索目标的最大上下文 | 417,792 | 405,504 | 872,448 | 1,048,576* |
| 八请求并发总吞吐(MTP,3 个草稿) | 329 tok/s | 442 tok/s | 690 tok/s | 739 tok/s |
* 这是引擎上限。RTX PRO 6000(96 GB)在各种 KV 格式和草稿方案下都能以该容量启动;填满后,两个模型均找到三个目标中的两个。
master 比较:**261K-token Bonsai 输入在 RTX 3090 上从 315 秒降至 215 秒,4090 从 138 秒降至 102 秒,5090 从 115 秒降至 82 秒;24 GB 显卡上随后进行的 rk4v4 解码快了 11–13%。短上下文解码仍受读取权重带宽限制,速度基本不变。Qwen3.8 在 RTX 5090 上的 8K–32K 输入预填充反而慢了 8–10%。rk4v4 验证注意力比编译路线快 3.2 倍。三张卡上的快速 prompt 内核配合 FP16 P·V 累加,使 prompt 注意力耗时减少 19–30%。qwen3_8_27b_gguf 配方原样复制每个量化张量的数据块;运行时直接计算全部 15 种 dense ggml 块格式。解码和验证使用向量内核,每列只解码一次权重;prompt 使用 llama.cpp 的整数 Tensor Core 内核。MTP、DFlash2、Vision 的使用方式与官方产物一致。3.5-bit GSQ-RCO IQ3_S 的 WikiText-2 困惑度为 7.071,与模型卡的 7.07 一致,官方产物为 7.286;权重占用从 15.9 GiB 降为 10.95 GiB。IFBench 为 80.3%,AIME 2025/2026 均为 100%,GPQA-Diamond 为 88.4%;官方产物分别为 77.7、96.7、96.7、87.4。无推测解码时,RTX 3090 为 59.9 对 40.3 tok/s,RTX 5090 为 107.5 对 88.1;RTX 4090 开启 MTP 后为 146 对 109 tok/s。详见 GGUF 块格式。ninfer-calibrate 可按需重测。3090 的 262K rk4v4 验证注意力快 3.2 倍;三张卡都启用 FP16 P·V 累加(该注意力耗时减少 15–17%,困惑度不变)与快速 prompt 内核(prompt 注意力耗时减少 19–30%)。当两个候选 token 分数接近时,同一 greedy 请求单独执行或与其他请求组成批次,可能比以前更容易给出不同答案。--device-profile off 保留此前 master 的编译调度。详见设备 profile。120a 构建都会编译 FP8 A8 与 NVFP4 W4A4 Tensor Core 单元,mma.sync 兼容路径也能使用其专用路线。此前 NVFP4 产物会在该路径启动失败,FP8 预填充则走反量化路线。RTX PRO 6000 上,Qwen3.8-27B NVFP4/FP8 产物的 4096-token 预填充为 11,822 tok/s,与 Native 构建差距在 1.4% 内;Qwen3.6-35B-A3B NVFP4 为 30,938 tok/s。rk8v4、rk4v4、rk4v4-e8、rk2v4-e8;所有 prompt 内核都将 chunk 对齐到完整 SM 调度批次,沿用 Ian Ranson 快速内核的思路。RTX 3090 的 131K rk8v4 输入耗时从此前 master 的 101 秒降至 76 秒。--spec mtp --draft-tokens 10..15 能正常启动;此前会在 graph update 时失败。t2_g128_fp16 权重,每权重 2.125 bits,从 PQ2_0 GGUF 导入时不重新舍入。检查点中的 Hadamard 旋转融合到各投影输入的 norm 和 gate;token 表与输出头仍保持三值。bonsai2_27b_ternary 配方加入 ProCreations 为 Bonsai 训练的 MTP 头、DFlash2 adapter,以及精确 proposal 头。tool_choice 会在生成提示中打开指定调用,模板默认思考让位于该要求。上下文缓存无法容纳请求时只让该请求失败(HTTP 429),不拖垮引擎。Paged KV 耗尽会报告页号,连续三次耗尽将引擎标为不健康。修复私有缓存回收、demand window 和零价值候选的捕获搜索,减少长 agent 会话重新预填充。cudaGraphGetEdges。来源:TertiumOrganum1/ninfer-3090。
rk4v4-e8 KV。 Key 与 rk8v4 一样先旋转,再按 8 维组映射到 int4 的 E8 格点;Value 保留 rk8v4 的 int4 平面。E8 KV 编码最早由 UDPSendToFailed 与 Daniel Parker 在 NInfer-4090 中引入。每 token、每 KV head 占 280 bytes,而 rk8v4 为 408。Ternary Bonsai 2 的 262,144 窗口可节省 2.0 GiB;两个并发槽各放一个完整窗口(共 524,288 tokens,rk8v4 为 519,744)后还剩 5.7 GiB。131K / 250K 的三个预埋目标仍全部找到;快速语料困惑度从 5.631 变为 5.650。NINFER_T2_A8_TILE=off)相比,Bonsai 2 在 8K、32K、64K 下的预填充分别快 33%、21%、15%,快速语料困惑度保持 5.631。sm_120a(RTX 50 系列)可使用 mma.sync 兼容路径构建。来源:NInfer-4090,除标注外作者为 UDPSendToFailed,已在汇总线中重新实现。
rk8v4 验证注意力耗时减少 9–21%;Bonsai 2 在 64K 下的 MTP 步耗时减少 6.6%,8K 及以上预填充快 2–7%,答案不变。TCP_NODELAY。 流式 token 写出后立即发送。-DNINFER_SFU_SIGMOID_SILU=ON 用 ex2.approx 和正确舍入的倒数替代 expf 与除法。Bonsai 2 在 8K 以上预填充快约 2%,快速语料困惑度从 5.6306 变为 5.6309,MTP 解码不变。-DNINFER_SFU_SOFTPLUS=ON 对 GDN decay gate 的 softplus 使用同样思路;当 e^x 小于 1/16 时改用 log1p 级数,保留长记忆 head 的慢衰减精度,困惑度为 5.6302。--max-context 可达到 1,048,576。超出原生窗口后可用普通 RoPE,或通过 --rope-yarn 使用 YaRN;默认 factor 为 Qwen 文档中的 --max-context / 262144,计算与 Hugging Face / vLLM 一致。Bonsai 2 配合 rk2v4-e8 的三目标测试,在文档 33%、66%、90% 位置放入代码:500,000 tokens 不开 YaRN 找到全部三个;开启后在 131,072、500,000、1,000,000 下都只找到两个。因此默认不开,除非普通 RoPE 已无法回答。--rope-yarn-factor F 可为所有位置固定 factor,不随窗口变化。rk2v4-e8 KV(与 Daniel Parker 合作,他也通过 Neroued/ninfer#173 向上游提出该方案)。旋转并按 G64 缩放的 key 每 8 维仅占两个字节:一个记录最近的 E8 240 根向量,另一个记录 4-bit 对数半径和有符号残差轴。每 token、每 KV head 为 216 bytes,rk4v4-e8 为 280,rk8v4 为 408。这是 24 GB 卡上能与 Bonsai 2 同时容纳 1,048,576 tokens 的格式;不开推测剩 2.8 GiB,MTP 剩 1.3 GiB。两个完整 262,144 窗口剩 7.7 GiB。代价是质量:快速语料困惑度从 5.631 增为 5.820(rk4v4-e8 为 5.651),DFlash2 草稿接受率从 54.4% 降为 51.8%,解码慢 4%。131,072 / 250,000 tokens,以及 1,048,576 窗口中的 500,000-token 输入,都找到三个目标。-DNINFER_D3D12_RESIDENCY=ON 提供 --wddm-evictable-budget:设备内存池来自最高优先级驻留的共享 D3D12 heap,再导入 CUDA;KV 容量按 WDDM 可驱逐其他分配来安排。上游记录当时没有 Windows 测试机,因此只做过 MinGW 语法检查,并非运行验证。其他来自 4090 分支的思路包括:服务端默认思考级别、最多 15 个 MTP 草稿、/metrics 和 /slots(Sergiusz Michalik)及 /props、从 NINFER_WEBUI_DIR 编译内嵌 WebUI、仅受上下文约束的输出上限、块采样器候选驻留共享内存、可选 bf16 残差加法(-DNINFER_BF16_RESIDUAL_ADD=ON)、分块 GDN 预填充的向量存储,以及受限分片编译和 ptxas 报告构建选项。
--disk-kv-path DIR 将被驱逐会话的 KV 页与状态图像写入按 prompt 摘要索引、带 CRC 检查和 LRU 管理的文件,重启后仍保留。--disk-kv-restore 可从相同已存前缀恢复,只预填充剩余部分。Bonsai 2 + MTP 中,一个 17,444-token 输入被另两个请求驱逐后,从磁盘恢复耗时由 9.6 秒降至 1.2 秒,重启后为 1.0 秒,答案一致;DFlash2 与无推测解码也可恢复。Windows 的 -DNINFER_DIRECTSTORAGE=ON 构建可用 --disk-kv-directstorage 经 DirectStorage 读取;上游当时与 D3D12 一样尚未实测。--adaptive-mtp 根据实测草稿存活率和轮次成本,每轮在 K 个草稿中验证 3..K 个,并为各宽度准备 CUDA Graph。RTX 3090 上的 Bonsai 2、K=5,59% 轮次验证 5 个,23% 验证 4 个,18% 验证 3 个;没有超过固定 K=3:短输入为 200 对 204 tok/s,8K 为 150 对 163。各宽度 Graph 也占显存,因此 Huihui 的 198,400-token 缓存在开启后无法再装入 24 GB 卡。宽度改变可能让接近同分的 token 结果不同,与切换固定窗口时类似。rk8v4 和打包 key 编码,并让 device profile 在更快时开启;三张实测卡的 prompt 注意力耗时减少 19–30%。--fast-prefill-kernel 可强制开启。Bonsai 2 的 64K rk8v4 快速语料困惑度从 5.2074 变为 5.2079,131K 三目标测试全部找到。<function name=...>、<invoke name=...>、<function_calls>、<param name=...>,并经过同一恢复流程;来自 Pavel Kochubey 的上游 PR #300,经 Wallawalla47 引入。--structured-output 启用 xgrammar,支持推测解码;来自 Andrey Shvartsman 的上游 PR #294。--first-token-logprobs 后,Chat Completions 请求可使用 top_logprobs 获取第一个生成 token 及其候选的对数概率(IMGillusion)。--context-cache-policy rolling 让一个长会话不断向前移动已缓存边界(IMGillusion)。--release-diverged-checkpoints 优先丢弃所属会话已经不再使用的私有检查点;Ian Ranson 根据 pkochubey 的上游 PR #300 实现。--recipe qwen3_6_35b_a3b_nvfp4 转换,并运行于任意 120a 构建。RTX 5090 Native 构建(-DNINFER_SM120_NATIVE=ON)上,20.6 GB 纯文本产物的 4K 预填充为 27,663 tok/s、解码 397 tok/s。预填充把激活量化为 4 bits,走 Blackwell 独有 W4A4,所以 sm_8x 构建会拒绝这种权重库。--ngram-draft-tokens、--ngram-min-match)。开启 --spec 后默认启用;每个复制 token 都由目标模型验证,属于精确推测。可选 RAM 归档 --ngram-archive-mib 为同一 X-NInfer-Draft-Session 后续请求保留已完成请求的复制来源。--use-alt-prefix-caching 用按内容寻址、跨请求共享的 64-token KV 块和稀疏状态快照替换检查点目录,按可用显存和一个 --host-cache-mib Host 预算安排容量。围绕默认目录还增加了可选近期访问驱逐、先降级到 Host(--recency-eviction),按需扩展回答的 Device KV 租用量(--kv-lease-growth),统一 Host 保留预算(--host-cache-mib),对重写会话自动设置消息边界锚点(--auto-long-anchors);默认还会复用中止请求已预填充内容,并在目录满时以 LRU 替换自动共享前缀。--thorough-admission-search 最多花 250 ms 检查所有复用候选;--value-aware-demote 按检查点重建成本排序驱逐;--concurrent-prefill 在其他请求预填充时接纳新请求;--recover-invariant-failures 在内部不变量失败后继续服务。--mtp-attention-window N 让 MTP 草稿头只关注开头 64 个 key 和最近 N 个,避免草稿读取量随历史持续增长,最终 token 仍由目标模型验证。思考结束后的采样可切到单独预设(temperature 0.2),支持服务端 --post-thinking* 或请求中的 post_thinking 对象。GET /stats 提供全部 Engine 计数和等待队列,可用主端口或独立 --stats-port;tools/monitor 提供终端仪表盘与卡死 watchdog;支持请求日志轮转(--request-log-max-mib)。还提供 --assistant-prefill、--unconstrained-response-format、--lenient-assistant-history、--derive-session-keys;Anthropic 流每个心跳发送协议 ping 事件;分组 --help、--log-colours、统计面板 --log-stats-panel,以及每个产品二进制中的 build id。--vision-residency cpu 使用 Host FP32 权重和 CPU 线程编码图片,不分配设备 Vision 显存;--rope-scaling-factor 配合 --rope-scaling-original-context 对超过原生窗口的位置做插值。-DNINFER_PDL=ON)、长上下文上短 prefill 步的 split-KV 注意力、通用 BF16 GEMM fallback、混合格式 MTP 权重库、所有宽度的融合 RMSNorm 与 NVFP4 attention 输入,以及 ModelOpt NVFP4/FP8、Quasar NVFP4 和 grouped_mse scale 搜索转换器;还提供基于预构建 vcpkg 树的 Windows 原生构建。NINFER_LINEAR_ROUTES=legacy|unified 可强制路线表。NINFER_GDN_TWO_STAGE=0|1 可强制选择。NINFER_PROMPT_PACK_GQA=1 或 profile 的 attn_pack_gqa)。1024-token chunk 在 32K / 131K 上下文中,3090 快 2.7%,4090 / 5090 分别慢 0.5% / 3.9%,因此内置 profile 均未开启。--kv-headroom-mib、--cuda-graph-allowance-mib、--thinking-budget-message(Ian Ranson);--webui-mcp-proxy 转发 WebUI MCP 流量、E8 根码查表解码、按 SM 数量设置 RMSNorm 阈值(tmark00);带拓扑分类的 MTP Graph profile(Mykhailo Dementii,上游 PR #221);可直接打开的服务 URL 与 CORS 预检回显(pelebel、natpate)。还有 GGUF 转换源(giveen)、Q6 配方(bingchengcc)、稀疏 MoE/NVFP4/attention epilogue 调优(Mykhailo Dementii、Duncan Betts、MOVIBALE)、带引号标记与重复参数工具调用修复(Fedor Suchkov、adubkov)、Copilot 工具格式(Damian Sromek)。维护者与改动对应表列出各项改动涉及的文件和测试。
以下是上游参考测试使用的命令,不等于本分支 16GB 运行包的默认配置。从下方模型表选择相应产物并交给 ninfer-serve。原始命令行服务默认在 127.0.0.1:8080 提供 OpenAI / Anthropic API,自动选择显卡 profile;参考表记录了这些配置的实测。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 262144 --kv-capacity 262144 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec dflash2 --draft-tokens 5
5 个草稿是综合选择:短回答 7 个更快,长文档后最佳为 3–7 个,见草稿长度测试。图片输入可添加 --vision --vision-residency overlay --vision-max-merged 12288;图像编码借用 drafter 显存,完整窗口仍可装入 24 GB 卡。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 262144 --kv-capacity 262144 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec mtp --draft-tokens 3 --lm-head-draft
rk4v4ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 958464 --kv-capacity 958464 --kv-dtype rk4v4 --gdn-state-fp16 --rope-yarn
RTX 5090 使用 rk4v4 可容纳 1,048,576-token 上限,包括 DFlash2 或 MTP;rk8v4 为 978,944。填到 1,048,576 时,无论 YaRN 还是普通 RoPE,都找到 33%、66% 的代码,但漏掉 90%(约 943K)的目标;约 880K 以内,三张卡均找到全部目标。
ninfer-serve Ternary-Bonsai-2-27B-ninfer-v3.ninfer --model-id bonsai2-27b \
--max-context 198400 --kv-capacity 198400 --kv-dtype rk8v4 --gdn-state-fp16 \
--spec mtp --draft-tokens 5 --lm-head-draft --adaptive-mtp \
--disk-kv-path /var/cache/ninfer --disk-kv-gib 64 --disk-kv-restore
rk4v4ninfer-serve Qwen3.8-27B-NInfer/qwen3_8_27b.ninfer --model-id qwen3.8-27b \
--max-context 245760 --kv-capacity 245760 --kv-dtype rk4v4 --gdn-state-fp16 \
--spec dflash2 --draft-tokens 5
相同推测方案换成 rk8v4,RTX 4090 可放 167,936 tokens,3090 可放 176,128;RTX 5090 两种格式都能放完整 262,144。
ninfer-calibrate --print > my-gpu.json
引擎首次启动会自动执行;手动运行可在驱动或时钟变化后刷新 profile。详见设备 profile。
这张表保留上游发布的模型,体积、组件和要求各不相同;它们不是顶部下载目录中那两份 Swift text/MTP 模型的说明。
| 模型 | 产物 | 说明 |
|---|---|---|
| Ternary Bonsai 2 27B | WaveCut/Ternary-Bonsai-2-27B-NInfer-v3 | 8.87 GiB。三值文本网络、token 表和输出头,含 Vision、Bonsai 专用 MTP 头、DFlash2 adapter 与精确 proposal 头。仅适用于此汇总线。 |
| Qwen3.8-27B GSQ-RCO IQ3_S | WaveCut/Qwen3.8-27B-GSQ-RCO-IQ3_S-NInfer-v3 | 13.99 GiB。逐字节保留 ISTA-DASLab 的 3.5-bit GGUF 块,包含其 Q6_K MTP 头、Vision、DFlash2 adapter 和 proposal 头。仅适用于此汇总线。 |
| Qwen3.8-27B | neroued/Qwen3.8-27B-NInfer | 19 GiB,groupwise-int(Q4/Q5);参考测试使用的官方产物。 |
| Qwen3.8-27B,abliterated 版本 | WaveCut/Huihui-Qwen3.8-27B-abliterated-NInfer-v3 | 19.03 GiB,官方 qwen3_8_27b 配方,含 MTP、DFlash2 和 proposal 头。 |
| Qwen3.6-35B-A3B NVFP4 | WaveCut/Qwen3.6-35B-A3B-NVFP4-NInfer-v3 | 20.39 GiB。原样保留 RedHatAI NVFP4 专家权重编码,含 Q8 投影、Vision、MTP、proposal 头,需要 sm_120a GPU。 |
原始 README 列出的官方 NInfer 产物也可在此汇总线加载。权重转换说明介绍 Bonsai 和 GSQ-RCO 产物的生成方法。
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES=86
cmake --build build --target ninfer-serve ninfer-calibrate
CMAKE_CUDA_ARCHITECTURES:RTX 30 系列为 86,RTX 40 系列为 89,RTX 50 系列和 RTX PRO 6000 Blackwell 为 120a,后者使用三值路线需要的 mma.sync 兼容路径。可选开关见 Linux 构建指南。上游 Windows 构建、发行包、测试和基准流程参见 NInfer-3090 README。本分支 Windows RTX 5070 Ti 的构建方法见顶部专用指南。
与上游一致,采用 Apache-2.0。Bonsai 产物中的权重来自 PrismML、ProCreations 和 Qwen,均为 Apache-2.0;相关声明见其模型卡。