生成部署定义yaml
基于KubeInfer的部署,关键是定义部署所需的yaml文件,当前方案提供了相关脚本来帮助您生成基于KubeInfer部署的yaml文件(该脚本依赖kubeinfer_yaml_tools.py),通过执行下述命令生成部署所需的yaml文件:
python3 gen_pd_deploy_kubeinfer_yaml.py [--device-type=xx] [--num-roles=xx] [--replicas=xx] [--image-name=xx] [--mount-path=xx] [--script-path=xx] [--common-params="xxx"] [--scheduler-params="xxx"] [--prefill-params="xxx"] [--decode-params="xxx"] [--file-name=xx]

当前脚本自动生成的基于KubeInfer部署的yaml文件默认包含下述能力:
- 针对该kubeinfer实例默认创建NodePort类型的K8s service,对外nodePort默认为30090。如果您要在同一个K8s集群中部署多个kubeinfer实例,注意非单kubeinfer多instance,则要确保这个nodePort为不同的值。其中推理实例端口信息详见推理部署端口规划与冲突操作指导。
- 故障恢复机制默认为instance级重调度,默认配置KubeInfer自动感知恢复机制和K8s的三大探针。
- 容器默认配置了优雅退出时间,默认为120s。如果您的业务有需求需要修改这个时间,需要修改yaml中每个role定义里的优雅退出时间配置,详见基于KubeInfer的部署yaml文件说明。
- 获取权重文件规划的存储路径默认为”/mnt/deepseek”,会以相同路径挂载至Pod。如果您的路径不一致需要修改yaml文件中每个role定义里的挂载路径信息,详见基于KubeInfer的部署yaml文件说明,参考如下:
containers: - ... volumeMounts: - mountPath: /mnt/deepseek/ # 容器中权重挂载目录 name: deepseek ... volumes: ... - hostPath: path: /mnt/deepseek/ # 模型权重在外部存储上的路径 type: Directory name: deepseek
- 推理服务日志、CANN NPU plog和ray的日志默认挂载至主机上的目录,详细说明见推理层日志采集与转储。
- 默认配置升级策略为”一上一下”的滚动升级策略,如果您的业务有需要修改这个策略,需要修改yaml中定义,详见基于KubeInfer的部署yaml文件说明。
- yaml中默认调用了版本包中的启动脚本,该脚本支持可传入的参数参考表2,除此之外,用户还可以追加标准的vLLM启动参数。示例:如果用户部署DeepSeek系列想开启Multi Step功能,可以新增以下启动参数:
--num-scheduler-steps=4
参数 |
约束 |
描述 |
默认值 |
---|---|---|---|
--device-type |
可选 |
节点类型,值为A2或者A3。 |
A3 |
--num-roles |
必选 |
KubeInfer角色个数,例如2P1D则为3,详见KubeInfer部署方案介绍。 |
- |
--replicas |
可选 |
kubeinfer实例instance数,对应K8s概念中的副本数。 |
1 |
--image-name |
必选 |
推理镜像名称,即为获取推理镜像中制作的镜像。 |
- |
--mount-path |
可选 |
存储配置中挂载的目录,该目录下存放权重和脚本文件。 |
/mnt/deepseek |
--script-path |
可选 |
部署推理服务依赖的脚本文件路径。
须知:
必须是--mount-path指定的目录的子目录。 |
/mnt/deepseek/deploy |
--common-params |
必选 |
部署推理服务的特性参数和公共的启动参数,参考表2及参数类型。
须知:
值必须用双引号包裹。 |
- |
--scheduler-params |
必选 |
部署推理服务scheduler、prefill、decode分别对应的启动参数,参考表2及参数类型。
须知:
值必须用双引号包裹,多个环境变量以空格分隔。 |
- |
--prefill-params |
必选 |
- |
|
--decode-params |
必选 |
- |
|
--file-name |
可选 |
生成的yaml文件名。 |
infer_vllm_kubeinfer.yaml |
参数 |
约束 |
参数类型 |
描述 |
---|---|---|---|
--tmpfs-path |
可选 |
特性参数 |
基于tmpfs配置内存缓存(可选)配置的内存缓存权重文件。
须知:
|
--enable-fusion-spec |
可选 |
特性参数 |
MTP特性,需要使用融合权重。开启特性值为1,否则为0。 |
--enable-trace-log |
可选 |
特性参数 |
使用trace log值为1,否则为0。开启该功能会影响部分性能。 |
--vllm-log-path |
可选 |
特性参数 |
采集vLLM框架日志,开启特性需要指定滚动日志保存的路径。不开启时,日志保存在容器内/home/ma-user/AscendCloud/logs。 日志采集功能的使用详见推理层日志采集与转储。 |
--torchair-cache-home |
可选 |
特性参数 |
图编译缓存功能,开启特性需要指定共享盘路径。 图编译缓存功能的使用详见PD分离部署下图编译缓存使用操作。 |
--extra-env-vars |
可选 |
特性参数 |
额外要设置的环境变量,参考表3。
须知:
值必须用单引号包裹,多个环境变量以逗号分隔。 |
--model |
必选 |
启动参数 |
对应vLLM入参--model,模型权重所在路径,路径中不能包含英文符号"."。
须知:
要求该目录必须是--mount-path指定的目录的子目录。 |
--served-model-name |
可选 |
启动参数 |
对应vLLM入参--served-model-name。 |
--max-model-len |
可选 |
启动参数 |
对应vLLM入参--max-model-len。 |
--gpu-memory-utilization |
可选 |
启动参数 |
对应vLLM入参--gpu-memory-utilization。 |
--scheduler-params |
必选 |
启动参数 |
部署推理服务scheduler、prefill、decode分别对应的特殊参数。
须知:
必须显式指定各角色的--max-num-seqs,其他参数按需配置。 |
--prefill-params |
必选 |
启动参数 |
|
--decode-params |
必选 |
启动参数 |
|
其他vLLM支持的参数,用法同vLLM |
- |
参数 |
描述 |
---|---|
LLM_WAITING_OUT |
LLM_WAITING_OUT,支持请求排队超时。 |
ENABLE_MAX_TOKENS_EXCLUDE_REASONING |
开启max_tokens参数只控制思维链之后的输出长度,值为1时开启。 |
DEFAULT_MAX_TOKENS |
在请求中未设置max_tokens时,系统默认值。 |
脚本中vLLM启动命令参数如下:
# scheduler sh ${LLM_TOOLS_PATH}/PD_separate/start_servers.sh \ --host=0.0.0.0 \ --port=${PORT} \ --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} \ --dtype=auto \ --trust-remote-code \ --disable-log-requests ${SCHEDULER_PARAMS} ${mtp_param} "${EXTRA_ARGS[@]}" # prefill sh ${LLM_TOOLS_PATH}/PD_separate/start_servers.sh \ --host=0.0.0.0 \ --port=${PORT} \ --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} \ --dtype=auto \ --trust-remote-code \ --disable-log-requests \ --block-size=128 \ --distributed-executor-backend=ray \ --gpu-memory-utilization=${GPU_MEMORY_UTILIZATION} ${PREFILL_PARAMS} ${mtp_param} "${EXTRA_ARGS[@]}" # decode sh ${LLM_TOOLS_PATH}/PD_separate/start_servers.sh \ --host=0.0.0.0 \ --port=${PORT} \ --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} \ --dtype=auto \ --trust-remote-code \ --disable-log-requests \ --block-size=128 \ --distributed-executor-backend=ray \ --gpu-memory-utilization=${GPU_MEMORY_UTILIZATION} ${DECODE_PARAMS} ${mtp_param} "${EXTRA_ARGS[@]}"