Neroued/ninfer
机器学习面向 RTX 5090 与 DGX Spark 的原生 C++/CUDA 推理引擎,支持指定模型检查点。
项目定位
NInfer 是一个用 C++/CUDA 编写的推理运行时,只针对少数几个模型检查点做深度优化,目标硬件是单张 RTX 5090 或一台/两台 DGX Spark。它同时提供单次生成的命令行工具、兼容 OpenAI 与 Anthropic 协议的 HTTP 服务,以及离线困惑度评分。引擎在解码阶段使用 CUDA Graph、投机解码(MTP/DFlash)和精确前缀复用,用来压低单请求长 prefill 和并发 decode 的开销。
支持的模型清单很窄:Qwen3.6/3.8-27B 稠密模型、Qwen3.6-35B-A3B MoE、Qwen3.8-Flash-Next 和 GLM-5.3-Flash。按模型不同,可运行在单张 5090(可选 CPU 专家卸载)、单台 Spark,或两台 Spark 的 TP2/EP2 组合上。视觉、工具调用、约束输出和离线评分都有支持,但视觉和投机解码需要产物中包含对应组件,并在启动时开启。
从源码构建
在 Linux 上原生构建。文档给出的工具链是 CUDA 13.4、RTX 5090 使用 sm_120a、DGX Spark 使用 sm_121a,并需要 CMake 3.28+、C++20 编译器、Ninja、pkg-config、libjpeg、FFmpeg 开发库、hwloc >= 2.5、liburing >= 2.5、libcurl >= 7.85。
git clone https://github.com/Neroued/ninfer.git
cd ninfer
cmake --preset rtx5090-release
cmake --build build/rtx5090-release -j
单台 Spark 用 dgx-spark-release 预设;两台 Spark 需安装 NCCL,并在两个节点上分别加 -DNINFER_ENABLE_DISTRIBUTED=ON 构建。产物位于 apps/ninfer、apps/ninfer-serve、apps/ninfer-perplexity,启用分布式后还有 apps/ninfer-worker。需从构建目录运行;若移动产物,lib/ 要保留在 apps/ 旁边。项目不提供安装式 C++ SDK。
获取权重并运行
引擎只读取 v3 .ninfer 产物,其中打包了权重、配置、分词器和对话模板。官方产物由同一作者发布在 Hugging Face,例如 Qwen3.8-27B NVFP4。用 hf 命令下载,并保证所有分片与入口文件放在同一目录:
hf download neroued/Qwen3.8-27B-nvfp4-NInfer \
qwen3_8_27b_nvfp4.ninfer --local-dir models
在 RTX 5090 上跑单次请求:
./build/rtx5090-release/apps/ninfer models/qwen3_8_27b_nvfp4.ninfer \
--prompt "Explain prefill and decode briefly." \
--max-context 8192 --max-tokens 1024 --kv-dtype fp8
回答内容写到 stdout,推理过程、启动信息和结果报告写到 stderr。需要常驻服务时,复制一份部署示例,改好 model.path 后运行 ninfer-serve --config ninfer.local.toml。服务文档说明了端点、工具、结构化输出和流式返回;示例配置会开启视觉、FP8 KV 和 MTP3,并把单请求上下文上限设为 240,000 token,但实际共享 KV 容量取决于可用显存。
使用约束
- 硬件是硬门槛:只支持 RTX 5090(
sm_120a)和 DGX Spark(sm_121a);Spark 为 AArch64,双节点运行要求两台机器都装好 NCCL。 - Flash Next 四个文件共 101.00 GiB,GLM 六个文件共 178.33 GiB,两台 Spark 上都要放完整一套;Flash Next 走 CPU 专家卸载时还需要大量系统内存。
max_context限制单请求的输入加生成 token,context_capacity是启动时分配的独立字节池,由 KV 历史与续写状态共享,且不随并发数翻倍,因此不保证每个活跃请求都能同时达到上下文上限。- 一个 Engine 只服务一个模型,最多 8 个活跃请求;内存紧张时缓存前缀可能被回收,活跃请求也可能被暂停等待重放。
- 模型许可证与代码的 Apache-2.0 分开:Flash Next 由 Qwen Community License 1.0 源码与 NVIDIA Open Model License 权重组成,GLM 源码权重为 MIT。
HotRepo 点评
NInfer 在 2026-11-07 进入 GitHub C++ 日榜第 7 名,当时共有 3,280 star、687 fork,当日新增 11 star。仅一条记录足以说明它那天的位置,但不足以判断走势;HotRepo 也没有它的全语言日榜名次。技术上最值得注意的是刻意收窄的范围:它不是通用 runner,而是把少数检查点和固定硬件绑定,并完整给出构建预设、各模型产物体积和测量方法。这种窄带来的代价也很直接——用其他显卡或模型的人在这里没有可用路径,而 5090 和 Spark 用户能拿到一套具体、可复现的配置。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。