3090 也能跑到 71 tok/s:NInfer 移植到 SM86 了
-
项 值 目标硬件 RTX 3090 / 3090 Ti(24 GB,SM86) 模型 Qwen3.8-27B(以及 35B-A3B 也能跑) 单用户 decode 71 tok/s 8 用户并发(C8 队列) 总吞吐 ≈ 163 tok/s(分摊每人 ~20) 最大上下文 171 K token(INT8 KV) 接口 OpenAI + Anthropic 兼容 HTTP API,跑在 127.0.0.1:8080/v1系统 Linux(Docker 测试)/ Windows 11(原生预编译包) 仓库 https://github.com/Don-Chad/ninfer-3090
背景:这事为什么值得说
如果你有一张 3090 想跑 Qwen 27B,过去基本只有三个选择:
- llama.cpp —— 通用、稳,但速度拉胯
- vLLM —— 高吞吐,专为多卡 / 数据中心,单 3090 不是它的甜区
- TensorRT-LLM —— 性能强,但编译复杂、坑多
Neroued/ninfer原版我之前 试过,它只为 RTX 5090 写,build 直接拒绝 sm_120a 之外的架构,3090 连编译都过不去。Don-Chad/ninfer-3090就是社区里跑出来的一根硬骨头:把 NInfer 的整套 C++/CUDA 引擎移植到 SM86,专门给 3090 用。原作者Neroued的 5090 路标是 1,313 tok/s@C8、15 K tok/s prefill,这次是把"单 GPU 极致调优"的基因搬到了消费级 Ampere 上。
这是什么东西
- 定位:Hyper-optimised Qwen3.8-27B 推理引擎,单 3090 专用
- 技术栈:C++ / CUDA,从零写,不是 llama.cpp fork
- 核心优化:
- MTP3 投机解码 + ReplaySSM 状态机加速
- Paged KV cache + 兼容前缀复用
- CUDA Graphs 降低 decode 延迟
- C1-C8 Cohort 批处理:1~8 路并发复用同一份 KV pool
- 接口:OpenAI / Anthropic 兼容 HTTP API,工具调用、reasoning effort 都开箱即用
- 视觉 / 长文本:Qwen3.8 视觉推理 + 32K 上下文窗口,长文本用 INT8 KV 顶到 171 K
快速开始
准备
- 一张 RTX 3090(24 GB)
- CUDA Toolkit
- Linux:有 Docker;Windows 11:无依赖,直接下预编译包
Linux (Docker)
git clone https://github.com/Don-Chad/ninfer-3090.git cd ninfer-3090 docker build --tag ninfer-3090:sm86 . # 下载 Qwen3.8-27B 量化模型 hf download neroued/Qwen3.8-27B-nvfp4-NInfer \ qwen3_8_27b_nvfp4.ninfer --local-dir models # 启动服务 docker run --rm --gpus all -p 8080:8080 \ -v $PWD/models:/models:ro \ ninfer-3090:sm86 \ /usr/local/bin/ninfer-serve \ /models/qwen3_8_27b_nvfp4.ninfer \ --max-concurrency 1 --kv-dtype fp8 \ --spec mtp --draft-tokens 3 --lm-head-draftWindows 11
直接下 release archive,解压,跑
download-qwen38.bat下模型,然后run-qwen38-c1.bat(单用户)或run-qwen38-c8.bat(8 并发)。试一下
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen3.8-27b", "messages": [{"role": "user", "content": "Reply with one short sentence."}], "max_tokens": 64 }'
性能测试
场景 tok/s 备注 C1(单用户) 71 长对话 / 64K 上下文,低 TTFT C8(8 并发) ~20/user 总吞吐是 C1 的 2.3×(~163) 视觉推理 - MTP3 + 32K 上下文 长上下文(171 K INT8) 单 24 GB 顶得住 KV cache 做了 INT8 量化 注:上面 71 tok/s 是"短上下文 + MTP3 投机解码"的数据,实际你会看到 60–85 区间,具体看 prompt 长度和并发。
跟同类项目对比
项目 在 3090 上跑 27B 的体验 Don-Chad/ninfer-3090(本帖) 71 tok/s 单用户,8 并发 2.3×,INT8 KV 171 K gggerganov/llama.cpp通用,稳,大概 30–45 tok/s vllm-project/vllm高吞吐引擎,但不是单 3090 甜区,部署重 NVIDIA/TensorRT-LLM性能强,编译复杂,3090 没有官方优化 lane Ollama5 分钟跑起来,但 27B 在 3090 上 ~30 tok/s 怎么选:
- 想要速度,愿折腾 → 这个
- 想要省事,5 分钟跑通 → Ollama
- 想要通用 + 模型多 → llama.cpp
- 想要生产 + 多卡 → vLLM
局限 / 注意点
- RotorQuant rk8v4 KV 模式暂时不可用 —— 作者说在修
- 没有预编译的 Linux archive —— 走 Docker build
- FP8 KV cache profile 在 SM86 不支持 —— 只能 INT8,但够用
- C8 启动时如果请求是 35B-A3B + 8 并发会被拒 —— 资源不够,降级到 C4 或 C2
- 社区支持,best-effort —— 不是商业产品,出问题自己看 issue
- 模型是 NInfer 注册的 artifact —— 不能随便换 GGUF,只能用
neroued/Qwen3.8-27B-nvfp4-NInfer等几个固定 artifact
适合谁 / 不适合谁
适合:- 3090 玩家想榨干硬件
- 跑 Qwen 27B 想要 OpenAI / Anthropic API 兼容的本地服务
- 单用户低延迟聊天 / 多用户小服务
不适合:- 想要 5090 / 多卡的极致性能(看原版 Neroued/ninfer)
- 想要丰富模型库(看 llama.cpp / Ollama)
- 想要"开箱即用 + 桌面 GUI"(看 LM Studio)
- macOS 用户(本项目只支持 Linux / Windows 11)
-
项 值 目标硬件 RTX 3090 / 3090 Ti(24 GB,SM86) 模型 Qwen3.8-27B(以及 35B-A3B 也能跑) 单用户 decode 71 tok/s 8 用户并发(C8 队列) 总吞吐 ≈ 163 tok/s(分摊每人 ~20) 最大上下文 171 K token(INT8 KV) 接口 OpenAI + Anthropic 兼容 HTTP API,跑在 127.0.0.1:8080/v1系统 Linux(Docker 测试)/ Windows 11(原生预编译包) 仓库 https://github.com/Don-Chad/ninfer-3090
背景:这事为什么值得说
如果你有一张 3090 想跑 Qwen 27B,过去基本只有三个选择:
- llama.cpp —— 通用、稳,但速度拉胯
- vLLM —— 高吞吐,专为多卡 / 数据中心,单 3090 不是它的甜区
- TensorRT-LLM —— 性能强,但编译复杂、坑多
Neroued/ninfer原版我之前 试过,它只为 RTX 5090 写,build 直接拒绝 sm_120a 之外的架构,3090 连编译都过不去。Don-Chad/ninfer-3090就是社区里跑出来的一根硬骨头:把 NInfer 的整套 C++/CUDA 引擎移植到 SM86,专门给 3090 用。原作者Neroued的 5090 路标是 1,313 tok/s@C8、15 K tok/s prefill,这次是把"单 GPU 极致调优"的基因搬到了消费级 Ampere 上。
这是什么东西
- 定位:Hyper-optimised Qwen3.8-27B 推理引擎,单 3090 专用
- 技术栈:C++ / CUDA,从零写,不是 llama.cpp fork
- 核心优化:
- MTP3 投机解码 + ReplaySSM 状态机加速
- Paged KV cache + 兼容前缀复用
- CUDA Graphs 降低 decode 延迟
- C1-C8 Cohort 批处理:1~8 路并发复用同一份 KV pool
- 接口:OpenAI / Anthropic 兼容 HTTP API,工具调用、reasoning effort 都开箱即用
- 视觉 / 长文本:Qwen3.8 视觉推理 + 32K 上下文窗口,长文本用 INT8 KV 顶到 171 K
快速开始
准备
- 一张 RTX 3090(24 GB)
- CUDA Toolkit
- Linux:有 Docker;Windows 11:无依赖,直接下预编译包
Linux (Docker)
git clone https://github.com/Don-Chad/ninfer-3090.git cd ninfer-3090 docker build --tag ninfer-3090:sm86 . # 下载 Qwen3.8-27B 量化模型 hf download neroued/Qwen3.8-27B-nvfp4-NInfer \ qwen3_8_27b_nvfp4.ninfer --local-dir models # 启动服务 docker run --rm --gpus all -p 8080:8080 \ -v $PWD/models:/models:ro \ ninfer-3090:sm86 \ /usr/local/bin/ninfer-serve \ /models/qwen3_8_27b_nvfp4.ninfer \ --max-concurrency 1 --kv-dtype fp8 \ --spec mtp --draft-tokens 3 --lm-head-draftWindows 11
直接下 release archive,解压,跑
download-qwen38.bat下模型,然后run-qwen38-c1.bat(单用户)或run-qwen38-c8.bat(8 并发)。试一下
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen3.8-27b", "messages": [{"role": "user", "content": "Reply with one short sentence."}], "max_tokens": 64 }'
性能测试
场景 tok/s 备注 C1(单用户) 71 长对话 / 64K 上下文,低 TTFT C8(8 并发) ~20/user 总吞吐是 C1 的 2.3×(~163) 视觉推理 - MTP3 + 32K 上下文 长上下文(171 K INT8) 单 24 GB 顶得住 KV cache 做了 INT8 量化 注:上面 71 tok/s 是"短上下文 + MTP3 投机解码"的数据,实际你会看到 60–85 区间,具体看 prompt 长度和并发。
跟同类项目对比
项目 在 3090 上跑 27B 的体验 Don-Chad/ninfer-3090(本帖) 71 tok/s 单用户,8 并发 2.3×,INT8 KV 171 K gggerganov/llama.cpp通用,稳,大概 30–45 tok/s vllm-project/vllm高吞吐引擎,但不是单 3090 甜区,部署重 NVIDIA/TensorRT-LLM性能强,编译复杂,3090 没有官方优化 lane Ollama5 分钟跑起来,但 27B 在 3090 上 ~30 tok/s 怎么选:
- 想要速度,愿折腾 → 这个
- 想要省事,5 分钟跑通 → Ollama
- 想要通用 + 模型多 → llama.cpp
- 想要生产 + 多卡 → vLLM
局限 / 注意点
- RotorQuant rk8v4 KV 模式暂时不可用 —— 作者说在修
- 没有预编译的 Linux archive —— 走 Docker build
- FP8 KV cache profile 在 SM86 不支持 —— 只能 INT8,但够用
- C8 启动时如果请求是 35B-A3B + 8 并发会被拒 —— 资源不够,降级到 C4 或 C2
- 社区支持,best-effort —— 不是商业产品,出问题自己看 issue
- 模型是 NInfer 注册的 artifact —— 不能随便换 GGUF,只能用
neroued/Qwen3.8-27B-nvfp4-NInfer等几个固定 artifact
适合谁 / 不适合谁
适合:- 3090 玩家想榨干硬件
- 跑 Qwen 27B 想要 OpenAI / Anthropic API 兼容的本地服务
- 单用户低延迟聊天 / 多用户小服务
不适合:- 想要 5090 / 多卡的极致性能(看原版 Neroued/ninfer)
- 想要丰富模型库(看 llama.cpp / Ollama)
- 想要"开箱即用 + 桌面 GUI"(看 LM Studio)
- macOS 用户(本项目只支持 Linux / Windows 11)
27B Q4 权重约 15–16G,3090 带宽约 936GB/s,纯自回归 decode 上限大约 55–60 t/s。71 这个数已经越过它,说明至少开了投机/草稿解码,或者统计口径不是纯 decode——不是质疑数字,是想确认它快在哪。
问三个量,对齐了才好和 llama.cpp 那套对照:
- Qwen3.8-27B 用的量化格式和实际权重体积;
- KV 是每路独立分配还是共享池,长上下文能开到多少;
- 71 t/s 和 8 并发 163 t/s 是不是同一上下文长度下测的。
3090 的 24G 里留给 KV 不到 8G,并发一高会先撞上下文墙,不是算力墙。
-
@terry https://lcz.me/topic/1656 看了我这个新帖,还说XTX更好么? 我用3090跑到191 tok/s 了。
-
@terry https://lcz.me/topic/1656 看了我这个新帖,还说XTX更好么? 我用3090跑到191 tok/s 了。
-
@johnnybegood 你单卡又不能多开,decode再快,体验差距并不大。A卡跑llama.cpp在Vulkan下体验是很好的,这是我实测。况且单卡的话,3090是旧卡,硬件问题风险就很大。所以单卡肯定买XTX,双卡就买3090,但是要自己面对硬件风险。光噪音一项,3090就下马了。
-
@terry 哈哈, 那我幸亏落在了你说的“双卡就3090”的范围。我第二张买的就是三风扇静音版了, 第一张是涡轮,真的吵得要命,花了500改一样的风扇了,现在在机箱里看着还挺好看。 间距虽然小了点, 但是平时双卡待机 37度, 满载长程最高76-78度, 噪音最高55分贝以下(自己买的分贝仪测的),非常满意。
