昇腾社区首页
中文
注册
开发者
下载

准备任务YAML

用户可根据实际情况完成制作镜像的准备工作,然后选择相应的YAML示例,对示例进行修改。

前提条件

已完成镜像的准备工作。vLLM推理镜像可参考vllm-ascend官方文档获取

选择YAML示例

当前,基于AIBrix框架的vllm-ascend推理任务由StormService自定义CRD部署,StormService的使用和部署请参见Aibrix StormService文档。StormService的YAML示例请参见YAML

AIBrix官方提供的示例均基于GPU,使用NPU时需要适配,以下是一个适配示例,用户可根据实际需求进行修改。

apiVersion: orchestration.aibrix.ai/v1alpha1
kind: StormService
metadata:
  name: "my-test"
  namespace: "default"
spec:
  replicas: 1                # 当前不支持修改,仅为1
  updateStrategy:
    type: "InPlaceUpdate"
  stateful: true
  selector:
    matchLabels:
      app: "my-test"
  template:
    metadata:
      labels:
        app: "my-test"
    spec:
      roles:
        - name: "prefill"         # prefill定义
          replicas: 1             # prefill副本数
          podGroupSize: 1         # prefill Pod副本数
          stateful: true          # 当前仅支持设置为true
          template:
            metadata:
              labels:
                model.aibrix.ai/name: "qwen3-moe"  # aibrix所需label,根据实际情况填写
                model.aibrix.ai/port: "8000"
                model.aibrix.ai/engine: "vllm"
                fault-scheduling: "force"          # 开启重调度
                pod-rescheduling: "on"         # 如果podGroupSize为1,pod-rescheduling需要配置为"on";如果podGroupSize大于1,则不需要配置,删除该参数。
              annotations:
                huawei.com/schedule_minAvailable: "1" # Gang调度策略下最小调度的副本数,在StormService中所有podGroupSize为1的实例会组成一个podGroup进行调度,其最小调度的副本数范围为[1, 实例replicas之和],建议配置为实例replicas之和;podGroupSize大于1的实例各自组成一个podGroup,其最小调度的副本数范围为[1, podGroupSize],建议配置为podGroupSize。例如,prefill实例的podGroupSize为1,decode实例的podGroupSize为2,则prefill实例的最小调度副本数设置为prefill实例的replicas,decode实例的最小调度副本数设置为decode实例的podGroupSize。
                huawei.com/recover_policy_path: "pod"  # pod-rescheduling为"on"时任务执行恢复的路径。设置为"pod",表明Pod级重调度失败时,不升级到Job级重调度。因为当前podGroup中的每一个Pod都是一个独立的实例,所以其故障处理不能扩散到其他实例。
            spec:
              schedulerName: volcano           # 指定调度器为Volcano
              nodeSelector:
                accelerator-type: "module-a3-16-super-pod"  # 根据硬件形态设置
              containers:
                - name: prefill
                  image: vllm-ascend:xxx        # 镜像名称
                  ...
                  resources:
                    limits:
                      "huawei.com/Ascend910": 16  # 配置NPU数量
                    requests:
                      "huawei.com/Ascend910": 16
        ...                  
        - name: decode       # decode定义
          replicas: 1        # decode副本数
          podGroupSize: 2    # decode pod副本数
          stateful: true
          template:
            metadata:
              labels:
                model.aibrix.ai/name: "qwen3-moe"
                model.aibrix.ai/port: "8000"
                model.aibrix.ai/engine: vllm
                fault-scheduling: "force"    # 开启重调度
              annotations:
                huawei.com/schedule_minAvailable: "2" # 见prefill实例参数说明
            spec:
              schedulerName: volcano
              nodeSelector:
                accelerator-type:  "module-a3-16-super-pod"
              containers:
                - name: decode
                  image: vllm-ascend:xxx
                  
                  ...
                  resources:
                    limits:
                      "huawei.com/Ascend910": 16  # 配置NPU数量
                    requests:
                      "huawei.com/Ascend910": 16
        ...
        - name: routing    # routing定义
          replicas: 1      # routing副本数
          stateful: true
          template:
            spec:
              containers:
              - name: router
                image: xxx:yyy   # routing镜像
                ...