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 的步骤包括以下内容,这些步骤根据您的环境和偏好有所不同。
- 完成配置栅格分析或其他想要使用支持 GPU 的节点的功能的步骤。
- 验证您的实例是否安装了设备插件。
许多云环境都预先配置了 GPU 节点。 如果未安装设备插件,请参阅 Kubernetes 文档的 NVIDIA 设备插件了解详细信息和安装步骤。 如果您已在本地部署,则管理员必须在群集中的每个节点上启用 GPU。
- 为了利用 GPU 启用节点来满足您组织的 GIS 工作流程的需求,请设置 GPU 的请求和限制。
- 或者,如果您想在 GPU 节点上专门运行 GPU 工作负载,请配置节点亲和性和容忍度。
设置 GPU 的请求和限制
使用 ArcGIS Enterprise Administrator API 目录为以下每个部署设置 GPU 的请求和限制:
- system-rasteranalysistools-gpsyncserver(用于训练模型)
- system-rasterprocessinggpu-dpserver(用于处理的操作系统)
- 以管理员身份登录到 ArcGIS Enterprise Administrator API 目录。
- 单击系统 > 部署。
- 找到 system-rasteranalysistools-gpsyncserver 部署并单击其对应的 ID。
- 单击编辑部署。
- 在部署 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" },
- 更新列出的每个容器的 customResources 参数以包含 GPU 的请求和限制。
- 单击提交以保存对部署的编辑。
- 重复 system-rasterprocessinggpu-dpserver 部署步骤。
在管理员目录 API 文档中了解如何编辑系统部署。
配置节点亲和性和容忍度
GPU 节点可以同时运行 CPU 和 GPU 工作负载。 如果您的 CPU 工作负载允许在 GPU 节点上运行,则无需采取进一步措施。 但是,如果您想确保 GPU 工作负载仅在 GPU 节点上运行,则您的管理员必须采取额外步骤来配置节点亲和性和容忍度。 执行此操作涉及以下步骤,以对节点进行污点标记,并为适用的服务应用可容忍性,以便它们可以在带有污点的节点上进行调度。
- 为了确保 GPU 工作负载专门安排在 GPU 节点上,请对 GPU 节点进行污点标记。
kubectl taint nodes <your-node-name> nvidia.com/gpu=Exists:NoExecute
- 标记 GPU 节点。 或者,使用节点上已指定的现有标签。
kubectl label nodes <your-node-name> raster=GPU
- 编辑系统下的 RasterProcessingGPU (DPServer) 服务的服务放置策略,以使用节点亲和性和容忍度。
"podPlacementPolicy": { "tolerations": [{ "effect": "NoExecute", "key": "nvidia.com/gpu", "operator": "Exists" }], "nodeAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [{ "matchExpressions": [{ "key": "raster", "operator": "In", "values": ["GPU"] }] }] } } }
- 验证 GPU pod 是否在 GPU 节点上运行。
您可以开始在组织中使用栅格分析工具和托管影像。 此外,请参阅调整栅格分析的建议。