跳转至

自定义大模型推理运行时

当前平台大模型推理服务支持 vLLM、SGLang 以及图像生成三种内置运行时。为了满足更多场景需求,提供自定义运行时的能力,用户可以根据自身业务需求,自由定义新的运行时类型,并配置其启动脚本、运行参数等相关信息,从而实现更灵活的推理服务部署。

您可以参考下列操作步骤来配置并使用 Hydra 提供的自定义运行时功能。

全局服务集群中添加自定义运行时

  1. 进入全局服务集群,点击 配置与密钥 -> 配置项,搜索并查找hydra-runtime-template,其中config.yaml文件用于定义运行时模板。

    查找配置项 运行时模版

  2. 点击 编辑YAML,修改config.yaml文件,添加自定义运行时。

    编辑YAML

    config.yaml 对应的结构如下:

    templates:
      - runtime: string            # 运行时类型英文 (如: vllm),必填
        runtimeZH: string          # 运行时类型中文
        podTemplate:               # Pod 模板定义
          initContainers: []       # 初始化容器,同 k8s 资源定义
          podSecurityContext: {}   # Pod 安全上下文,同 k8s 资源定义
          volumes: []              # 卷定义,同 k8s 资源定义
          containerTemplate:       # 容器模板
            commandTemplate:       # 启动命令模板,数组,使用 go template 语法
              - ""
            argsTemplate:          # 启动参数模板,数组,使用 go template 语法
              - ""
            volumeMounts: []       # 卷挂载,同 k8s 资源定义
            ports: []              # 端口,同 k8s 资源定义
            securityContext: {}    # 容器安全上下文,同 k8s 资源定义
    
    添加 vllm-cpu 运行时模版示例

    templates:
      - runtime: vllm-cpu
        runtimeZH: vLLM
        podTemplate:
          containerTemplate:
            commandTemplate:
              - "/bin/bash"
              - "-c"
            argsTemplate:
              - |-
                {{- if .IS_DISTRIBUTED -}}
                  {{- if .IS_LEADER -}}
                    ray start --head --port={{ .RAY_PORT }} && vllm serve {{ .MODEL_PATH }} --served-model-name {{ .MODEL_NAME }} --trust-remote-code --tensor-parallel-size={{ .TP_SIZE }} --pipeline-parallel-size={{ .PP_SIZE }}
                  {{- else -}}
                    ray start --block --address=$(LWS_LEADER_ADDRESS):{{ .RAY_PORT }}
                  {{- end -}}
                {{- else -}}
                  vllm serve {{ .MODEL_PATH }} --served-model-name {{ .MODEL_NAME }} --trust-remote-code {{- if gt .TP_SIZE 1 }} --tensor-parallel-size {{ .TP_SIZE }} {{- end -}}
                {{- end -}}
                {{- if .CUSTOM_ARGS -}} {{ range .CUSTOM_ARGS }} {{ . }} {{- end -}} {{- end -}}
    

    可用变量说明

    模板中的变量请根据实际情况设置,可用变量包括:

    • RUN_TIME : 运行时类型,如 vllm, image-gen, sglang, mindie 等
    • MODEL_NAME: 模型名称,比如 vllm 的 --served-model-name 参数
    • IS_DISTRIBUTED: 是否分布式部署
    • MODEL_PATH: 模型路径, 目前是固定的 /data/serving-model
    • IS_LEADER: 是否是分布式的 leader 节点
    • TP_SIZE: 张量并行数
    • PP_SIZE: 流水线并行数
    • MODEL_ID:模型ID
    • CLUSTER:部署集群
    • NAMESPACE:部署的命名空间
    • MODEL_HOST:模型部署的服务地址,目前是固定的 0.0.0.0
    • MODEL_PORT:模型部署的服务端口,目前是固定的 8000

    CUSTOM_ARGS 参数说明

    为了减少配置复杂度,目前会将部署模版中配置的参数和 hydra-agent 中配置的参数,单独作为一个 CUSTOM_ARGS 的变量传入模板中,建议使用下面的方式:

    • 在 commandTemplate 中只定义启动命令,例如 "/bin/bash -c",它会被渲染成 container 的 command。 在 argsTemplate 的最后添加 {{- if .CUSTOM_ARGS -}} {{ range .CUSTOM_ARGS }} {{ . }} {{- end -}} {{- end -}},以此来保证自定义的参数也可以被正确渲染。
    • 如果不定义 template,则使用 model_deployment 和 hydra-agent 中配置的参数做为 container 的参数。
    • 如果没有定义 commandTemplate,则需要注意 argsTemplate 中应该是多行,而不是单行的 args, 并且 args 之间使用 等号 连接,如 --model={{ .MODEL_PATH }}
    • command 采用了 /bin/bash -c 的方式,因为这种方式要求 args 是单行的字符串,因此需要将 CUSTOM_ARGS 添加到模版中。
    • 没有指定 command,args 是多行的数组,这种方式不需要将 CUSTOM_ARGS 添加到模版中,我们会自动将 CUSTOM_ARGS 添加到最终渲染出的 args 中,避免解析 args 出错。

工作集群中添加镜像信息

  1. 进入工作集群,点击 配置与密钥 -> 配置项,搜索并查找hydra-agent,在configmap/deployment_templates中添加自定义运行时的镜像信息和算力匹配信息。

    查找配置项

  2. 点击**编辑YAML**,修改configmap文件,添加自定义运行时的镜像信息。

YAML 示例

deployment_templates:
  - match_runtimes: [vllm-cpu] # 自定义运行时名称
    match_gpu_types: [cpu] # 运行环境算力
    container_template: 
      image: # 自定义运行时镜像
        registry: swr.cn-south-1.myhuaweicloud.com
        repository: ascendhub/mindie
        tag: 2.1.RC1

添加镜像信息

开始使用

完成以上操作后,运维管理员可以在部署配置中选择自定义运行时,并配置模型部署信息。

部署配置

评论