使用 GKE 推理快速入门配方运行最佳实践推理


本页介绍了如何使用 GKE 推理快速入门简化在 Google Kubernetes Engine (GKE) 上部署 AI/机器学习推理工作负载的流程。推理快速入门是一个实用程序,可让您根据最佳实践以及 Google 针对模型、模型服务器、加速器(GPUTPU)和扩缩的基准测试,指定推理业务要求并获取经过优化的 Kubernetes 配置。这有助于您避免手动调整和测试配置的耗时过程。

本页面适用于希望了解如何高效管理和优化 GKE 以进行 AI/机器学习推理的机器学习 (ML) 工程师、平台管理员和运维人员,以及数据和 AI 专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

如需详细了解模型部署概念和术语,以及 GKE Gen AI 功能如何增强和支持模型部署性能,请参阅 GKE 上的模型推理简介

在阅读本页面内容之前,请确保您熟悉 KubernetesGKE模型服务

快速入门:使用推理

使用推理快速入门的概要步骤如下。 点击链接可查看详细说明。

  1. 查看量身定制的最佳实践:使用 Google Cloud 控制台中的 GKE AI/ML 页面或终端中的 Google Cloud CLI,首先提供输入,例如首选的开源模型(例如 Llama、Gemma 或 Mistral)。
    • 您可以指定应用的延迟时间目标,指明应用是否对延迟时间敏感(例如聊天机器人)或对吞吐量敏感(例如批量分析)。
    • 根据您的要求,推理快速入门提供了加速器选项、性能指标和 Kubernetes 清单,可让您完全控制部署或进一步修改。生成的清单会引用公共模型服务器映像,因此您不必自行创建这些映像。
  2. 部署清单:使用 Google Cloud 控制台或 kubectl apply 命令部署建议的清单。在部署之前,您需要确保您的 Google Cloud 项目中针对所选 GPU 或 TPU 有足够的加速器配额。
  3. 监控性能:使用 Cloud Monitoring 监控 GKE 用于监控工作负载性能的指标。您可以查看特定于模型服务器的信息中心,并根据需要微调部署。

优势

推理快速入门可提供经过优化的配置,帮助您节省时间和资源。这些优化可通过以下方式提高性能并降低基础架构费用:

  • 您将收到针对设置加速器(GPU 和 TPU)、模型服务器和扩缩配置量身定制的详细最佳实践。GKE 会定期更新该工具,以提供最新的修复程序、映像和性能基准。
  • 您可以使用Google Cloud 控制台界面或命令行界面指定工作负载的延迟时间和吞吐量要求,并在 Kubernetes 部署清单中获取量身定制的详细最佳实践。

使用场景

推理快速入门适用于以下场景:

  • 探索最优的 GKE 推理架构:如果您要从其他环境(例如本地环境或其他云服务提供商)迁移,并且希望根据您的特定性能需求获取 GKE 上最新的推荐推理架构。
  • 加快 AI/机器学习推理部署速度:如果您是经验丰富的 Kubernetes 用户,并且希望快速开始部署 AI 推理工作负载,推理快速入门可帮助您在 GKE 上发现和实现最佳实践部署,并提供基于最佳实践的详细 YAML 配置。
  • 探索 TPU 以提升性能:如果您已经在 GKE 上使用 Kubernetes 和 GPU,则可以使用推理快速入门探索使用 TPU 可能带来的性能提升优势。

工作原理

推理快速入门根据 Google 对模型、模型服务器和加速器拓扑组合单个副本性能的详尽内部基准测试,提供量身定制的最佳实践。这些基准测试会绘制延迟时间与吞吐量(包括队列大小和 KV 缓存指标)的图表,以显示每种组合的性能曲线。

如何生成量身定制的最佳实践

我们通过使加速器饱和来衡量延迟时间(以每个输出令牌的标准化时间 [NTPOT] 表示,单位为毫秒),以及每秒输出令牌的吞吐量如需详细了解这些性能指标,请参阅 GKE 上的模型推理简介

以下延迟时间配置文件示例展示了吞吐量趋于稳定的拐点(绿色)、延迟时间恶化的拐点后位置(红色),以及在延迟时间目标值下实现最佳吞吐量的理想区域(蓝色)。推理快速入门提供了此理想区域的性能数据和配置。

延迟时间配置文件,其中绿色标记表示每秒输出令牌数低于 2000 个,红色标记表示每秒输出令牌数高于 2000 个

推理快速入门会根据推理应用的延迟时间要求,确定合适的组合,并确定延迟时间-吞吐量曲线上的最佳工作点。此点用于设置 Pod 横向自动扩缩器 (HPA) 阈值,并附带一个缓冲区来考虑扩容延迟时间。总阈值还会指明所需的初始副本数量,但 HPA 会根据工作负载动态调整此数量。

基准比较

所提供的配置和性能数据基于使用 ShareGPT 数据集发送具有以下输入和输出分布的流量的基准测试。

输入令牌 输出令牌
最小值 中位数 平均值 P90 P99 最大值 最小值 中位数 平均值 P90 P99 最大值
4 108 226 635 887 1024 1 132 195 488 778 1024

如需自行运行基准测试,请按照 AI-Hypercomputer/inference-benchmark 中的说明操作。我们提供了不同的选项,您可以在基准测试期间使用这些选项来模拟代表您工作负载的负载模式。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。
  • 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。

  • 确保您的 Google Cloud 项目已启用结算功能

  • 确保您的项目有足够的加速器容量:

  • 生成 Hugging Face 访问令牌和相应的 Kubernetes Secret(如果您还没有)。如需创建包含 Hugging Face 令牌的 Kubernetes Secret,请运行以下命令:

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=HUGGING_FACE_TOKEN \
        --namespace=NAMESPACE
    

    替换以下值:

    • HUGGING_FACE_TOKEN:您之前创建的 Hugging Face 令牌。
    • NAMESPACE:您要在其中部署模型服务器的 Kubernetes 命名空间。
  • 某些模型可能还要求您接受并签署其意见征求许可协议。

准备使用 GKE AI/ML 界面

如果您使用 Google Cloud 控制台,则还需要创建 Autopilot 集群(如果您的项目中尚未创建)。按照创建 Autopilot 集群中的说明操作。

准备使用命令行界面

如果您使用 gcloud CLI 运行推理快速入门,则还需要运行以下其他命令:

  1. 启用 gkerecommender.googleapis.com API:

    gcloud services enable gkerecommender.googleapis.com
    
  2. 设置用于 API 调用的结算配额项目:

    gcloud config set billing/quota_project PROJECT_ID
    

限制

在开始使用推理快速入门之前,请注意以下限制:

  • Google Cloud 控制台模型部署仅支持部署到 Autopilot 集群。
  • 推理快速入门不会为给定模型服务器支持的所有模型提供配置文件。

查看针对模型推理优化的配置

本部分介绍了如何使用 Google Cloud 控制台或命令行生成和查看配置建议。

控制台

  1. 前往 Google Cloud 控制台中的 GKE AI/ML 页面

  2. 点击部署模型
  3. 选择要查看的模型。推理快速入门支持的模型会带有已优化标记。

    • 如果您选择了基础模型,系统会打开模型页面。点击部署。 您仍然可以在实际部署之前修改配置。
    • 如果您的项目中没有 Autopilot 集群,系统会提示您创建一个。按照创建 Autopilot 集群中的说明操作。创建集群后,返回 Google Cloud 控制台中的 GKE AI/ML 页面,选择一个模型。

    模型部署页面会预先填充您选择的模型以及推荐的模型服务器和加速器。您还可以配置最大延迟时间等设置。

  4. 如需查看包含推荐配置的清单,请点击查看 YAML

gcloud

使用 gcloud alpha container ai recommender 命令探索和查看模型、模型服务器、模型服务器版本和加速器的优化组合:

模型

如需探索和选择模型,请使用 models 选项。

  gcloud alpha container ai recommender models list

输出类似于以下内容:

  Supported models:
  -  deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
  -  google/gemma-2-27b-it
  -  google/gemma-2-2b-it
  -  meta-llama/Llama-3.2-1B-Instruct
  -  meta-llama/Llama-3.3-70B-Instruct
  -  meta-llama/Meta-Llama-3-8B
  -  mistralai/Mixtral-8x22B-Instruct-v0.1
  -  mistralai/Mixtral-8x7B-Instruct-v0.1

模型服务器

如需探索您感兴趣的模型的推荐模型服务器,请使用 model-servers 选项。例如:

  gcloud alpha container ai recommender model-servers list \
      --model=meta-llama/Meta-Llama-3-8B

输出类似于以下内容:

  Supported model servers:
  -  vllm

服务器版本

(可选)如需探索您感兴趣的模型服务器的受支持版本,请使用 model-server-versions 选项。如果您跳过此步骤,则推理快速入门将默认使用最新版本。例如:

gcloud alpha container ai recommender model-server-versions list \
    --model=meta-llama/Meta-Llama-3-8B \
    --model-server=vllm

输出类似于以下内容:

    Supported model server versions:
    -  e92694b6fe264a85371317295bca6643508034ef
    -  v0.7.2
    ```

加速器

如需了解适用于您感兴趣的模型和模型服务器组合的推荐加速器,请使用 accelerators 选项。例如:

  gcloud alpha container ai recommender accelerators list \
      --model=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
      --model-server-version=v0.7.2

输出类似于以下内容:

  Supported accelerators:
  accelerator          | model                                   | model server | model server version                     | accelerator count | output tokens per second | ntpot ms
  ---------------------|-----------------------------------------|--------------|------------------------------------------|-------------------|--------------------------|---------
  nvidia-tesla-a100    | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 3357                     | 72
  nvidia-h100-80gb     | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 6934                     | 30

  For more details on each accelerator, use --format=yaml

输出会返回加速器类型列表以及以下指标:

  • 吞吐量(以每秒输出 token 数为单位)
  • 每个输出令牌的标准化时间 (NTPOT),以毫秒为单位

对于具有此加速器类型的给定配置文件,这些值表示在吞吐量停止增加且延迟时间开始大幅增加(即拐点或饱和点)时观察到的性能。如需详细了解这些性能指标,请参阅 GKE 上的模型推理简介

如需了解其他选项,请参阅 Google Cloud CLI 文档

选择模型、模型服务器、模型服务器版本和加速器后,您可以继续创建部署清单。

部署建议的配置

本部分介绍了如何使用 Google Cloud 控制台或命令行生成和部署配置建议。

控制台

  1. 前往 Google Cloud 控制台中的 GKE AI/ML 页面

  2. 点击部署模型
  3. 选择要部署的模型。推理快速入门支持的模型会带有已优化标记。

    • 如果您选择了基础模型,系统会打开模型页面。点击部署。 您仍然可以在实际部署之前修改配置。
    • 如果您的项目中没有 Autopilot 集群,系统会提示您创建一个。按照创建 Autopilot 集群中的说明操作。创建集群后,返回 Google Cloud 控制台中的 GKE AI/ML 页面,选择一个模型。

    模型部署页面会预先填充您选择的模型以及推荐的模型服务器和加速器。您还可以配置最大延迟时间等设置。

  4. (可选)如需查看包含推荐配置的清单,请点击查看 YAML

  5. 如需使用推荐的配置部署清单,请点击部署。部署操作可能需要几分钟才能完成。

如需查看部署,请前往 Kubernetes Engine > 工作负载页面。

gcloud

  1. 生成清单:在终端中,使用 manifests 选项生成部署、Service 和 PodMonitoring 清单:

    gcloud alpha container ai recommender manifests create
    

    使用必需的 --model--model-server--accelerator-type 参数来自定义清单。

    您可以选择性地设置以下参数:

    • --target-ntpot-milliseconds:设置此参数以指定 HPA 阈值。借助此参数,您可以定义缩放阈值,以将“每输出令牌的标准化时间 (NTPOT)”P50 延迟时间(在第 50 个百分位数处测量)保持在指定值以下。选择一个高于加速器最小延迟时间的值。如果您指定的 NTPOT 值高于加速器的最大延迟时间,HPA 将配置为实现最大吞吐量。例如:

      gcloud alpha container ai recommender manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --model-server-version=v0.7.2 \
          --accelerator-type=nvidia-l4 \
          --target-ntpot-milliseconds=200
      
    • --model-server-version:模型服务器版本。如果未指定,则默认为最新版本。

    • --namespace:要部署清单的命名空间。默认命名空间为“default”。

    • --output:有效值包括 manifestcommentsall。默认情况下,此参数设置为 all。您可以选择仅输出用于部署工作负载的清单,也可以选择仅输出注释(如果您想查看启用功能的说明)。

    • --output-path:如果指定,输出将保存到所提供的路径,而不是输出到终端,以便您在部署之前修改输出。例如,如果您想将清单保存在 YAML 文件中,可以将此选项与 --output=manifest 选项搭配使用。例如:

      gcloud alpha container ai recommender manifests create \
          --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
          --model-server vllm \
          --accelerator-type=nvidia-tesla-a100 \
          --output=manifest \
          --output-path  /tmp/manifests.yaml
      

    如需了解其他选项,请参阅 Google Cloud CLI 文档

  2. 预配基础架构:请按照这些预配步骤操作,确保基础架构已正确设置,以便部署、监控和扩缩模型。

  3. 部署清单:运行 kubectl apply 命令,并传入清单的 YAML 文件。例如:

    kubectl apply -f ./manifests.yaml
    

预配基础架构

请按照以下步骤操作,确保您的基础架构已正确设置,以便进行模型部署、监控和扩缩:

  1. 创建集群:您可以在 GKE Autopilot 或 Standard 集群上部署模型。我们建议您使用 Autopilot 集群获得全托管式 Kubernetes 体验。如需选择最适合您的工作负载的 GKE 操作模式,请参阅选择 GKE 操作模式

    如果您没有现有集群,请按以下步骤操作:

    Autopilot

    按照以下说明创建 Autopilot 集群。如果您的项目中有必要的配额,GKE 会根据部署清单预配具有 GPU 或 TPU 容量的节点。

    标准

    1. 创建可用区级区域级集群。
    2. 创建包含适当加速器的节点池。根据您选择的加速器类型,按照以下步骤操作:

  2. (可选,但建议执行)启用可观测性功能:在生成的清单的“注释”部分中,提供了其他命令来启用建议的可观测性功能。启用这些功能可提供更多数据洞见,帮助您监控工作负载和底层基础架构的性能和状态。

    以下是用于启用可观测性功能的示例命令:

    gcloud beta container clusters update $CLUSTER_NAME
        --project=$PROJECT_ID
        --location=$LOCATION \
        --enable-managed-prometheus \
        --logging=SYSTEM,WORKLOAD \
        --monitoring=SYSTEM,DEPLOYMENT,HPA,POD,DCGM \
        --auto-monitoring-scope=ALL
    

    如需了解详情,请参阅监控推理工作负载

  3. (仅限 HPA)部署指标适配器:如果在部署清单中生成了 HPA 资源,则必须使用指标适配器(例如 自定义指标 Stackdriver 适配器)。借助指标适配器,HPA 可以访问使用 kube external metrics API 的模型服务器指标。如需部署适配器,请参阅 GitHub 上的适配器文档

测试您的部署端点

如果您使用命令行部署了清单,则部署的服务会在以下端点公开:

http://model-model_server-service:port/

测试您的服务。在另一个终端中,运行以下命令以设置端口转发:

kubectl port-forward service/model-model_server-service 8000:8000

如需查看有关如何构建请求并将其发送到端点的示例,请参阅 vLLM 文档。

监控推理工作负载

如需监控已部署的推理工作负载,请前往 Google Cloud 控制台中的 Metrics Explorer

启用自动监控

GKE 包含自动监控功能,该功能属于更广泛的可观测性功能。此功能会扫描集群,查找在受支持的模型服务器上运行的工作负载,并部署 PodMonitoring 资源,以便这些工作负载指标在 Cloud Monitoring 中显示。如需详细了解如何启用和配置自动监控,请参阅为工作负载配置自动应用监控

启用该功能后,GKE 会安装预构建的信息中心,以便监控受支持的工作负载的应用。

如果您从 Google Cloud 控制台的 GKE AI/ML 页面进行部署,系统会使用 targetNtpot 配置自动为您创建 PodMonitoring 和 HPA 资源。

问题排查

  • 如果您将延迟时间设置得过低,推理快速入门可能不会生成建议。若要解决此问题,请选择介于所选加速器的最短延迟时间和最长延迟时间之间的延迟时间目标。
  • 推理快速入门独立于 GKE 组件而存在,因此您的集群版本与使用该服务没有直接关系。不过,我们建议您使用新的或最新的集群,以免出现任何性能差异。
  • 如果 gkerecommender.googleapis.com 命令收到 PERMISSION_DENIED 错误,提示缺少配额项目,您需要手动设置配额项目。运行 gcloud config set billing/quota_project PROJECT_ID 即可解决此问题。

后续步骤