Buoyant 开源 Kinference:面向 vLLM 与 Kubernetes 的推理控制平面
Introducing Kinference: An Open Source Inference Control Plane for vLLM and Kubernetes
Buoyant 发布开源项目 Kinference,作为 vLLM 与 Kubernetes 之上的推理控制平面,提供 token 限流、租户用量与成本追踪、负载均衡和推理策略。
原文给出 KV cache 感知负载均衡的基准对比和策略配置示例,可据此判断推理平台层的调度取舍。
我们很高兴地宣布 Kinference [kay-inference],这是一个新的开源项目,用于使用 vLLM 构建可扩展的推理平台。
我们在 Buoyant 创建了 Kinference,此前我们看到客户在其环境中运行开放权重模型时举步维艰。我们将 Kinference 设计为你所需构建平台的控制平面层。它使用 vLLM 完成底层推理,并提供在实践中构建推理平台所需的一系列功能。这包括令牌速率限制、租户使用量和成本跟踪、智能负载均衡以及推理策略。

Kinference 可以与你现有的技术栈配合使用。使用 Kinference 只需将推理客户端指向其 HTTP 端点,并向该端点发送兼容 OpenAI 或 Anthropic 的推理流量即可。
Kinference 为一组异构且不断演进的模型提供服务,这些模型运行在异构且不断演进的 GPU 池上,并服务于异构且不断演进的客户端集合。
推理负载均衡与性能
除了策略和路由层之外,Kinference 还提供针对推理的负载均衡,它会考虑 GPU 队列大小、历史性能以及 GPU 上 KV 缓存内容等信号。尤其是这种 KV 缓存感知能力,使 Kinference 能够将请求发送到针对该特定请求执行工作量最少的 vLLM worker。
对 GPU 的 KV 缓存内容进行建模,可以为分布式推理带来显著的性能提升。例如,在我们的公开 Kinference 基准测试中,我们展示了与标准 Kubernetes 负载均衡(下图中标记为“service”)相比,Kinference(标记为“kinference”)在一种工作负载类型上能够将请求的首令牌时间(TTFT)中位数缩短 95%,端到端延迟中位数缩短 45%。

通过将缓存感知纳入策略,平台所有者可以创建策略,将简单请求发送到成本更低的模型——但前提是这比一开始就发送到昂贵模型的工作量更少。
在上面的空载延迟基准测试中,我们试图单独衡量 Kinference 的 KV 缓存感知负载均衡的效果。在下面的容量基准测试中,我们测量了每个端点在延迟 SLO 内每分钟可服务的请求数。

在容量基准测试中,Kinference 在共享前缀上提供了7.4 倍的有效吞吐量,在多轮对话上提供了约 3.5 倍的有效吞吐量。它能够在共享前缀工作负载上以并发数 32(所测最高值)达到我们选定的 SLO,在多轮对话工作负载上以并发数 8 达到该 SLO,而 kube-proxy 方法在任何并发级别下都无法达到该 SLO。
在我们的此处阅读有关基准测试设置、过程和发现的更多详细信息。
策略驱动的方法
Kinference 的核心是推理策略这一理念。
推理策略允许平台所有者在使用量、性能和优先级之间进行权衡。我们观察到客户在解决如下问题:
- 我们如何让用户不仅能够请求特定的模型检查点(“请给我 27B 参数、FP8 量化的 Qwen 3.8”),还能请求更广泛的模型类别,例如“任何 Qwen 3.8 模型”或“任何适合编码的模型”?
- 我们如何将“简单”的推理请求重定向到更便宜的模型,即使用户请求的是昂贵的模型?以及,我们如何在不将整个提示历史发送到冷 GPU 并造成巨大延迟损失的情况下做到这一点?
我们没有构建一组一次性功能,而是在 Kinference 中构建了一个策略层,可以表达所有这些功能——以及许多其他功能。
例如,以下是如何为 Kinference 定义 YAML 策略,按复杂度级别对提示进行语义分类,并将较简单的提示路由到更便宜的模型——除非考虑到缓存使用情况,将其发送到昂贵模型会更快。
apiVersion: kinference.buoyant.io/v1alpha1
kind: InferencePolicy
metadata:
name: smart-semantic-routing
namespace: inference
spec:
rules:
- name: low-complexity-consider-qwen
matches:
- model: glm-5.3
tag: complexity-low
route:
consider:
- models: { names: [ qwen-3.6-27b, glm-5.3 ] }
select: [ { minimize: PredictedTTFT } ]这是另一个示例,使用 Kinference 在队列深度或缓存压力表明 GPU 已饱和时,将多余请求突发到云提供商端点(如 OpenAI、Anthropic、Databricks 等)。
apiVersion: kinference.buoyant.io/v1alpha1
kind: InferencePolicy
metadata:
name: burst-policy
namespace: inference
spec:
rules:
- name: burst-to-cloud
route:
exclude:
- name: drop-overloaded-workers
drop:
backend: { type: Local }
queuedPrompts: { greaterThan: 2 }
select:
- { type: Local,
minimize: PredictedTTFT }
- { type: Provider,
order: [bedrock, databricks] }最后,这是一个策略示例,根据提示是否包含 PII 对其进行语义分类,并在 GPU 池饱和时将请求突发到第三方提供商。
apiVersion: kinference.buoyant.io/v1alpha1
kind: InferencePolicy
metadata:
name: pii-stays-local
namespace: inference
spec:
rules:
- name: serve
route:
exclude:
- name: pii-never-leaves-cluster
if: { tag: pii-detected }
drop: { backend: { type: Provider } }
select:
- { type: Provider,
order: [ databricks ] }
- { type: Local,
minimize: PredictedTTFT }
onEmpty: Reject # fail closed借助推理策略,平台所有者可以基于租户、请求的模型、底层 GPU 池的状态、提示的语义分类以及许多其他因素,为推理请求应如何路由(或拒绝)创建明确的规则。这些策略可以经过人工或代理审查;可以提交到 git;可以进行 lint 和审查;并且可以独立应用或回滚。
我们认为这个策略引擎对于提供真正的推理平台至关重要。更多信息请参阅我们的 Kinference 策略文档。
推理指标和 SLO
最后,有一套全面的推理相关指标,供平台所有者监控、告警并围绕其构建 SLO。Kinference 报告系统上正在发生的事情,不仅包括其自身健康状况,还包括:
- 输入和输出的令牌速率,以及输入和输出令牌大小的直方图
- TTFT、ITL 和 E2E 延迟直方图
- 未缓存与已缓存的提示令牌,用于成本估算
- 模型使用情况、GPU 饱和度等

几乎所有指标也可按租户查看,因此您可以跟踪租户使用情况,围绕特定租户的性能构建特定的 SLO,以及确保您构建的平台满足其要求可能需要的其他一切。
立即试用
入门很简单:
01 安装 Gateway API CRD
注意:本指南将 Kinference 安装到 default 命名空间中。要安装到不同的命名空间,请覆盖以下 helm 命令中的命名空间。
第一步是安装 Gateway API CRD,它提供了处理流量的标准机制。
GWAPI_VERSION=1.5.1
kubectl apply --server-side --force-conflicts -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v$GWAPI_VERSION/standard-install.yaml02 安装 Kinference 网关
Kinference 有两个基本组件:流量网关和推理处理器。每个组件独立发布,并作为单独的 chart 提供其 CRD,在组件本身之前安装。
安装网关 CRD 和组件:
helm upgrade -i gateway-crds \
oci://ghcr.io/buoyantio/charts/gateway-crds \
--devel
helm upgrade -i gateway \
oci://ghcr.io/buoyantio/charts/gateway \
--devel --wait03 安装 Kinference
现在,安装 Kinference 和 Kinference CRD:
helm upgrade -i kinference-crds \
oci://cr.kinference.ai/kinference-ai/charts/kinference-crds \
--devel
helm upgrade -i kinference \
oci://cr.kinference.ai/kinference-ai/charts/kinference \
--set extension.enabled=true \
--devel --wait04 确保其正常工作
kubectl get pods验证进程正在运行:
NAME READY STATUS RESTARTS AGE
gateway-cp-566cddc46d-jsqlq 1/1 Running 0 8s
kinference-7bb854cfc5-pp4t7 1/1 Running 0 8s
请始终参考 http://kinference.ai/docs/ 上的最新文档,因为这些步骤会随时间演变。
Kinference 是完全开源的,采用 Apache v2 许可证。它现已在 GitHub 上提供。非常欢迎来自其他部署的反馈、问题和基准报告。
来源:vLLM Blog · vllm.ai