LL推理运行时 - 多节点推理

type
status
date
slug
summary
tags
category
icon
password
网址
本指南提供了使用 Hugging Face 的 vLLM 服务运行时设置多节点和多 GPU 推理的分步说明。在继续之前,请确保您满足以下前提条件并了解此设置的限制。

前提条件

  • 多节点功能仅在RawDeployment模式下支持。
  • 多节点设置不支持自动扩缩容
  • 多节点配置需要持久卷声明(PVC),且必须支持ReadWriteMany(RWX)访问模式。

关键验证

  • TENSOR_PARALLEL_SIZEPIPELINE_PARALLEL_SIZE不能通过环境变量设置。它们必须分别通过workerSpec.tensorParallelSizeworkerSpec.pipelineParallelSize进行配置。
  • 在为多节点设计的 ServingRuntime 中,必须同时设置workerSpec.tensorParallelSizeworkerSpec.pipelineParallelSize
  • workerSpec.tensorParallelSize的最小值为1workerSpec.pipelineParallelSize的最小值为2
  • 目前允许四种 GPU 类型:nvidia.com/gpu默认),intel.com/gpuamd.com/gpuhabana.ai/gaudi
  • 您可以通过 InferenceService 指定 GPU 类型,但如果它与 ServingRuntime 中设置的不同,两种 GPU 类型都将被分配给资源。这可能会导致问题。
  • 自动扩缩容器必须配置为external
  • StorageURI 唯一支持的存储协议是PVC
  • 默认情况下,允许以下 4 种 GPU 资源:
    • 如果您想使用其他 GPU 类型,可以在 ISVC 的注解中按如下方式设置:
      注意
      您的设置中必须恰好有一个头节点 pod。可以使用InferenceService (ISVC)中的min_replicasmax_replicas设置来调整此头节点 pod 的副本数。但是,创建额外的头节点 pod 将导致它们被排除在 Ray 集群之外,从而导致功能不正常。请确保清楚记录此限制。
      不要在多节点服务中使用 2 种不同的 GPU 类型。

      考虑事项

      使用多节点功能可能表明您正在尝试部署一个非常大的模型。在这种情况下,您应该考虑增加livenessProbereadinessProbestartupProbeinitialDelaySeconds。默认值可能不适合您的特定需求。
      您可以在 ServingRuntime 中为您的具体情况设置 StartupProbe。
      多节点设置通常使用RollingUpdate部署策略,该策略确保现有服务在新服务准备就绪之前保持运行。但是,这种方法需要超过两倍的资源才能有效运行。因此,在开发阶段,使用Recreate策略更为合适。
      此外,修改PipelineParallelSize(增加或减少)可能会因 Deployment 资源的默认行为而影响现有服务。需要注意的是,PipelineParallelSize 不是自动扩缩容概念;相反,它决定了将使用多少个节点来运行模型。因此,强烈建议不要在生产环境中修改此设置。
      如果不使用Recreate部署策略,并且需要更改 PipelineParallelSize,最好的方法是删除现有的 InferenceService (ISVC) 并创建一个具有所需配置的新服务。同样的建议也适用于 TensorParallelSize,因为动态修改此设置也会影响服务的稳定性和性能。
      注意
      再次强调,PipelineParallelSize 不是通用的自动扩缩容机制,对其的更改应谨慎处理,尤其是在生产环境中。

      WorkerSpec 和 ServingRuntime

      要启用多节点/多 GPU 推理,必须在 ServingRuntime 和 InferenceService 中都配置workerSpechuggingface-server-multinode ServingRuntime已经包含此字段,并基于支持多节点/多 GPU 功能的vLLM构建。请注意,此设置与 Triton 不兼容
      注意
      即使ServingRuntime已正确配置workerSpec,除非 InferenceService 也配置了 workerSpec,否则多节点/多 GPU 功能不会启用。

      关键配置

      使用huggingface-server-multinode ServingRuntime时,您需要了解两个关键配置:
      1. workerSpec.tensorParallelSize:此设置控制每个节点使用多少个 GPU。头节点和工作节点部署资源中的 GPU 类型数量将自动更新。
      1. workerSpec.pipelineParallelSize 此设置决定部署中涉及的节点数量。此变量表示包括头节点和工作节点在内的节点总数。

      示例 InferenceService

      以下是 Hugging Face 模型的InferenceService配置示例:

      使用 2 个节点部署 Hugging Face vLLM 模型

      按照以下步骤使用多节点设置部署 Hugging Face vLLM 模型。

      1. 创建持久卷声明(PVC)

      首先,为模型存储创建 PVC。确保使用您的实际存储类更新%fileStorageClassName%

      2. 下载模型到 PVC

      要下载模型,请将您的 Hugging Face 令牌(HF_TEST_TOKEN)导出为环境变量。用您的实际令牌替换%token%

      3. 创建 ServingRuntime

      应用 ServingRuntime 配置。用您的 ServingRuntime YAML 路径替换 %TBD%。

      4. 部署模型

      最后,使用以下 InferenceService 配置部署模型:

      检查InferenceService状态

      要验证您的InferenceService状态,运行以下命令:
      预期输出

      检查GPU 资源状态

      要检查 GPU 资源状态,请按照以下步骤操作:
      1. 获取头节点和工作节点的 pod 名称:
        1. 检查头节点和工作节点 pod 的 GPU 内存大小:
          预期输出

          执行模型推理

          您可以通过转发端口进行测试目的的模型推理。使用以下命令:
          KServe Hugging Face vLLM 运行时支持以下 OpenAI 推理端点:
          • /v1/completions
          • /v1/chat/completions

          OpenAI Completions 请求示例:

          要向 OpenAI completions 端点发送请求,使用以下curl命令:
          预期输出

          OpenAI Chat 请求示例:

          要向 OpenAI chat completions 端点发送请求,使用以下curl命令:
          预期输出
          上一篇
          LLM 推理运行时 - 填充蒙版
          下一篇
          模型推理运行时 - 概要
          Loading...
          文章列表
          Kserve中文文档
          快速开始
          管理指南
          用户指南
          开发指南
          机器学习概念
          大模型周报