Pulsing 是一个负载感知、KV 缓存感知的 LLM 推理服务系统,专注于多租户和高并发场景。通过动态感知请求成本、内存布局和缓存命中率,Pulsing 能够提升整体吞吐量并降低尾延迟,同时支持 vLLM、SGLang 等主流推理后端。
Pulsing 的目标是提供一个轻量、易用、可扩展的 LLM 推理服务框架:
- 统一的命令行入口:通过
pulsing命令一键启动 frontend、backend、router 等组件 - 灵活的参数配置:基于 hyperparameter 的声明式参数系统
- 可插拔的后端:支持 vLLM、Transformers 等多种推理后端
- 智能路由:内置 KV 缓存感知路由,优化请求分发
pip install pulsing1. 启动 vLLM 后端
pulsing vllm --model Qwen/Qwen2.5-0.5B2. 启动 Frontend(HTTP 服务)
pulsing frontend --model_name Qwen2.5-0.5B3. 启动独立 Router(可选,用于分离式部署)
pulsing router --endpoint dynamo.prefill.generate --block_size 64Pulsing 使用 hyperparameter 进行参数管理,支持通过 -D 传递高级参数:
# 配置 runtime
pulsing frontend --model_name MyModel \
-D runtime.request_plane=nats \
-D runtime.store_kv=etcd
# 配置 KV Router 高级选项
pulsing router --endpoint dynamo.prefill.generate \
-D router.kv.reset_states=true \
-D router.kv.track_active_blocks=false| 命令 | 说明 |
|---|---|
pulsing frontend |
启动 HTTP/gRPC 前端服务 |
pulsing vllm |
启动 vLLM 后端 worker |
pulsing transformers |
启动 Transformers 后端 worker |
pulsing router |
启动独立 KV 感知路由器 |
pulsing bench |
运行性能基准测试 |
使用 pulsing <command> --help 查看各命令的详细参数。
Pulsing 是 ai-dynamo/dynamo 项目的独立维护分支(当前基线版本:v0.7.0)。
继承:
- Dynamo 的解耦推理架构
- Rust + Python 协同设计
- 分布式 runtime 和服务发现机制
演进:
- 重新设计的命令行接口(
pulsingCLI) - 基于 hyperparameter 的声明式参数系统
- 更清晰的模块划分和代码组织
致谢:感谢 ai-dynamo/dynamo 项目所有贡献者的高质量开源工作。本项目遵循 Apache-2.0 协议,在所有衍生分发中保留原始版权和署名声明。
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 构建 wheel
cd lib/bindings/python
uv build --wheel --python 3.12构建可在不同 Linux 发行版上运行的 manylinux 兼容 wheel:
# 安装构建工具
pip install maturin ziglang
# 构建
cd lib/bindings/python
maturin pep517 build-wheel \
--auditwheel repair --manylinux \
--zig --compatibility manylinux_2_24Apache-2.0