Nodos habilitados con GPU

Kubernetes incluye soporte para gestionar unidades de procesamiento gráfico (GPU) en diferentes nodos de su clúster utilizando plugins de dispositivos.

En ArcGIS Enterprise on Kubernetes, puede implementar un plugin de dispositivos para habilitar nodos GPU en su clúster para optimizar flujos de trabajo de SIG, como los del análisis de ráster y el aprendizaje profundo. Capacidades como el análisis de ráster se configuran de forma predeterminada para funcionar en el modo de CPU, pero también ofrecen la flexibilidad de funcionar en el modo de GPU cuando estos recursos están disponibles.

Es opcional tener en cuenta la disponibilidad y la utilización de GPU en su clúster, ya que incurrirá en costes adicionales.

Para habilitar la GPU, se requiere un plugin de dispositivo NVIDIA para Kubernetes. El plugin de dispositivo NVIDIA para Kubernetes es un daemonset que permite exponer el número de GPU de cada nodo de su clúster, ejecutar contenedores habilitados con GPU y hacer un seguimiento del estado de las GPU.

Nota:

En esta versión, ArcGIS Enterprise on Kubernetes solo es compatible con GPU NVIDIA.

Habilitar GPU

En los pasos para habilitar GPU para su organización se incluyen los siguientes, que son específicos de su entorno y preferencias.

  1. Realice los pasos para configurar análisis de ráster u otra funcionalidad para la que desee utilizar nodos habilitados con GPU.
  2. Verifique si su instancia tiene el plugin de dispositivo instalado.

    Muchos entornos de la nube se han preconfigurado con nodos GPU. Si el plugin de dispositivo no está instalado, consulte los detalles y los pasos de instalación en la documentación del plugin de dispositivo NVIDIA para Kubernetes. Si ha implementado localmente, su administrador debe habilitar la GPU en cada nodo de su clúster.

  3. Para utilizar los nodos habilitados con GPU en los flujos de trabajo de SIG de su organización, defina solicitudes y límites para GPU.
  4. Opcionalmente, si desea ejecutar cargas de trabajo de GPU en nodos GPU de forma exclusiva, configure la afinidad y las tolerancias de los nodos.

Definir solicitudes y límites para GPU

Utilice el directorio API de administrador de ArcGIS Enterprise para definir solicitudes y límites para GPU para cada una de las implementaciones siguientes:

  • system-rasteranalysistools-gpsyncserver (se utiliza en modelos de entrenamiento)
  • system-rasterprocessinggpu-dpserver (se utiliza en procesamiento)

  1. Inicie sesión en el Directorio de API de administrador de ArcGIS Enterprise como administrador.
  2. Haga clic en Sistema > Implementaciones.
  3. Localice la implementación de system-rasteranalysistools-gpsyncserver y haga clic en su Id. correspondiente.
  4. Haga clic en Editar implementación.
  5. En el JSON de la implementación, localice la sección resources correspondiente a la implementación y el parámetro customResources.
              
    "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. Actualice el parámetro customResources de cada contenedor de la lista para incluir solicitudes y límites de GPU.
  7. Haga clic en Enviar para guardar las ediciones de la implementación.
  8. Repita los pasos para la implementación de system-rasterprocessinggpu-dpserver.

Aprenda a editar las implementaciones del sistema en la documentación de la API del directorio del administrador.

Configurar afinidad y tolerancias de nodos

Los nodos GPU pueden tener cargas de trabajo de CPU y GPU ejecutándose en ellos. Si se permite que sus cargas de trabajo de CPU se ejecuten en un nodo GPU, no se requieren más pasos. Sin embargo, si quiere asegurarse de que las cargas de trabajo de GPU se ejecuten en nodo GPU exclusivamente, su administrador debe adoptar medidas adicionales para configurar la afinidad y las tolerancias de los nodos. Esto implica llevar a cabo los pasos siguientes para contaminar los nodos y aplicar tolerancias a los servicios pertinentes para que puedan programarse en un nodo contaminado.

  1. Para asegurarse de que las cargas de trabajo de GPU se programen en nodos GPU exclusivamente, contamine los nodos GPU.

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

  2. Etiquete los nodos GPU. Como alternativa, utilice una etiqueta existente que ya se haya especificado en el nodo.

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

  3. Edite la política de ubicación del servicio RasterProcessingGPU (DPServer) que se encuentra en Sistema para que utilice afinidad y tolerancias de nodo.

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

  4. Verifique que los pods GPU se ejecutan en los nodos GPU.

Puede empezar a utilizar las herramientas de análisis de ráster y a alojar imágenes en su organización Además, consulte las recomendaciones de Ajuste del análisis de ráster.