Para crear un trabajo GPU basado en los EKS recursos de Amazon - AWS Batch

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Para crear un trabajo GPU basado en los EKS recursos de Amazon

En esta sección se explica cómo ejecutar una EKS GPU carga de trabajo de Amazon en AWS Batch.

Para crear un Kubernetes clúster GPU basado en Amazon EKS

Antes de crear un Kubernetes clúster GPU basado en AmazonEKS, debes haber completado los pasos que se indicanCómo empezar con AWS Batch Amazon EKS. Además, tenga en cuenta lo siguiente:

  • AWS Batch admite tipos de instancias con NVIDIAGPUs.

  • De forma predeterminada, AWS Batch selecciona Amazon EKS accelerated AMI con la Kubernetes versión que coincida con la versión del plano de control EKS del clúster de Amazon.

$ cat <<EOF > ./batch-eks-gpu-ce.json { "computeEnvironmentName": "My-Eks-GPU-CE1", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:<region>:<account>:cluster/<cluster-name>", "kubernetesNamespace": "my-aws-batch-namespace" }, "computeResources": { "type": "EC2", "allocationStrategy": "BEST_FIT_PROGRESSIVE", "minvCpus": 0, "maxvCpus": 1024, "instanceTypes": [ "p3dn.24xlarge", "p4d.24xlarge" ], "subnets": [ "<eks-cluster-subnets-with-access-to-internet-for-image-pull>" ], "securityGroupIds": [ "<eks-cluster-sg>" ], "instanceRole": "<eks-instance-profile>" } } EOF $ aws batch create-compute-environment --cli-input-json file://./batch-eks-gpu-ce.json

AWS Batch no administra el complemento del NVIDIA GPU dispositivo en tu nombre. Debes instalar este complemento en tu EKS clúster de Amazon y permitir que se dirija a los AWS Batch nodos. Para obtener más información, consulte Enabling GPU Support en Kubernetes on GitHub.

Para configurar el complemento del NVIDIA dispositivo (DaemonSet) para que se dirija a los AWS Batch nodos, ejecute los siguientes comandos.

# pull nvidia daemonset spec $ curl -O https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.12.2/nvidia-device-plugin.yml # using your favorite editor, add Batch node toleration # this will allow the DaemonSet to run on Batch nodes - key: "batch.amazonaws.com/batch-node" operator: "Exists" $ kubectl apply -f nvidia-device-plugin.yml

No se recomienda mezclar cargas de trabajo informáticas (CPUy de memoria) con cargas de trabajo GPU basadas en la misma combinación de entorno informático y cola de tareas. Esto se debe a que las tareas informáticas pueden consumir capacidad. GPU

Para adjuntar colas de trabajos, ejecute los siguientes comandos.

$ cat <<EOF > ./batch-eks-gpu-jq.json { "jobQueueName": "My-Eks-GPU-JQ1", "priority": 10, "computeEnvironmentOrder": [ { "order": 1, "computeEnvironment": "My-Eks-GPU-CE1" } ] } EOF $ aws batch create-job-queue --cli-input-json file://./batch-eks-gpu-jq.json

Para crear una definición de EKS GPU trabajo en Amazon

Solo nvidia.com/gpu se admite en este momento y el valor del recurso que establezca debe ser un número entero. No puedes usar fracciones deGPU. Para obtener más información, consulte el programa GPUs en la Kubernetesdocumentación.

Para registrar una definición de GPU trabajo para AmazonEKS, ejecuta los siguientes comandos.

$ cat <<EOF > ./batch-eks-gpu-jd.json { "jobDefinitionName": "MyGPUJobOnEks_Smi", "type": "container", "eksProperties": { "podProperties": { "hostNetwork": true, "containers": [ { "image": "nvcr.io/nvidia/cuda:10.2-runtime-centos7", "command": ["nvidia-smi"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi", "nvidia.com/gpu": "1" } } } ] } } } EOF $ aws batch register-job-definition --cli-input-json file://./batch-eks-gpu-jd.json

Para ejecutar un GPU trabajo en tu EKS clúster de Amazon

El GPU recurso no se puede comprimir. AWS Batch crea una especificación de módulo para los GPU trabajos en los que el valor de la solicitud es igual al valor de los límites. Se trata de un requisito de Kubernetes.

Para enviar un GPU trabajo, ejecuta los siguientes comandos.

$ aws batch submit-job --job-queue My-Eks-GPU-JQ1 --job-definition MyGPUJobOnEks_Smi --job-name My-Eks-GPU-Job # locate information that can help debug or find logs (if using Amazon CloudWatch Logs with Fluent Bit) $ aws batch describe-jobs --job <job-id> | jq '.jobs[].eksProperties.podProperties | {podName, nodeName}' { "podName": "aws-batch.f3d697c4-3bb5-3955-aa6c-977fcf1cb0ca", "nodeName": "ip-192-168-59-101.ec2.internal" }