本文主要介绍使用容器服务(VKE)快速部署基于 Dynamo 和 vLLM 的 Qwen3-235B (PD 分离)模型推理服务。
方案介绍
本方案结合火山引擎的多项加速技术,提供在 Kubernetes 集群中快速部署 Qwen3-235B-A22B 模型的方法。
Qwen3 :由阿里云推出的最新一代通义千问大模型,它包含 2 款混合专家(MoE)与 6 款密集(Dense)模型,参数量从 0.6B 到 235B 不等,能满足多样化需求。 Dynamo :NVIDIA Dynamo 是一个开源、低延迟的模块化推理框架,用于在分布式环境中服务生成式 AI 模型。 GDKV 模型加速 :由火山引擎提供的基于 RDMA + GDR(GPU Direct RDMA)技术实现的模型极速加载方案。 弹性极速缓存(EIC) :由火山引擎存储团队面向大语言模型推理场景推出的高性能分布式 KV Cache 缓存服务。 PD 分离技术 :将推理过程分为两阶段,部署于不同硬件资源以优化性能: 部署信息
实例规格:ecs.hpcpni3ln.45xlarge 支持能力
观测:托管 Prometheus(VMP)、应用性能监控全链路版(APMPlus) 开源场景与该模版优化后的效果对比如下表所示。
说明
性能结果与机器规格、分发配置、网络带宽等相关,最终以实际测试结果为准。
使用说明
本实践涉及较多组件,相互间有依赖,配置复杂,为了获得符合预期的结果,请务必根据本文指引操作。 同时开启 GDKV 模型加速和 EIC 弹性极速缓存时,实例节点的内存可能成为瓶颈。如有性能需求,建议只开启 EIC,操作方式,详见: EIC 性能测试方法 。 为了获得符合预期的结果,同时符合容器服务的 使用限制 ,请按照本文方案(或在本文推荐的资源上)操作。如需替换方案,您可以联系对应的火山引擎客户经理咨询。 完整的部署流程,依赖部分火山引擎邀测能力,请联系火山引擎客户经理申请如下功能的邀测试用: 前提条件
创建高性能计算集群
高性能计算集群,用于实现高性能计算 GPU 实例(计算节点)的逻辑隔离,同一集群内实例间 RDMA 网络互联互通。详情请参见 创建高性能计算集群 。 说明
高性能集群所在的 地域和可用区 需要与 VKE 节点的 地域和可用区 一致。
创建 VKE 集群
在容器服务中创建集群,需要注意以下列举的参数配置。其余参数说明和详细的操作步骤,请参见 创建集群 。您也可以使用 异构计算托管集群模板 快速创建本场景使用的 VKE 集群。 操作步骤
步骤一:创建 EIC 实例
EIC 通过以存代算、GDR 零拷贝等方式大幅降低推理 GPU 资源消耗,优化推理时延。
根据界面提示配置实例参数,其中部分参数按如下说明配置,其余参数按需自定义配置。 单击页面右下角的 创建实例 。实例状态显示 运行中 ,表示 EIC 实例创建成功。 如果创建实例时发生错误,实例状态将转变为 创建失败 ,您可以将鼠标悬浮到实例状态上查询具体失败原因。确认原因后单击实例对应的 删除 按钮来销毁实例,然后重新创建实例。若无法自行处理,请联系火山引擎客户经理获取相关技术支持。 步骤二:确认 NATS 和 ETCD 需要的存储类
在 容器服务控制台 目标集群管理页面的 存储管理 > 存储类 页面,确认存在名为 ebs-ssd 的存储类,用于后续 NATS 和 ETCD 相关存储。 说明
该存储类在集群中安装 csi-ebs 组件后会自动创建。若无该存储类,请在集群中安装 csi-ebs 组件。详细操作,请参见 安装组件 。 步骤三:部署 qwen3-dynamo-vllm-pd
容器服务基于 Dynamo 和 vLLM 框架提供 PD(Prefill-Decode)分离的 Qwen3-235B-A22B 模型应用,可通过 应用模版 快速部署。
在 应用模板 页面,找到 qwen3-dynamo-vllm-pd 应用模板,单击 立即部署 。 在 部署应用 页面,配置 qwen3-dynamo-vllm-pd 服务参数。其中,部分参数按如下说明配置,其余参数根据界面提示或参考 应用模板 中的说明配置。 支持按需编辑修改 values.yaml 文件配置,部分参数说明如下表所示,建议保持默认配置。 如需启用 EIC,可按照如下代码块及其注释说明,修改应用的 values.yaml 文件配置。
instanceId: "eicydx97nk******"
endpoint: "192.168.xx.xx:12500;192.168.xx.xx:12500;192.168.xx.xx:12500"
ClientMultiNetLocalInterfaceNames: "eth1;eth2;eth3;eth4"
应用部署完成后会显示在 Helm 应用 页面。选择目标项目、集群、命名空间,找到已部署的 qwen3-dynamo-vllm-pd 应用,单击名称,进入详情页面查看该应用的基本信息、关联创建的工作负载、服务、其他资源等。 说明
其中, <应用名称>-qwen3-dynamo-vllm-pd 格式的服务,是该应用对外暴露的服务(Service)名称,后续配置路由、模型验证等步骤,需要关联该服务。
在 VKE 集群的 容器组 页面,查看 qwen3-dynamo-vllm-pd 应用对应的 Pod 状态。 在 容器服务控制台 左侧导航栏,选择 集群 ,找到目标集群并单击集群名称。 在目标集群管理页面选择 工作负载 > 容器组 ,然后搜索 qwen3-dynamo-vllm-pd 应用对应的名称,查看相关 Pod 的状态。 步骤四:配置路由
通过 APIG Ingress 配置模型路由。APIG Ingress 基于火山引擎 API 网关(API Gateway,APIG) 提供托管的云原生网关功能,实现高可用、高扩展的 Ingress 流量管理方式,满足在云原生应用场景下对业务流量稳定性和高可用性的需求。 在集群管理页面的左侧导航栏中,选择 服务与路由 > 路由规则 ,单击 创建路由规则 。使用 API 网关对外暴露集群内的模型服务。部分参数按如下说明配置,其余配置详情,请参见 通过控制台创建 APIG Ingress 。 创建消费者:在左侧导航栏选择 消费者管理 ,单击 创建消费者 。 生成 API-KEY :在消费者列表中,单击目标消费者名称,进入消费者详情页面。在 API Key 信息区域,单击 生成 API Key 。 在弹出的对话框内容选择 自动创建 API Key 认证信息。 启用 Key Auth 插件:在左侧导航栏选择 插件管理 > Key Auth插件 ,单击 创建插件 ,配置插件参数。 生效级别 :选择 路由级别 ,并配置插件所属实例、服务和路由。 认证配置 :选择 header ,并配置来源为 Authorization ,表示在请求头中的 Authorization 附带 API Key 认证信息。 在生产环境,请在域名提供商中配置 Ingress 的访问域名,且确保 Ingress 访问域名的 A 记录已配置 Ingress 的公网 IP 地址或者私网 IP 地址。 步骤五:开启观测配置
基础观测提供 AI 资源及推理服务的监控指标,深度观测提供推理应用的全链路性能监控服务。
基础观测
在集群管理页面的左侧导航栏中,选择 云原生观测 > 概览 ,单击 立即启用 ,开启云原生观测和容器服务观测。更多配置详情,请参见 开启观测 、 容器服务观测 。 开启观测后,Dynamo 指标会被采集到托管 Prometheus(VMP)服务,您可以在托管 Prometheus 控制台中使用 Explore 查询指标,示例如下: 您可以使用 VMP 预置面板查看 Dynamo 应用监控,在 VMP 服务控制台 ,选择 监控看板 ,搜索 dynamo ,可查看到如下示例所示的 Dynamo 应用看板: 登录上述 Grafana ,选择导入如下看板 JSON 文件。 dynamo_default_dashboard.json 深度观测
搜索以 Dynamo 为关键字的服务,单击服务名,进入观测看板页面。 在 服务总览 、 LLM性能 、 Token用量 等页签,可查看大模型核心指标与服务黄金指标,例如:大模型调用次数、Token 使用量、响应耗时、TTFT、TPOT、QPS、请求错误率等。 说明
TTFT、TPOT 指标需要流式调用才会产生相应指标。
curl localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
"model": "Qwen/Qwen3-235B-A22B",
"continuous_usage_stats": true
在 运行时监控 页签,可查看运行时相关监控信息,例如:CPU 耗时、CPU 使用率、内存使用、GC 对象数量、线程数量、上下文切换数量等。 从 Dynamo 应用的 Trace 分析页签,可以根据不同条件检索链路信息。单击目标 Trace ID,前往单链路详情页面。在列表视图中查看 Trace 信息。 模型验证
方式一:通过 Service 访问
部署 qwen3-dynamo-vllm-pd 应用模板后,关联创建的 <应用名称>-qwen3-dynamo-vllm-pd 格式名称的服务,提供 HTTP API 端点(8000 端口)。使用服务端点,可以按照 OpenAI 兼容 API 方式去调用。
示例代码如下所示。
说明
其中:
将 localhost:8000 替换为您 <应用名称>-qwen3-dynamo-vllm-pd 服务的端点。 content 参数的值,输入您与模型的对话内容。
curl localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
"model": "Qwen/Qwen3-235B-A22B",
"content": "In the heart of Eldoria, an ancient land of boundless magic and mysterious creatures, lies the long-forgotten city of Aeloria. Once a beacon of knowledge and power, Aeloria was buried beneath the shifting sands of time, lost to the world for centuries. You are an intrepid explorer, known for your unparalleled curiosity and courage, who has stumbled upon an ancient map hinting at ests that Aeloria holds a secret so profound that it has the potential to reshape the very fabric of reality. Your journey will take you through treacherous deserts, enchanted forests, and across perilous mountain ranges. Your Task: Character Background: Develop a detailed background for your character. Describe their motivations for seeking out Aeloria, their skills and weaknesses, and any personal connections to the ancient city or its legends. Are they driven by a quest for knowledge, a search for lost familt clue is hidden."
您可以在 qwen3-dynamo-vllm-pd 应用对应 Helm 应用详情页 的 工作负载 区域,选择任意一个网络连通的工作负载,跳转到详情页面,单击页面右上角 控制台 ,登录应用对应 Pod,进行 API 调用。
方式二:通过 APIG 方式访问
开启 API 网关的认证鉴权功能时,需要在请求中添加认证 Token。
示例代码如下所示。
说明
其中:
将 http://example.com 中的 example.com 替换为 步骤四:配置路由 中获取的 Ingress 后端服务访问域名。 eyJhbGciOiJSUzI****** 替换为 步骤四:配置路由 中生成的 API Key。 content 参数的值,输入您与模型的对话内容。
curl http://example.com/v1/chat/completions -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJSUzI******" \
"model": "Qwen/Qwen3-235B-A22B",
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"}