高性能的 SGLang Rust 运行时

一句话:pagoda 是一个只用 Rust 标准库的 LLM 推理运行时框架。没有 tokio,没有 candle,没有 ndarray。cargo build --release 离线一次通过,产出 17.9MB 单二进制。

设计目标是三件事:易用、性能、可靠。

易用性

  • 部署只需要一个文件 :17.9MB 单二进制,不依赖 Python、CUDA 运行时;内网、离线环境、CI 里 cargo build --release 直接出产物
  • OpenAI 兼容 API:现有客户端改一个 base_url 即可接入
  • 结构化生成内置 :gen / select / fork 同构 DSL,不需要额外框架
  • 机制即配置:radix 前缀缓存与块级 APC 缓存做进同一个引擎,一行配置切换,可直接 A/B
  • 87 项测试 cargo test --offline 全过,不依赖网络和外部资源

性能

共享开发机(i5-12500 / RTX 3050 8GB,测试时有其他负载)上的指示性数据,三方同条件测量,脚本和原始数据都在仓库里。

vs SGLang 0.5.10:

对比项 pagoda SGLang
tiny 模型 warm 延迟 14.3 ms 153.9 ms(10.8x 框架开销差距)
tiny batch-8 吞吐 3103 tok/s 680 tok/s(4.6x)
1.1B batch-8 吞吐 4.0 tok/s 23.0 tok/s(输 5.8 倍)
CPU-only 运行 全链路可跑 scheduler 硬依赖 CUDA,拒绝启动

vs Python 参考实现(同一模型快照、同一输入,5 次预热 + 50 次迭代):

指标 pagoda Python 参考实现
GPU 单次延迟 605.9 ms 690.9 ms(pagoda 为全 f32,对方为 fp16 autocast)
冷启动加载 1.4--1.6 s 7.9--9.4 s
峰值内存(GPU) 1850 MB 2954 MB
交付形态 17.9 MB 单二进制 5.3 GB / 39 个包的 venv

机制 A/B(同一引擎内开 vs 关):

机制 实测效果
增量 KV 会话 16 步生成 216→21 token,模型计算省 10.3 倍
张量级前缀嫁接 134-token prompt 的 warm prefill 归零
批量解码 物理调用收缩 6.24 倍
KV checkpoint 分支 100% 前缀命中,创建 6→1 token

可靠性

  • 跨设备确定性:CPU 与 GPU 输出 argmax 逐位一致(概率差约 52 ULP)。风控、路由这类阈值敏感场景,跨硬件可复现是硬保障
  • 故障面小 :无 async 运行时------HTTP 服务基于 std::net,调度器是裸 thread + channel
  • 网关模式:与生成引擎共部署时 pagoda 守门(健康检查、指标、KV checkpoint),上游进程崩溃时网关回 502,自身不挂
  • 缓存免疫:KV checkpoint 不受 LRU 淘汰影响,任意分支 100% 前缀命中接入

边界

  • CPU 纯算力落后 torch 约 2.25 倍(没有 BLAS 库;路线图是自带 BLAS / int8 内核)
  • 只做推理,不带训练;数据中心级批量吞吐交给大引擎,pagoda 以网关共部署
  • CUDA Graph、融合 kernel 尚未实现,GPU 通路目前是数值正确优先

链接

基准脚本全部开源,数字可复现。

相关推荐
SomeOtherTime3 小时前
Rust 闭包语法和原理(AI回答)
开发语言·后端·rust
SomeOtherTime7 小时前
Rust集合(AI回答)
开发语言·后端·rust
SomeOtherTime1 天前
Rust 泛型与特性讲解(AI回答)
rust
青川Lapis1 天前
RUST:错误处理 thiserror + anyhow 工程化
rust
SomeOtherTime1 天前
Rust生命周期介绍(AI回答)
开发语言·后端·rust
SomeOtherTime2 天前
Rust所有权(AI回答)
开发语言·后端·rust
SomeOtherTime2 天前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
西风测评3 天前
安全的自动更新怎么做:minisign 签名、先验签后解析与防回滚
rust·ssh
Delightrs3 天前
Rust LeetCode238 算法题解
开发语言·算法·rust
奶油话梅糖3 天前
快过 IDM 5 倍、开源免费:4,200 Star 的 Rust 下载器用 7 组对照实验“单挑“行业老大
rust·开源·idm