# NInfer 深度解析：专为单张 5090 而生的 C++/CUDA 推理引擎

> NInfer 是从头用 C++/CUDA 写的单 GPU 推理引擎，定位明确——榨干单张 RTX 5090 上的 Qwen 系列推理（Qwen3.6/3.8，文/图/视频）。本文对比它与 vLLM/SGLang 通用引擎的根本区别，拆解"单卡+单模型"为何能榨出性能，给出选型建议、与 Strata 的上下游关系与踩坑记录。

# NInfer 深度解析：专为单张 5090 而生的 C++/CUDA 推理引擎

> 结论先行：NInfer（`github.com/Neroued/ninfer`）是一个**从头用 C++/CUDA 写的单 GPU 推理引擎**，定位非常明确——**榨干单张 RTX 5090 上的 Qwen 系列推理性能**（Qwen3.6 / Qwen3.8 多个 Checkpoint，支持文本/图片/视频输入）。它和 vLLM、SGLang 这类"通用多硬件引擎"是两条路：通用引擎拼的是覆盖面，NInfer 拼的是"在特定 GPU + 特定模型上把性能榨到极限"。
> 2026 年社区数据约 2,150 star；Strata（4.6k star 的 125B MoE 引擎）在官方 credits 里明确把 NInfer 列为思路来源之一——说明它在"消费级单卡极限推理"这条线上是被同行认可的。

## 1. 它和通用引擎的根本区别

| | 通用引擎（vLLM / SGLang / TensorRT-LLM） | NInfer |
|---|---|---|
| 设计目标 | 覆盖面：多硬件、多模型、高并发服务 | 深度：单 GPU + 特定模型上性能极限 |
| 硬件 | 多卡、多厂商、分布式 | **单张** N 卡（5090 为典型目标） |
| 并发 | 连续批处理、服务网关 | 面向单请求极致吞吐（配合 Qwen 系列） |
| 模型 | 广（主流大模型都支持） | 深（Qwen3.6 / Qwen3.8 Checkpoint，文/图/视频） |
| 写法的代价 | 通用层抽象带来开销 | 手写 C++/CUDA kernel，无通用抽象税 |

一句话：**要"什么都能跑、还能对外服务"选 vLLM/SGLang；要"我这张 5090 + 这个 Qwen，就要最快"看 NInfer。**

## 2. 为什么"单卡 + 单模型"这条路能榨出性能

通用引擎为了支持 N 种硬件 × M 种模型，必须在抽象层做兼容——代价是 kernel 不能对每张卡、每个模型做特化。NInfer 反着来：

1. **C++/CUDA 手写 kernel**：不套 PyTorch 通用算子，attention、GEMM、KV 管理都针对单卡手写，没有通用层的 launch overhead 和内存拷贝税。
2. **针对 5090 的 Blackwell 特性**：5090 的 32GB GDDR7、高带宽、Blackwell 的 FP8/NVFP4 原生格式，NInfer 直接吃这些硬件特性（而不是走通用 fallback 路径）。
3. **模型特化**：只深做 Qwen3.6 / 3.8 系列，意味着专家路由、KV 布局、量化 kernel 都能按这个模型的结构定制，不用为"万一换个模型"留通用接口。

## 3. 什么时候该用 NInfer

**适合**
- 手里就是一张 RTX 5090，要跑 Qwen3.6/3.8 系列，追求"这台机器上最快"。
- 单用户/低并发的本地推理：自己的 Agent、编码辅助、文/图/视频理解，不需要对外高并发服务。
- 想用 Blackwell 的 NVFP4/FP8 原生格式压模型、同时保住速度（通用引擎的量化 kernel 未必对 5090 优化到位）。

**不适合**
- 要对外提供高并发 API 服务（它是单 GPU、启动时最多 1-8 个活动请求的有界并发（bounded FIFO），不是服务网关，那正是 vLLM/SGLang 的主场）。
- 要跑非 Qwen 系模型（它是模型特化的，覆盖面窄是它的特性不是 bug）。
- **不是 5090 的卡**：官方 README 明确"requires a single NVIDIA GeForce RTX 5090"，构建会**拒绝 `sm_120a` 以外的 CUDA 架构**，产品边界写死"one RTX 5090... per Engine、no multi-GPU"。即当前 NInfer **只针对 5090**——5080、4090 及老卡都不在官方支持范围内，也不是"同代高端单卡通用"。

## 4. 官方实测数据（RTX 5090，一手数据）

> 来源：NInfer 官方 README 实测表（RTX 5090），**一手数据**。会随驱动/CUDA 版本、量化档位、上下文长度浮动；以下为官方给出的基准点。

**并发解码（MTP3 推测解码，饱和态 tok/s / 接受率）**

| 模型 | 量化 | C=1 | C=2 | C=4 | C=8 |
|------|------|-----|-----|-----|-----|
| Qwen3.6-27B | groupwise-int | 185.8 / 68% | 247.0 / 69% | 309.5 / 68% | 535.0 / 68% |
| Qwen3.6-27B | NVFP4 | 202.4 / 69% | 399.7 / 71% | 699.7 / 69% | **1,146.9 / 69%** |
| Qwen3.6-35B-A3B（MoE） | groupwise-int | 642.5 / 69% | 907.2 / 66% | 1,213.5 / 70% | **1,380.7 / 68%** |
| Qwen3.8-27B | groupwise-int | 136.5 / 44% | 253.3 / 45% | 398.1 / 46% | 582.4 / 46% |
| Qwen3.8-27B | NVFP4 | 147.7 / 46% | 291.0 / 49% | 522.2 / 46% | **922.4 / 46%** |

**单请求长上下文（MTP3，prefill tok/s）**

| 模型 | 量化 | 7,680 token prefill | 260,096 token prefill | 结构化 MTP3 解码 |
|------|------|-----|-----|-----|
| Qwen3.6-27B | NVFP4 | 11,191.5 | 2,510.6 | 252.2 |
| Qwen3.8-27B | NVFP4 | 12,819.1 | 4,016.4 | 231.7 |
| Qwen3.6-35B-A3B | groupwise-int | 17,705.4 | 5,247.0 | 779.6 |

**能力评测（thinking 开启 + MTP3 + EvalScope，0-shot 规则打分）**

| 模型 | AIME 2025 | AIME 2026 | GPQA-Diamond |
|------|-----|-----|-----|
| Qwen3.6-27B NVFP4 | 93.33% | 93.33% | 84.34% |
| Qwen3.8-27B NVFP4 | 96.67% | 96.67% | 90.40% |

几个读数：
- **MoE（35B-A3B）并发吞吐最能打**：C=8 达 1,380 tok/s，是 27B 的 1.4-2 倍——NInfer 对 MoE 专家路由的 kernel 特化在单卡上收益很大。
- **NVFP4 比 groupwise-int 快**：C=8 下 Qwen3.6-27B NVFP4（1,147）明显快于 groupwise-int（535），Blackwell 的 NVFP4 原生格式是它的核心优势。
- **长上下文 prefill 仍能 2,000-5,000 tok/s**：26 万 token 级读 prompt 极快，配合 24 万 token 上下文窗口 + MTP3 推测解码（draft 窗口 1-5），单卡就能跑"长文档 + 快出答案"。

## 5. 和 Strata 的关系（别混淆）

社区常把 NInfer 和 Strata 放在一起说，两者是**上下游**不是竞品：

- **NInfer**：单卡 + 单模型（Qwen）的极限推理引擎，偏"引擎层"。
- **Strata**：125B MoE 在消费级整机（单卡+大内存）上跑通的完整方案，**官方 credits 明确把 NInfer 列为思路来源之一**（连同 Splash、HyperQwen，基于 llama.cpp/ggml）。
- 简单记：**Strata 把 NInfer 这类"单卡榨性能"的思路，扩展到了"整机分摊 125B MoE"的场景**。两个一起看，能理解 2026 年"消费级硬件跑大模型"这条线的完整拼图。

## 6. 踩坑记录

1. **别拿 vLLM 的基线去套 NInfer**。它是单卡+单模型特化，吞吐数字和通用引擎不可直接比——比的是"同一张 5090 + 同一个 Qwen 模型下谁更快"，不是"谁覆盖面广"。
2. **它不是服务网关**。要对外高并发 API，NInfer 前面还得套一层批处理/服务框架，或者直接换 vLLM/SGLang。
3. **当前只支持 5090，别期待它跑别的卡/模型**。官方边界写死"单张 5090 + Qwen 系列 + 构建拒绝非 `sm_120a` 架构 + no multi-GPU"，跑非 Qwen 模型或 5080/4090 及老卡不是它的设计目标。
4. **NVFP4/FP8 要配 5090（Blackwell）**。这套量化 kernel 是冲着 5090 的 GDDR7 + NVFP4/FP8 原生格式去的，老卡（4090 及以前）根本没有 `sm_120a` 架构，构建直接拒绝，别期待跨代等效。
5. **首次要下载 .ninfer 模型产物 + 从源码构建**。NInfer 没有安装包/预编译二进制，要 CMake 从源码 build（CUDA 13.1 是验证过的工具链，要求 sm_120a），再 `hf download` 官方 `.ninfer` 产物；v2 老产物要本地升级到 v3 才能被当前引擎读。
6. **星数是社区数据，不是性能承诺**。约 2,600 star 是 2026-09/10 社区统计，性能数字随驱动版本、CUDA 版本、量化档位、上下文长度浮动，引用时标注"官方某配置实测"，别当恒定值。

## 7. 参考来源

> NInfer 的仓库地址、技术定位（C++/CUDA 单 GPU 引擎、Qwen3.6/3.8 Checkpoint、文/图/视频）以官方 GitHub 仓库 README 为准；本文第 4 节性能表为**官方 README 一手实测（RTX 5090）**，随驱动/CUDA/量化/上下文浮动；star 数为社区统计，非官方恒定基线。

- NInfer（官方仓库）：https://github.com/Neroued/ninfer
- Strata（官方 credits 将 NInfer 列为思路来源）：https://github.com/Niko1221/Strata
- 通用引擎对照（vLLM / SGLang）：https://github.com/vllm-project/vllm 、 https://github.com/sgl-project/sglang
- NVIDIA Blackwell（RTX 50 系列，NVFP4/FP8 原生格式）：https://www.nvidia.com/en-us/geforce/


---
来源：https://laobanclaw.top/articles/ninfer-5090-single-gpu-cuda-engine-deepdive/（AI 军火库）
