AI推理框架插件
插件简介
AI推理框架插件是一款面向AI模型全生命周期管理的云原生插件,支持用户通过声明式API自定义注册、部署及调度AI大模型,并高效执行推理任务。
前提条件
- 已创建v1.28及以上版本的CCE Standard/Turbo集群,且集群内已有Snt9B类型的NPU节点。
- 已安装LeaderWorkerSet插件,具体操作请参见LeaderWorkerSet插件。
- 已安装CCE AI套件(Ascend NPU)插件和Volcano插件,具体操作请参见CCE AI套件(NVIDIA GPU)和Volcano调度器。
- 已购买DDS服务,或已在集群中自行部署MongoDB数据库,用于存储推理实例产生的相关数据。
- 在模型部署中,需要提前购买OBS桶,具体操作请参见通过控制台快速使用OBS。
约束与限制
- 该特性当前正处于上线阶段,已发布区域请以控制台实际为准。
- 该插件处于公测阶段,您可体验最新插件特性,但需要注意该版本的稳定性未得到完全的验证,不适用于CCE服务SLA。
安装插件
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中选择“插件中心”,在右侧找到AI推理框架插件,单击“安装”。
- 在安装插件页面,进行相关配置。
表1 插件规格配置 参数
参数说明
选择版本
表示插件版本,请按需选择。
插件规格
当前仅支持“默认”规格。
mongodbUrl
表示DDS服务访问地址或集群中MongoDB数据库服务访问地址,请参见前提条件。
enableLocalStorage
表示是否使用本地数据库。
- true:表示使用集群中的MongoDB数据库。
- false:表示使用DDS服务。
- 配置完成后,请在右下角单击“安装”。AI推理框架插件状态变为“运行中”时,则说明安装成功。
组件说明
容器组件 |
说明 |
资源类型 |
---|---|---|
frontend |
提供统一的API网关服务,负责处理用户请求的路由转发。 创建该组件时,插件将自动为该组件创建名为frontend-service的ClusterIP服务,用于为该组件提供稳定的网络访问入口。 |
Deployment |
model-job-executor |
负责AI模型全生命周期管理,包括模型的注册、部署、删除等核心功能。 |
Deployment |
chat-job-executor |
专为AI推理任务设计的执行引擎,提供低延迟、高并发的模型推理服务。 |
Deployment |
task-executor-manager |
根据当前系统资源的负载情况,实现 GPU/NPU 等硬件资源的动态调度和故障隔离。 |
Deployment |
模型模板
AI推理框架插件已内置针对主流AI模型的预定义部署模板,用户无需手动编写复杂配置文件,可通过声明式API直接调用模板并快速部署模型。模板中已适配常见模型的参数、资源需求及硬件配置,能够有效降低部署的门槛。
该插件已提供以下主流模型的预置模板,您可以参考模型部署示例,部署并使用相关模型。
模型类型 |
NPU资源类型 |
---|---|
DeepSeek-R1-Distill-Qwen-7B |
huawei.com/ascend-1980 |
DeepSeek-R1-Distill-Llama-8B |
huawei.com/ascend-1980 |
DeepSeek-R1-Distill-Qwen-14B |
huawei.com/ascend-1980 |
DeepSeek-R1-Distill-Qwen-32B |
huawei.com/ascend-1980 |
DeepSeek-R1-Distill-Llama-70B |
huawei.com/ascend-1980 |
QwQ-32B |
huawei.com/ascend-1980 |
Qwen2.5-Coder-32B-Instruct |
huawei.com/ascend-1980 |
Qwen2.5-32B-Instruct |
huawei.com/ascend-1980 |
Qwen2.5-72B-Instruct |
huawei.com/ascend-1980 |
AI推理框架插件内置模型的预置模板示例(AI推理框架插件已提供,用户无需操作):
apiVersion: leaderworkerset.x-k8s.io/v1 kind: LeaderWorkerSet metadata: namespace: ${namespace} name: ${name} labels: xds/version: ${helm_revision} spec: replicas: ${replicas} leaderWorkerTemplate: leaderTemplate: metadata: labels: xds/instanceType: head xds/teGroupId: ${te_group_id} xds/modelId: ${model_id} xds/teGroupType: ${te_group_type} spec: containers: - name: ascend-vllm-arm64 image: ${leader_image} env: - name: HF_HUB_OFFLINE value: "1" - name: INFER_MODE value: DEFAULT - name: USE_MASKFREE_ATTN value: "1" - name: MASKFREE_ATTN_THRESHOLD value: "16384" args: [ "--model", "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", "--max-num-seqs", "256", "--max-model-len", "2048", "--max-num-batched-tokens", "4096", "--block-size", "128", "--gpu-memory-utilization", "0.9", "--trust-remote-code", "--served-model-name", "${model_name}" ] imagePullPolicy: IfNotPresent resources: limits: cpu: "8" memory: 72Gi huawei.com/ascend-1980: "1" requests: cpu: "1" memory: 64Gi huawei.com/ascend-1980: "1" ports: - containerPort: 8000 volumeMounts: - name: models mountPath: /workspace/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B subPath: ${model_path} readOnly: true readinessProbe: initialDelaySeconds: 5 periodSeconds: 5 failureThreshold: 3 httpGet: path: /health port: 8000 livenessProbe: initialDelaySeconds: 180 periodSeconds: 5 failureThreshold: 3 httpGet: path: /health port: 8000 volumes: - name: models persistentVolumeClaim: claimName: ${pvc_name} size: 1 workerTemplate: spec: containers: []
模型部署
AI推理框架插件提供一套完整的AI模型部署方案,支持用户通过声明式API快速完成模型的注册、资源配置及部署。本章以部署“DeepSeek-R1-Distill-Qwen-7B”模型为例,介绍如何使用AI推理框架插件部署AI模型,涵盖从准备工作到部署验证的完整流程。
- 登录集群对应的NPU节点,并通过kubectl连接集群。
- 执行以下步骤,创建PVC,并将模型权重文件存储至PVC中,本步骤以对象存储PVC形式为例。在后续步骤中,模型权重将通过PVC挂载至对应的推理实例中,以提高推理性能。
本步骤支持使用两种PVC,具体对比如下:
- 对象存储PVC :用于长期存储模型权重文件,成本较低但访问速度较慢。使用“对象存储”类型PVC(如OBS等)时,建议额外挂载“极速文件存储”类型PVC作为缓存,以加速模型加载速度。
- 极速文件存储PVC :用于缓存模型权重文件,提供低延迟访问,缩短模型加载时间。
- 创建对象存储类型的PVC,具体请参考通过静态存储卷使用已有对象存储。
- 登录OBS控制台,在左侧导航栏单击“桶列表”,右侧单击对应的桶名称,进入该桶的“对象”页面。在当前页面,右侧单击“上传对象”,将模型权重文件上传至对应路径。上传操作将产生请求费用,上传成功后将产生存储费用。
图1 上传模型权重文件
- 执行以下命令,通过API的方式注册模型元数据,从而定义模型的基本信息、资源需求、存储配置及服务等级目标(SLO)。注册成功后,AI推理框架插件将在对应集群中创建AI模型实例及Service。
curl --location 'https://{endpoint}/v1/models' \ --header 'Content-Type: application/json' \ --data '{ "name": "DeepSeek-R1-Distill-Qwen-7B", # 表示创建的模型示例名称,支持自定义 "type": "DeepSeek-R1-Distill-Qwen-7B", "resource_type": "huawei.com/ascend-1980", # 硬件类型 "version": "1.0.0", "max_instance": 4, # 最大副本数 "min_instance": 2, # 最小副本数 "pvc": { "name": "release-models", "path": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B" # 模型权重文件在PVC中的路径 }, "slo": { "target_time_to_first_token_p95": 1000, # 首次响应时间(毫秒) "target_time_per_output_token_p95": 20 # 每token处理时间(毫秒) }, "description": "This is model description." }'
表4 参数说明 参数
示例
说明
endpoint
frontend-service.kube-system.cluster.local
请填入frontend-service的服务的访问地址,可通过服务名或ClusterIP进行访问。
resource_type
"huawei.com/ascend-1980"
表示资源类型,仅支持huawei.com/ascend-1980。
max_instance
4
表示模型实例的弹性伸缩的最大副本数。
min_instance
2
表示模型实例的弹性伸缩的最小副本数。
pvc
- "name": "release-models",
- "path": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B"
请填写2中PVC的名称以及模型权重文件在PVC中的存储路径。
slo
- "target_time_to_first_token_p95": 1000
- "target_time_per_output_token_p95": 20
用于设置服务性能目标,如P95分位的首次响应时间(target_time_to_first_token_p95)和每token处理时间(target_time_per_output_token_p95)。
当超过设置的性能目标后,系统将自动进行推理实例的弹性伸缩。关于推理实例弹性伸缩的具体介绍,请参见模型实例弹性伸缩。
- 执行以下命令,通过API获取已注册模型实例的状态,包括副本数量、健康状态等。
curl --location 'https://{endpoint}/v1/models' # 查询所有模型状态 curl --location 'http://{endpoint}/v1/models/d97051120764490daf846053e16d4f25' # 查询指定模型状态
回显结果如下,status为ACTIVE,则说明模型处于正常运行状态。
{"model":{"id":"d97051120764490daf846053e16d4f25","name":"DeepSeek-R1-Distill-Qwen-7B","type":"DeepSeek-R1-Distill-Qwen-7B","resource_type":"huawei.com/ascend-1980","max_instance":2,"min_instance":1,"pvc":{"name":"release-models","path":"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B"},"slo":{"target_time_to_first_token_p95":1000,"target_time_per_output_token_p95":20},"description":"This is model description.","status":"ACTIVE","status_code":"","status_msg":"","created_at":"2025-04-29T17:10:08.673Z","updated_at":"2025-04-29T18:31:07.164Z"}}
- 执行以下命令,向已注册的模型实例发送推理请求。
请求推理前,需等待模型状态已就绪,否则请求可能失败或返回错误。
curl --location 'https://{endpoint}/v1/chat/completions' \ --header 'Content-Type: application/json' \ --data '{ "model": "DeepSeek-R1", "messages": [ { "role": "user", "content": "strawberry中有几个字母r" } ], "stream": true }'
表5 参数说明 参数
示例
说明
messages
- "role": "user"
- "content": "strawberry中有几个字母r"
提供角色、问题等信息,获取对应结果。
stream
true
用于指定对话模式,具体取值如下:
- true:表示启用流式输出模式,实时返回生成的token。
- false:表示关闭流式输出模式,将全部token生成后一次性返回。
回显结果如下:
- 如果当前模型实例已无法满足需要,请通过PUT请求更新已注册模型实例的配置。例如,将模型实例弹性伸缩的最大副本数由4调整为6。
curl --location --request PUT 'https://{endpoint}/v1/models/d97051120764490daf846053e16d4f25' \ --header 'Content-Type: application/json' \ --data '{ "max_instance": 6 # 将最大副本数从4调整为6 }'
回显结果如下:
{"model":{"id":"d97051120764490daf846053e16d4f25","name":"DeepSeek-R1-Distill-Qwen-7B","type":"DeepSeek-R1-Distill-Qwen-7B","resource_type":"huawei.com/ascend-1980","max_instance":6,"min_instance":1,"pvc":{"name":"release-models","path":"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B"},"slo":{"target_time_to_first_token_p95":1000,"target_time_per_output_token_p95":20},"description":"This is model description.","status":"ACTIVE","status_code":"","status_msg":"","created_at":"2025-04-29T17:10:08.673Z","updated_at":"2025-04-29T18:31:07.164Z"}}
- 当模型实例使用完成时,您可以通过DELETE请求删除该实例,释放相关资源。删除操作不可逆,需谨慎操作,建议先停止服务再删除。
curl --location --request DELETE 'https://{endpoint}/v1/models/a3c390d311f0455f8e0bc18074404a44'
如无报错信息,则表示正常删除。
通过以上步骤,用户可完成模型从注册到删除的全生命周期管理。
插件特性
AI推理框架插件支持模型实例自动弹性伸缩和KV Cache能力,具体介绍如下:
vLLM 框架的KV Cache实现
AI推理框架插件基于vLLM(高性能推理框架)实现KV Cache,其核心特性包括:
- 动态分块
- 分块策略:将输入序列划分为固定大小的块(--block-size 参数),每个块独立计算并缓存KV值。
- 优势:
- 支持灵活调整块大小,平衡内存占用与计算效率。
- 适用于不同长度的输入序列(如对话历史、长文本生成)。
- 内存优化
- 显存利用率:通过--gpu-memory-utilization参数(默认0.9)动态分配显存,最大化GPU资源利用率。
- 共享缓存:多个并行请求可共享KV缓存,减少重复计算。
- 并行推理
- 多序列支持:--max-num-seqs 参数定义单个实例可并行处理的最大请求数(如256)。
- 分片部署:对于超大规模模型(如70B参数),通过模型分片和KV Cache分片实现分布式推理。
版本记录
插件版本 |
支持的集群版本 |
更新特性 |
---|---|---|
1.0.0 |
v1.28 v1.29 v1.30 v1.31 |
CCE Standard/Turbo集群支持使用AI推理框架插件 |