vllm-project/router

A high-performance and light-weight router for vLLM large scale deployment

解决的问题

当大规模运行 vLLM 时,许多工作实例每秒处理数千个请求。如果没有智能路由器,流量可能会不均匀分布,一些工作节点过载而其他节点闲置,重复的提示会浪费计算资源,重新计算相同的前缀。vLLM Router 通过充当轻量级转发层来解决这个问题,智能地分发请求,保持多轮会话在同一工作节点上,并可以将预填充阶段(读取和分析提示)与解码阶段(生成令牌)分离,以优化硬件使用。

工作原理

路由器位于 vLLM 工作节点之前,接收 OpenAI 兼容的 API 调用。它使用多种负载均衡策略之一为每个请求选择最佳工作节点:轮询、随机、一致性哈希(将会话/用户路由到同一工作节点)、二选一(从两个随机工作节点中选择负载最低的)或缓存感知(将请求路由到前缀缓存重用率最高的工作节点)。对于预填充/解码分离,它维护独立的预填充和解码工作节点池,并相应地路由每个阶段。它还包括带有指数退避的重试逻辑、自动打开和关闭以保护工作节点的断路器、Prometheus 指标以及可选的 Kubernetes 服务发现。启用后,它可以转发请求到 vLLM 的 Rust gRPC 工作节点(使用 grpc:// URL),并可以加载 WASM 插件以运行自定义的请求中间件(例如,输入验证或转换)。

适用对象

此路由器适用于大规模部署 vLLM 的团队,尤其是那些在 Kubernetes 中运行多个副本或使用专用硬件进行预填充与解码的团队。它适合具有大量多轮聊天(保持会话粘性)、重复提示(如少样本或代理循环,以利用缓存)或需要精细控制重试、断路和指标的高吞吐量服务的工作负载。

亮点

  • 多种负载均衡策略:轮询、随机、一致性哈希、二选一和缓存感知。
  • 预填充/解码分离,支持 NIXL、NCCL 和 Mooncake 连接器。
  • Kubernetes 服务发现通过标签选择器自动查找工作节点 Pod。
  • 企业级弹性:带有指数退避和抖动的重试,带有可配置状态机的断路器。
  • gRPC 后端支持,将请求路由到 vLLM 的 Rust Inference 工作节点。
  • 可选的 WASM 中间件,用于在受保护的路由上自定义请求处理。
  • Prometheus 指标端点用于监控。
  • 轻量且高性能,用 Rust 编写,并提供 Python 启动器。

相关

  • Dispatch
  • Dispatch
  • Dispatch
  • 项目
  • Dispatch