So erstellen Sie einen auf EKS Amazon-Ressourcen GPU basierenden Job - AWS Batch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

So erstellen Sie einen auf EKS Amazon-Ressourcen GPU basierenden Job

In diesem Abschnitt wird beschrieben, wie Sie einen EKS GPU Amazon-Workload auf ausführen AWS Batch.

Um einen GPU basierten Kubernetes Cluster auf Amazon zu erstellen EKS

Bevor Sie einen GPU basierten Kubernetes Cluster auf Amazon erstellenEKS, müssen Sie die unter aufgeführten Schritte abgeschlossen habenErste Schritte mit AWS Batch in Amazon EKS. Beachten Sie außerdem Folgendes:

  • AWS Batch unterstützt Instanztypen mit NVIDIAGPUs.

  • AWS Batch Wählt standardmäßig die von Amazon EKS beschleunigte Version AMI mit der Kubernetes Version aus, die Ihrer Version der EKS Amazon-Cluster-Steuerebene entspricht.

$ 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 verwaltet das NVIDIA GPU Geräte-Plugin nicht in Ihrem Namen. Sie müssen dieses Plugin in Ihrem EKS Amazon-Cluster installieren und zulassen, dass es auf die AWS Batch Knoten abzielt. Weitere Informationen finden Sie unter GPUSupport aktivieren in Kubernetes on GitHub.

Führen Sie die folgenden Befehle aus, um NVIDIA das Geräte-Plugin (DaemonSet) so zu konfigurieren, dass es auf die AWS Batch Knoten abzielt.

# 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

Es wird nicht empfohlen, rechenbasierte (CPUund speicher-) Workloads mit GPU basierten Workloads in derselben Kombination aus Rechenumgebung und Jobwarteschlange zu kombinieren. Das liegt daran, dass Rechenaufträge Kapazität verbrauchen können. GPU

Führen Sie die folgenden Befehle aus, um Jobwarteschlangen anzuhängen.

$ 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

Um eine EKS GPU Amazon-Jobdefinition zu erstellen

Derzeit nvidia.com/gpu wird nur unterstützt, und der von Ihnen festgelegte Ressourcenwert muss eine ganze Zahl sein. Sie können keine Bruchteile von GPU verwenden. Weitere Informationen finden Sie GPUs in der KubernetesDokumentation unter Zeitplan.

Führen Sie die folgenden Befehle ausEKS, um eine GPU Jobdefinition für Amazon zu registrieren.

$ 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

Um einen GPU Job in Ihrem EKS Amazon-Cluster auszuführen

Die GPU Ressource ist nicht komprimierbar. AWS Batch erstellt eine Pod-Spezifikation für GPU Jobs, bei denen der Wert der Anfrage dem Wert der Grenzwerte entspricht. Dies ist eine Kubernetes Anforderung.

Führen Sie die folgenden Befehle aus, um einen GPU Job einzureichen.

$ 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" }