支持 GPU 的节点

Kubernetes 包括使用设备插件管理集群中不同节点的图形处理单元 (GPU) 的支持。

ArcGIS Enterprise on Kubernetes 中,您可以部署设备插件来启用集群中的 GPU 节点,优化 GIS 工作流程,例如与栅格分析和深度学习相关的工作流程。 默认情况下,栅格分析等功能配置为在 CPU 模式下运行,但当这些资源可用时,也可以灵活地在 GPU 模式下运行。

要考虑到集群中 GPU 的可用性和利用率,因为它会产生额外的成本。

要启用 GPU,需要 Kubernetes 的 NVIDIA 设备插件。 Kubernetes 的 NVIDIA 设备插件是一个守护进程集,允许您公开集群中每个节点上的 GPU 数量、运行支持 GPU 的容器以及跟踪 GPU 的运行状况。

注:

在此版本中,ArcGIS Enterprise on Kubernetes 仅支持 NVIDIA GPU。

启用 GPU

为您的组织启用 GPU 的步骤包括以下内容,这些步骤根据您的环境和偏好有所不同。

  1. 完成配置栅格分析或其他想要使用支持 GPU 的节点的功能的步骤。
  2. 验证您的实例是否安装了设备插件。

    许多云环境都预先配置了 GPU 节点。 如果未安装设备插件,请参阅 Kubernetes 文档的 NVIDIA 设备插件了解详细信息和安装步骤。 如果您已在本地部署,则管理员必须在群集中的每个节点上启用 GPU。

  3. 为了利用 GPU 启用节点来满足您组织的 GIS 工作流程的需求,请设置 GPU 的请求和限制
  4. 或者,如果您想在 GPU 节点上专门运行 GPU 工作负载,请配置节点亲和性和容忍度

设置 GPU 的请求和限制

使用 ArcGIS Enterprise Administrator API 目录为以下每个部署设置 GPU 的请求和限制:

  • system-rasteranalysistools-gpsyncserver(用于训练模型)
  • system-rasterprocessinggpu-dpserver(用于处理的操作系统)

  1. 以管理员身份登录到 ArcGIS Enterprise Administrator API 目录。
  2. 单击系统 > 部署
  3. 找到 system-rasteranalysistools-gpsyncserver 部署并单击其对应的 ID。
  4. 单击编辑部署
  5. 在部署 JSON 中,找到该部署和 customResources 参数的 resources 部分。
              
    "containers": [
          {
            "name": "main-container",
            "resources": {
              "memoryMin": "4Gi",
              "memoryMax": "8Gi",
              "cpuMin": "0.125",
              "customResources": {
                "limits":{"nvidia.com/gpu": "1"},
                "requests":{"nvidia.com/gpu": "1"}
              },
              "cpuMax": "2"
            },
    
  6. 更新列出的每个容器的 customResources 参数以包含 GPU 的请求和限制。
  7. 单击提交以保存对部署的编辑。
  8. 重复 system-rasterprocessinggpu-dpserver 部署步骤。

在管理员目录 API 文档中了解如何编辑系统部署

配置节点亲和性和容忍度

GPU 节点可以同时运行 CPU 和 GPU 工作负载。 如果您的 CPU 工作负载允许在 GPU 节点上运行,则无需采取进一步措施。 但是,如果您想确保 GPU 工作负载仅在 GPU 节点上运行,则您的管理员必须采取额外步骤来配置节点亲和性和容忍度。 执行此操作涉及以下步骤,以对节点进行污点标记,并为适用的服务应用可容忍性,以便它们可以在带有污点的节点上进行调度。

  1. 为了确保 GPU 工作负载专门安排在 GPU 节点上,请对 GPU 节点进行污点标记。

    kubectl taint nodes <your-node-name> nvidia.com/gpu=Exists:NoExecute
    

  2. 标记 GPU 节点。 或者,使用节点上已指定的现有标签。

    kubectl label nodes <your-node-name> raster=GPU
    

  3. 编辑系统下的 RasterProcessingGPU (DPServer) 服务的服务放置策略,以使用节点亲和性和容忍度。

          
    
    "podPlacementPolicy": {
              "tolerations": [{
                 "effect": "NoExecute",
                 "key": "nvidia.com/gpu",
                 "operator": "Exists"
              }],
              "nodeAffinity": {
                 "requiredDuringSchedulingIgnoredDuringExecution": {
                      "nodeSelectorTerms": [{
                           "matchExpressions": [{
                              "key": "raster",
                              "operator": "In",
                              "values": ["GPU"]
                            }]
                       }]
                  }
              }
          }
    

  4. 验证 GPU pod 是否在 GPU 节点上运行。

您可以开始在组织中使用栅格分析工具和托管影像。 此外,请参阅调整栅格分析的建议。