AI推理集成部署
特性介绍
AI推理集成部署是一个专为云原生环境下AI推理服务优化所设计的端到端集成部署方案。该方案基于Helm Chart将智能路由(hermes-router)、高性能推理后端(Inference Backend)、全局KV Cache管理(cache-indexer)三大AI推理加速模块无缝集成,提供完整的AI推理加速组件的部署链路,从请求接入到推理执行,再到资源管理,实现一站式部署体验。
应用场景
- 传统聚合推理架构部署:支持基于vLLM的聚合推理模式,适用于中小规模推理场景。
- Prefill-Decode分离推理架构部署:支持Prefill和Decode阶段分离的xPyD高性能推理架构,适用于大规模推理场景。
能力范围
- 基于KV Aware感知、GPU缓存使用率、请求等待队列长度三个维度的负载均衡算法,实现端到端的推理请求调度。
- 支持用户配置智能路由的路由策略。
- 支持聚合模式和xPyD分离模式推理引擎。
- 支持用户配置推理引擎PD分离模式与xPyD的推理引擎节点数量。
- 拥有分布式KV Cache元数据管理,提供全局推理节点的KV Cache感知能力。
- 适配华为昇腾910B4芯片的推理加速。
- 支持用户配置推理芯片。
- 支持以Helm形式在K8s环境一键部署推理集群。
亮点特征
- KV-Aware路由策略:相比传统负载均衡,通过感知全局推理节点的KV Cache状态实现更智能的请求路由,减少不必要的重复KV Cache计算。
- Prefill-Decode分离架构:支持业界先进的PD分离架构,大幅提升大模型推理吞吐量。
- vLLM Mooncake集成:vLLM v1架构集成Mooncake分布式KV Cache管理系统,实现跨实例的KV Cache高速传输。
- 一键部署:通过Helm Chart实现三大组件在K8s环境一键式集成部署。
实现原理
PD聚合模式
图1 PD聚合模式AI推理集成部署图
- hermes-router:智能路由模块。负责接收用户请求并根据路由策略转发到最优的推理后端服务。
- cache-indexer:KV Cache全局管理器,为路由决策提供数据支持。
- Inference Backend:推理后端模块,基于vLLM提供高性能大模型推理服务,由1个Proxy Server Service和n个vLLM推理引擎实例组成。
- Proxy Server Service:推理后端服务的流量入口。
- vLLM:vLLM推理引擎实例。
组件初始化流程:
-
智能路由:
- 智能路由读取配置。
- 启动推理后端服务发现模块(周期性更新后端列表)。
- 启动推理后端指标收集模块(周期性更新后端负载指标)。
-
推理后端:
- 根据配置启动vLLM推理引擎实例。
- vLLM推理引擎实例绑定硬件设备,加载模型。
-
全局KV Cache管理器:
- 根据配置启动cache-indexer实例。
- 启动推理引擎实例自动发现模块(周期性更新推理实例列表)。
请求流程:
- 请求接入:用户请求首先到达hermes-router。
- KV Cache查询:hermes-router向cache-indexer查询该请求在集群中的前缀命中信息。
- 路由决策:基于KV Cache命中情况、GPU利用率等指标选择最优推理后端服务。
- 请求转发:将请求转发到选定的推理后端服务。
- 推理执行:vLLM推理引擎执行计算。
- 结果返回:vLLM推理引擎生成请求结果后返回hermes-router,随后返回客户端。
- 全局KV Cache管理异步更新:Prefill推理引擎在预填充过程中生产KV Event,cache-indexer订阅该KV Event并实时更新全局KV Cache元数据。
PD分离模式
图2 PD分离模式AI推理集成部署图
- hermes-router:智能路由模块。负责接收用户请求并根据路由策略转发到最优的推理后端服务。
- cache-indexer:KV Cache全局管理器,为路由决策提供数据支持。
- Inference Backend:推理后端模块,基于vLLM提供高性能大模型推理服务,由1个Proxy Server Service,1个Proxy Server实例,n个vLLM Prefill推理引擎实例和n个vLLM Decode推理引擎实例组成。
- Proxy Server Service:推理后端服务的流量入口。
- Proxy Server:二层路由转发组件。负责每个推理后端服务内的负载均衡路由。
- vLLM:vLLM推理引擎实例。
- Mooncake Connector:负责PD实例之间的KV Cache P2P高速传输。
组件初始化流程:
-
智能路由:
- 智能路由读取配置。
- 启动推理后端服务发现模块(周期性更新后端列表)。
- 启动推理后端指标收集模块(周期性更新后端负载指标)。
-
推理后端:
- 根据配置启动vLLM推理引擎实例。
- vLLM推理引擎实例绑定硬件设备,加载模型。
- Prefill推理引擎实例与Decode推理引擎实例与对方所暴露的KV connector端口建立连接。
- Proxy Server组件启动,开始对推理引擎实例自动发现(周期性更新推理引擎实例列表)。
-
全局KV Cache管理器:
- 根据配置启动cache-indexer实例。
- 启动推理引擎实例自动发现模块(周期性更新推理实例列表)。
请求流程:
- 请求接入:用户请求首先到达hermes-router。
- KV Cache查询:Router向cache-indexer查询该请求在集群中的前缀命中信息。
- 路由决策:基于KV Cache命中情况、GPU利用率等指标选择最优推理后端服务。
- 请求转发:将请求转发到选定的推理后端服务。
- 二层路由:在推理后端服务内Proxy Server将推理请求根据负载均衡策略二次转发到的负载最小的Prefill推理引擎。
- 预填充阶段执行:Prefill推理引擎执行计算并将结果返回Proxy Server。Prefill推理引擎更新KV Cache状态并发出KV Event。
- 解码阶段执行:Proxy Server根据负载均衡策略二次转发到的负载最小的Decode推理引擎。Decode推理引擎与先前的Prefill推理引擎建立连接并开始解码。
- 结果返回:Decode推理引擎生成请求结果后返回Proxy Server,随后通过Router返回客户端。
- 全局KV Cache管理异步更新:Prefill推理引擎在预填充过程中生产的KV Event,cache-indexer订阅该KV Event并实时更新全局KV Cache元数据。
与相关特性的关系
- 智能路由hermes-router组件依赖推理引擎(如vLLM)提供推理服务及指标接口。
- KV Cache全局管理器cache-indexer组件依赖推理引擎(如vLLM)提供KV Cache存储、移除事件。
相关实例
示例参考:values.yaml
安装
前提条件
硬件要求
- 每个推理节点至少一张推理芯片。
- 每个推理节点至少16GB内存,4CPU核。
软件要求
- Kubernetes v1.33.0及以上版本。
网络要求
- 能够访问镜像仓库:oci://cr.openfuyao.cn。
权限要求
- 用户具备创建RBAC资源的权限。
开始安装
独立部署
本特性有以下两种途径独立部署:
- 从openFuyao官方镜像仓库获取项目安装包。
-
拉取项目安装包。
helm pull oci://cr.openfuyao.cn/charts/ai-inference-integration:xxx
其中
xxx
需替换为具体项目安装包版本,如0.0.0-latest
。拉取得到的安装包为压缩包形式。 -
解压安装包。
tar -xzvf ai-inference-integration
-
安装部署。
以release名称
a3i
和命名空间ai-inference
为例,在ai-inference-integration同级目录下执行如下命令:helm install -n ai-inference a3i ./ai-inference-integration
- 从openFuyao GitCode仓库获取:
-
从仓库拉取项目。
git clone https://gitcode.com/openFuyao/ai-inference-integration.git
-
安装部署。
以release名称
a3i
和命名空间ai-inference
为例,在ai-inference-integration同级目录下执行如下命令:cd ai-inference-integration/charts/ai-inference-integration
helm dependency build
helm install -n ai-inference a3i .
配置AI推理集成部署
前提条件
- 已获取ai-inference-integration项目文件。
- ai-inference-integration包含的组件尚未安装部署:hermes-router、Inference Backend、cache-indexer。
操作步骤
-
准备
values.yaml
配置文件。用户参考开始安装章节找到
values.yaml
配置文件。 -
配置智能路由参数。
配置路由策略
- hermes-router.app.strategy:配置路由策略,支持KV Cache Aware策略和轮询策略。若选择
kv-aware
策略,请配置hermes-router.app.collector.kvmanager
,并将cache-indexer
组件开启使用。
配置路由后端服务发现
- hermes-router.app.discovery.labelSelector.app:对推理后端的自动服务发现的K8s Service资源标签。该标签在
inference-backend.service.label
配置。示例:若推理后端K8s Service资源标签配置为vllm
,则该属性配置为app:vllm
。 - hermes-router.app.discovery.interval:对推理后端的自动服务发现间隔(单位:秒)。
配置路由后端推理服务指标发现
- hermes-router.app.collector.type:指标收集类型,当前仅支持
vllm
。 - hermes-router.app.collector.interval:指标刷新间隔(单位:秒),定期采集后端服务指标。
- hermes-router.app.collector.timeout:指标收集超时时间(单位:秒)。
- hermes-router.app.collector.metrics:需要收集的指标列表。例如GPU缓存使用率。
vllm:gpu_cache_usage_perc
。
配置路由cache-indexer组件发现
- hermes-router.app.collector.kvmanager.url:KV Cache全局管理器的服务地址。在K8s中可以通过Service名称的方式来代替ip地址,例如
url:"http://cache-index-service"
。KV Cache全局管理器的Service名称可以在cache-indexer.service.name
配置。 - hermes-router.app.collector.kvmanager.port:KV Cache全局管理器的端口。KV Cache全局管理器的端口可以在
cache-indexer.service.port
配置。 - hermes-router.app.collector.kvmanager.matchPath:KV Cache全局管理器的KV Aware接口。
- hermes-router.app.collector.kvmanager.timeout:访问KV Cache全局管理器的超时时间(单位:秒)。
配置路由镜像拉取
- hermes-router.image.repository:智能路由镜像地址。
- hermes-router.image.tag:智能路由镜像标签。
- hermes-router.image.pullPolicy:智能路由镜像拉取策略。
- hermes-router.app.strategy:配置路由策略,支持KV Cache Aware策略和轮询策略。若选择
-
配置推理后端参数。
配置推理后端基础开关
- inference-backend.replicaCount:推理后端服务个数。每个推理后端服务包含多个推理引擎实例。
- inference-backend.isPDAggregated:推理引擎是否采用PD分离架构。当前只支持所有推理引擎都采用PD聚合模式或者PD分离模式,不支持混合部署。
配置推理后端模型
- inference-backend.app.model:推理引擎使用的模型地址。
配置推理后端K8s服务
- inference-backend.service.label:每个推理后端的K8s Service资源的标签。
配置聚合模式下推理引擎
- inference-backend.app.aggregated.replicaAmount:每个推理后端服务中推理引擎实例的个数。
- inference-backend.app.aggregated.vllmBasePort:推理引擎实例的HTTP API端口。
- inference-backend.app.aggregated.tensorParallelism:推理引擎实例的张量并行数量。
- inference-backend.app.aggregated.dataParallelism:推理引擎实例的数据并行数量。
配置PD分离模式下推理引擎
- inference-backend.app.disaggregated.kvConnector:推理引擎所使用的KV Connector名称。
- inference-backend.app.disaggregated.kvConnectorModulePath:推理引擎所使用的KV Connector包路径。
- inference-backend.app.disaggregated.proxyServer.basePort:每个推理后端服务中的二层路由服务的HTTP API接口。
- inference-backend.app.disaggregated.proxyServer.discovery.interval:对推理引擎的自动服务发现时间间隔(单位:秒)。
- inference-backend.app.disaggregated.prefill.replicaAmount:每个推理后端服务中Prefill推理引擎实例的个数。
- inference-backend.app.disaggregated.prefill.vllmBasePort:Prefill推理引擎实例的HTTP API端口。
- inference-backend.app.disaggregated.prefill.connectorBasePort:Prefill推理引擎实例的KV Cache Connector通信端口。
- inference-backend.app.disaggregated.prefill.tensorParallelism:Prefill推理引擎实例的张量并行数量。
- inference-backend.app.disaggregated.prefill.dataParallelism:Prefill推理引擎实例的数据并行数量。
- inference-backend.app.disaggregated.decode.replicaAmount:每个推理后端服务中Decode推理引擎实例的个数。
- inference-backend.app.disaggregated.decode.vllmBasePort:Decode推理引擎实例的HTTP API端口。
- inference-backend.app.disaggregated.decode.connectorBasePort:Decode推理引擎实例的KV Cache Connector通信端口。
- inference-backend.app.disaggregated.decode.tensorParallelism:Decode推理引擎实例的张量并行数量。
- inference-backend.app.disaggregated.decode.dataParallelism:Decode推理引擎实例的数据并行数量。
配置聚合模式下推理引擎资源
- inference-backend.resources.aggregated.limits.deviceName:推理引擎的K8s资源限制上限的AI推理芯片名称。具体芯片使用数量为
dataParallelism * tensorParallelism
。示例:deviceName: "huawei.com/Ascend910"
。 - inference-backend.resources.aggregated.requests.deviceName:推理引擎的K8s资源申请的AI推理芯片名称。示例:
deviceName: "huawei.com/Ascend910"
。
配置PD分离模式下推理引擎
- inference-backend.resources.disaggregated.prefill.limits.deviceName:Prefill推理引擎的K8s资源限制上限的AI推理芯片名称。示例:
deviceName: "huawei.com/Ascend910"
。 - inference-backend.resources.disaggregated.prefill.requests.deviceName:Prefill推理引擎的K8s资源申请的AI推理芯片名称。示例:
deviceName: "huawei.com/Ascend910"
。 - inference-backend.resources.disaggregated.decode.limits.deviceName:Decode推理引擎的K8s资源限制上限的AI推理芯片名称。示例:
deviceName: "huawei.com/Ascend910"
。 - inference-backend.resources.disaggregated.decode.requests.deviceName:Decode推理引擎的K8s资源申请的AI推理芯片名称。示例:
deviceName: "huawei.com/Ascend910"
。
配置推理后端镜像拉取
- inference-backend.aggregated.image.repository:聚合模式推理后端镜像地址。
- inference-backend.aggregated.image.tag:聚合模式推理后端镜像标签。
- inference-backend.aggregated.image.pullPolicy:聚合模式推理后端镜像拉取策略。
- inference-backend.disaggregated.image.repository:分离模式推理后端镜像地址。
- inference-backend.disaggregated.image.tag:分离模式推理后端镜像标签。
- inference-backend.disaggregated.image.pullPolicy:分离模式推理后端镜像拉取策略。
-
配置KV Cache全局管理器参数。
配置KV Cache全局管理器的推理后端服务发现
- cache-indexer.app.serviceDiscovery.labelSelector:对推理后端的自动服务发现的K8s Service资源标签。该标签在
inference-backend.service.label
配置。示例:若推理后端K8s Service资源标签配置为vllm
,则该属性配置为labelSelector: "app=vllm"
。 - cache-indexer.app.serviceDiscovery.refreshInterval:对推理后端的自动服务发现时间间隔(单位:秒)。
配置KV Cache全局管理器的K8s服务
- cache-indexer.service.name:cache-indexer的K8s Service名称。
- cache-indexer.service.port:cache-indexer的K8s Service端口。
配置KV Cache全局管理器镜像拉取
- cache-indexer.image.repository:cache-indexer镜像地址。
- cache-indexer.image.tag:cache-indexer镜像标签。
- cache-indexer.image.pullPolicy:cache-indexer镜像拉取策略。
- cache-indexer.app.serviceDiscovery.labelSelector:对推理后端的自动服务发现的K8s Service资源标签。该标签在
-
应用配置
用户参考安装章节部署以应用配置。
使用AI推理
前提条件
硬件要求
- 每个推理节点至少一张推理芯片。
- 每个推理节点至少16GB内存,4 CPU核。
软件要求
- Kubernetes v1.33.0及以上版本。
- 已经安装ai-inference-integration包含的组件:hermes-router、inference-backend、cache-indexer。
网络要求
- 能够访问镜像仓库:oci://cr.openfuyao.cn。
- 使用HCCL跨机高速通信传输时需要有RDMA设备支持。
背景信息
无。
使用限制
- 暂不支持请求认证等网关能力,需避免服务入口暴露给无关用户。
- 当前仅支持vLLM推理引擎。
- 当前仅支持Mooncake P2P Connector。
- 当前仅在Ascend910B4推理芯片验证。
- 当前仅支持AI推理场景,不支持AI训练场景。
操作步骤
-
获取服务访问地址。
1.1 查看hermes-router服务的访问地址:
kubectl get svc -n ai-inference
1.2 记录hermes-router的IP地址与端口。hermes-router服务名称为
[helm 安装名称]-hermes-router
。 -
发送推理请求(以curl发送请求为例)。
2.1 发送非流式推理请求:
curl -X http://[路由服务IP]:[路由服务端口]/rest/hermes-router/v1beta1/v1/chat/completons \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-8B",
"messages": [{"role": "user", "content": "请介绍openFuyao开源社区"}],
"stream": false
}'2.2 发送流式推理请求:
curl -X http://[路由服务IP]:[路由服务端口]/rest/hermes-router/v1beta1/v1/chat/completons \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-8B",
"messages": [{"role": "user", "content": "请介绍openFuyao开源社区"}],
"stream": true
}' -
接收推理结果。
3.1 非流式响应一次性返回完整结果。
3.2 流式响应逐块返回以
data:
开头的JSON对象。
相关操作
以release名称a3i
和命名空间ai-inference
为例:
查看部署状态:
helm status a3i -n ai-inference
更新配置:
helm upgrade a3i ./charts/ai-inference-integration \
-n ai-inference \
-f custom-values.yaml
卸载系统:
helm uninstall a3i -n ai-inference
导出配置:
helm get values a3i -n ai-inference > current-values.yaml
扩展推理实例:
helm upgrade a3i ./charts/ai-inference-integration \
-n ai-inference \
--set inference-backend.replicaCount=2
FAQ
-
hermes-router以及Proxy Server初始阶段有错误信息。
现象描述: 通过查看Pod日志发现最初hermes-router以及Proxy Server有很多报错的请求信息。
处理步骤: 正常现象。hermes-router在初始化完毕后会定期向Proxy Server发送推理引擎指标查询请求,因推理引擎实例初始化时加载大模型耗时较长,此时指标查询请求无法被正确响应。等待推理引擎实例启动完毕后该问题不会出现。
-
hermes-router以及cache-indexer无法发现推理服务。
现象描述: 通过查看Pod日志发现hermes-router以及cache-indexer自动发现推理服务实例时报错。
处理步骤: 可能因为服务标签选择器配置错误。
hermes-router.app.discovery.labelSelector.app
和cache-indexer.app.serviceDiscovery.labelSelector
属性代表hermes-router以及cache-indexer对推理后端K8s Service资源的服务发现配置,需要与inference-backend.service.label
属性一致。