搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

Neroued/ninfer

机器学习

面向 RTX 5090 与 DGX Spark 的原生 C++/CUDA 推理引擎,支持指定模型检查点。

3,285
690
C++
Apache-2.0
创建于 4 个月前

项目定位

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 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Ninfer: High-performance single-GPU inference
▲ 3 · 0 条评论 · 2026年7月28日