Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Ejecución de contenedores acelerados por GPU (Windows en EC2 G-Series)

Modo de enfoque
Ejecución de contenedores acelerados por GPU (Windows en EC2 G-Series) - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

importante

El complemento de dispositivo de Kubernetes para DirectX, desarrollado por TensorWorks, es una herramienta de terceros que no cuenta con el respaldo, soporte ni mantenimiento de AWS. AWS no asume ninguna responsabilidad por la seguridad, la confiabilidad o el rendimiento de este complemento.

Aprenda a ejecutar cargas de trabajo de contenedores de Windows aceleradas por GPU en Amazon EKS (Elastic Kubernetes Service) mediante GPU NVIDIA con el complemento de dispositivo de Kubernetes para DirectX desarrollado por TensorWorks. Para obtener más información, consulte Complemento de dispositivo de Kubernetes para DirectX.

Existen dos enfoques principales para configurar la aceleración de la GPU para los contenedores de Windows:

  • Opción 1: cree una AMI optimizada para Windows EKS personalizada con los controladores de GPU necesarios preinstalados.

    • Utilice este enfoque cuando necesite un entorno consistente y preconfigurado listo para ejecutar contenedores de Windows acelerados por GPU, y esté dispuesto a invertir el esfuerzo adicional necesario para crear y mantener la AMI personalizada.

  • Opción 2: instale los controladores de GPU necesarios en los nodos de trabajo de EKS después de inicializar la instancia.

    • Utilice este enfoque cuando prefiera un proceso de configuración más sencillo y no tenga inconveniente en instalar los controladores de GPU en cada nuevo nodo de trabajo. Más adecuado para un entorno de desarrollo cuando se evalúan o crean prototipos de cargas de trabajo aceleradas por la GPU.

Puede aprovechar ambos enfoques según los pasos que se detallan en esta guía.

Consideraciones

Esta guía proporciona los pasos para instalar y configurar la aceleración por GPU para los contenedores de Windows mediante GPU NVIDIA, controladores NVIDIA GRID y el complemento de dispositivo de Kubernetes para DirectX desarrollado por TensorWorks. Los pasos han sido probados y verificados para proporcionar aceleración por GPU a las cargas de trabajo de contenedores de Windows en Amazon EKS. Consulte Limitaciones conocidas para obtener más información sobre los controladores y complementos de dispositivo compatibles. Antes de continuar, tenga en cuenta lo siguiente:

  • Únicamente se han probado y verificado los tipos de instancias de la familia G con controladores NVIDIA GRID para garantizar su funcionamiento con esta guía. Si bien otros tipos de instancias y combinaciones de controladores también pueden ejecutar contenedores de Windows acelerados por la GPU, es posible que requieran pasos de configuración adicionales que no se describen en esta guía.

  • Únicamente se han probado y verificado las cargas de trabajo basadas en DirectX para garantizar su funcionamiento con esta guía. Aunque otras API de GPU como OpenGL, Vulkan y OpenCL podrían ser compatibles para ejecutar contenedores de Windows acelerados por GPU, es posible que requieran pasos de configuración adicionales que no se abordan en esta guía.

  • Existen algunas limitaciones conocidas que se deben tener en cuenta antes de ejecutar contenedores de Windows acelerados por la GPU. Consulte la sección Limitaciones conocidas para obtener más información.

Requisitos previos

Para habilitar la aceleración por GPU para los contenedores de Windows en Amazon EKS, debe cumplir los siguientes requisitos antes de continuar:

  • Inicie un clúster de Amazon EKS con la versión 1.27 o posterior de Kubernetes.

  • Aprovisione nodos Windows con Windows Server 2022 o posterior.

  • Aprovisione nodos de Windows en la familia G de tipos de instancias, como G4 o G5.

  • Aprovisione los nodos de Windows con un tiempo de ejecución de contenedor con containerd 1.7.x o 2.x.x. (Consulte Recuperación de la información sobre la versión de la AMI de Windows para verificar la versión de containerd en la AMI optimizada de Amazon EKS).

Instale el controlador de la GPU en cada nodo de Windows

Para instalar los controladores NVIDIA GRID en los nodos de trabajo de EKS, siga los pasos que se indican en Controladores NVIDIA para la instancia de Amazon EC2. Vaya a Opciones de instalación - Opción 3: Controladores GRID y siga los pasos de instalación.

Realización de la instalación para Windows Server Core

En el caso de Windows Server Core, que no cuenta con una experiencia de escritorio, instale los controladores NVIDIA GRID de forma silenciosa mediante los siguientes comandos:

$nvidiaInstallerFilePath = nvidia-driver-installer.exe # Replace with path to installer $installerArguments = "-s -clean -noreboot -noeula" Start-Process -FilePath $nvidiaInstallerFilePath -ArgumentList $installerArguments -Wait -NoNewWindow -PassThru

Comprobación de la instalación

Ejecute el siguiente comando de PowerShell para mostrar información de diagnóstico sobre las GPU de la instancia:

nvidia-smi

Este comando muestra la versión del controlador NVIDIA, así como información sobre el hardware de la GPU. Asegúrate de que la salida de este comando coincide con la versión del controlador NVIDIA GRID que esperaba instalar.

Implementación del complemento de dispositivo GPU en cada nodo

Para habilitar la detección y exposición de los recursos de GPU a los contenedores en los nodos de Windows, necesitará un complemento de dispositivo. Implemente el complemento de dispositivo DirectX de TensorWorks en cada nodo de trabajo. Para ello, ejecútelo como un DaemonSet en el clúster de EKS. Siga la guía de instalación especificada en el archivo README.md, que incluirá los siguientes pasos. Se recomienda:

  • Implementar el complemento de dispositivo en el espacio de nombres kube-system.

  • Establecer límites de recursos apropiados para el DaemonSet para asegurar que no consume recursos excesivos en los nodos.

nota

El complemento de dispositivo DaemonSet se ejecutará en cada nodo como un contenedor de procesos host con privilegios elevados. Se recomienda implementar controles de RBAC para restringir el acceso a este DaemonSet, de manera que solo los usuarios autorizados puedan ejecutar comandos privilegiados.

Cuando se ejecutan contenedores acelerados por GPU, el complemento de dispositivo admite dos modos:

  • Modo de tenencia única: este modo dedica todos los recursos de GPU a un único contenedor en la instancia. Instale los complementos de dispositivo con compatibilidad con tenencia única mediante el siguiente comando. Para obtener más información, consulte el archivo README.md.

    kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/default-daemonsets.yml"
  • Modo de tenencia múltiple: este modo permite compartir los recursos de GPU entre varios contenedores en la instancia. Instale los complementos de dispositivo con compatibilidad con tenencia múltiple mediante el siguiente comando. Para obtener más información, consulte el archivo README.md.

    kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/multitenancy-inline.yml"

    Como alternativa, utilice un ConfigMap para especificar la tenencia múltiple.

    kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/multitenancy-configmap.yml"

Verificación de la implementación del complemento del dispositivo

Tras implementar el complemento de dispositivo, sustituya <namespace> y ejecute el siguiente comando para comprobar que el complemento de dispositivo DirectX se ejecuta correctamente en todos los nodos de Windows.

kubectl get ds device-plugin-wddm -n <namespace>

Verificación de que los contenedores están listos para su implementación

Una vez que el complemento de dispositivo DaemonSet esté en ejecución en los nodos de trabajo de Windows con GPU, utilice el siguiente comando para verificar que cada nodo disponga de GPU asignables. El número correspondiente debe coincidir con el número de dispositivos DirectX de cada nodo.

kubectl get nodes "-o=custom-columns=NAME:.metadata.name,DirectX:.status.allocatable.directx\.microsoft\.com/display"

Ejecución de contenedores de Windows con aceleración de GPU

Antes de lanzar los pods, especifique el nombre del recurso directx.microsoft.com/display en .spec.containers[].resources. Esto indicará que los contenedores requieren capacidades habilitadas para GPU y el kube-scheduler intentará colocar los pods en el nodo Windows preconfigurado con recursos de GPU disponibles.

Como ejemplo, consulte el comando de muestra a continuación, que lanza un Job para ejecutar una simulación de Monte Carlo y estimar el valor de pi. Este ejemplo proviene del repositorio de GitHub Complementos de dispositivo de Kubernetes para DirectX, el cual incluye múltiples ejemplos que puede elegir y ejecutar para probar las capacidades de GPU de los nodos de Windows.

cat <<EOF | kubectl apply -f - apiVersion: batch/v1 kind: Job metadata: name: example-cuda-montecarlo-wddm spec: template: spec: containers: - name: example-cuda-montecarlo-wddm image: "index.docker.io/tensorworks/example-cuda-montecarlo:0.0.1" resources: limits: directx.microsoft.com/display: 1 nodeSelector: "kubernetes.io/os": windows restartPolicy: Never backoffLimit: 0 EOF

Limitaciones conocidas

Se pueden utilizar todas las GPU

Todas las GPU de la instancia estarán disponibles para cada contenedor en ejecución en el host, incluso si solicita un número específico de GPU para un contenedor determinado. Además, el comportamiento predeterminado es que todos los contenedores que se ejecutan en el host utilizarán la GPU con el índice 0, incluso si hay varias GPU disponibles en el nodo. Por lo tanto, para que las tareas que utilizan múltiples GPU funcionen correctamente, debe designar explícitamente el dispositivo GPU específico que se utilizará dentro del código de la aplicación.

La implementación exacta para asignar un dispositivo a utilizar en la aplicación dependerá del lenguaje de programación o del marco de trabajo que utilice. Por ejemplo, si utiliza la programación CUDA, para seleccionar una GPU específica, puede especificar explícitamente el dispositivo a utilizar en el código de la aplicación mediante la función cudaSetDevice().

La necesidad de especificar explícitamente el dispositivo se debe a un problema conocido que afecta a los contenedores de Windows. Puede seguir el progreso en la resolución de este problema en el tema #333 de microsoft/Windows-Containers. La siguiente tabla es una representación visual y un ejemplo práctico de este comportamiento de asignación de GPU.

Considere un escenario en el que hay un único nodo de Windows del tipo de instancia g4dn.12xlarge de EC2, que viene con cuatro GPU. Considere un escenario en el que se inicializan tres pods en esta instancia. La tabla muestra que, independientemente de la cantidad de GPU solicitadas por cada contenedor, los tres pods tienen acceso a las cuatro GPU de la instancia y, de forma predeterminada, utilizarán la GPU con el índice de dispositivo 0.

Pod GPU solicitadas Acceso real a la GPU Uso de GPU predeterminado Índices de GPU disponibles Total de GPU de la instancia

Pod 1

1 GPU

Las 4 GPU

GPU con índice 0

0, 1, 2, 3

4

Pod 2

2 GPU

Las 4 GPU

GPU con índice 0

0, 1, 2, 3

4

Pod 3

1 GPU

Las 4 GPU

GPU con índice 0

0, 1, 2, 3

4

Compatibilidad con el complemento para dispositivos de Kubernetes

La implementación oficial de NVIDIA del complemento para dispositivos de Kubernetes no es compatible con Windows. Puede seguir el avance de la incorporación de la compatibilidad oficial con Windows en el tema nº 419 de NVIDIA/k8s-device-plugin.

Limitaciones de las instancias de computación de GPU

Según la configuración de la cuenta de AWS, es posible que tenga límites de servicio en cuanto a la cantidad y los tipos de instancias de computación de GPU de Amazon EC2 que puede inicializar. Si necesita capacidad adicional, puede Solicitar un aumento de cuota.

Debe crear una AMI optimizada para la GPU de Windows

No existe una AMI optimizada para GPU de Windows en EKS ni un componente administrado del Generador de imágenes de EC2 proporcionado por Amazon EKS. Deberá seguir los pasos de esta guía para crear una AMI personalizada optimizada para Windows en EKS con los controladores de GPU necesarios preinstalados, o instalar los controladores de GPU requeridos en los nodos de trabajo de EKS después de inicializar las instancias.

No se admiten Inferentia ni Trainium

Las cargas de trabajo basadas en AWS Inferentia y AWS Trainium no son compatibles con Windows.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.