更新时间:2025-09-08 GMT+08:00
分享

生成部署定义yaml

基于KubeInfer的部署,关键是定义部署所需的yaml文件,当前提供了相关脚本来帮助您生成基于KubeInfer部署的yaml文件,通过执行下述命令生成部署所需的yaml文件。

python3 gen_single_role_deploy_kubeinfer_yaml.py [--replicas=xx] [--role-size=xx] [--image-name=xx] [--resource-npu] [--resource-cpu] [--resource-mem] [--mount-path=xx] [--script-path=xx] [--parameters="xxx"] [--file-name=xx]
  1. 针对该实例默认创建NodePort类型的K8s service,对外nodePort默认为30090。如果您要在同一个K8s集群中部署多个kubeinfer实例,注意非单kubeinfer多instance,则要确保这个nodePort为不同的值。
  2. 故障恢复机制默认为instance级重调度,默认配置KubeInfer自动感知恢复机制和K8s的三大探针。
  3. 容器默认配置了优雅退出时间,默认为120s。如果您的业务有需求需要修改这个时间,需要修改yaml中每个role定义里的优雅退出时间配置,详见基于KubeInfer的部署yaml文件说明
  4. 获取权重文件规划的存储路径默认为”/mnt/deepseek”,会以相同路径挂载至Pod。如果您的路径不一致需要修改yaml文件中每个role定义里的挂载路径信息,详见基于KubeInfer的部署yaml文件说明,参考如下:
    containers:
      - ...
        volumeMounts:
          - mountPath: /mnt/deepseek/    # 容器中权重挂载目录
            name: deepseek
    ...
    volumes:
      ...
      - hostPath:
          path: /mnt/deepseek/           # 模型权重在外部存储上的路径
          type: Directory
        name: deepseek
  5. NPU CANN plog默认挂载至主机上”/var/log/ascend_plog”目录,详细说明见推理层日志采集与转储
  6. 默认配置升级策略为”一上一下”的滚动升级策略,如果您的业务有需要需要修改这个策略,需要修改yaml中定义,详见基于KubeInfer的部署yaml文件说明
  7. yaml中默认调用了版本包中的启动脚本,该脚本支持可传入的参数参考表2,除此之外,用户还可以追加标准的vLLM启动参数。示例:如果用户部署Qwen3系列想开启Function call功能,可以新增以下启动参数:
    --enable-auto-tool-choice --tool-call-parser=hermes --chat-template=tool_chat_template_hermes.v1.jinja
表1 生成yaml脚本参数说明

参数

约束

描述

默认值

--replicas

可选

KubeInfer实例instance数,对应K8s概念中的副本数。

1

--role-size

可选

KubeInfer实例中每个实例的Pod个数。

1

--custom-labels

可选

KubeInfer部署支持自定义标签,格式为json。

-

--image-name

必选

推理镜像名称,即为获取推理镜像中制作的镜像。

-

--resource-npu

必选

Pod申请使用的NPU卡数,根据Snt9bx资源规划需要使用的卡数配置资源。

-

--resource-cpu

必选

Pod申请使用的CPU核数。

-

--resource-mem

必选

Pod申请使用的内存大小。

-

--mount-path

可选

存储配置中挂载的目录,该目录下存放权重和脚本文件。

/mnt/deepseek

--script-path

可选

部署推理服务依赖的脚本文件路径。

须知:

必须是--mount-path指定的目录的子目录。

/mnt/deepseek/deploy

--parameters

必选

部署推理服务的启动参数,参考表2

须知:

值必须用双引号包裹。

-

--file-name

可选

生成的yaml文件名。

infer_vllm_kubeinfer.yaml

表2 单机部署脚本启动命令说明

参数

约束

参数类型

参数说明

--tmpfs-path

可选

特性参数

基于tmpfs配置内存缓存(可选)配置的内存缓存权重文件。

须知:
  • 该缓存能被使用的前提是已正确拷贝权重文件到tmpfs目录中,且要保证权重文件的完整性
  • 要求该目录必须是--mount-path指定的目录的子目录。

--extra-env-vars

可选

特性参数

额外要设置的环境变量。

须知:
  • 值必须用单引号包裹,多个环境变量以逗号分隔。
  • 不同模型所需的环境变量配置见启动推理服务(大语言模型)中的环境变量配置说明。注意传统Dense模型和MOE模型在环境变量配置上有区别,同时使用Snt9b和Snt9b23资源部署下环境变量配置上也有区别。

--model

必选

启动参数

对应vLLM入参--model,模型权重所在路径,路径中不能包含英文符号"."。

须知:

要求该目录必须是--mount-path指定的目录的子目录。

--served-model-name

可选

启动参数

对应vLLM入参--served-model-name。

--max-num-seqs

可选

启动参数

对应vLLM入参--max-num-seqs。

--max-model-len

可选

启动参数

对应vLLM入参--max-model-len。开启APC时,最大序列长度为32K。

--gpu-memory-utilization

可选

启动参数

对应vLLM入参--gpu-memory-utilization。开启APC时,需要设置为0.85。

--tensor-parallel-size

必选

启动参数

对应vLLM入参--tensor-parallel-size,设置为部署所需卡数。

其他vLLM支持的参数,用法同vLLM

说明:

不同特性参数使用详见推理关键特性使用

说明:脚本中vLLM启动命令如下

python -m vllm.entrypoints.openai.api_server \
    --host=0.0.0.0 \
    --port=9000 \
    --model=${MODEL} \
    --served-model-name=${SERVED_MODEL_NAME} \
    --max-model-len=${MAX_MODEL_LEN} \
    --max-num-batched-tokens=${MAX_MODEL_LEN} \
    --max-num-seqs=${MAX_NUM_SEQS} \
    --tensor-parallel-size=${TENSOR_PARALLEL_SIZE} \
    --gpu-memory-utilization=${GPU_MEMORY_UTILIZATION} \
    --block-size=128 \
    --dtype=auto \
    --trust-remote-code \
    --disable-log-requests "${EXTRA_ARGS[@]}"

相关文档