Para criar um emprego GPU baseado nos EKS recursos da Amazon - AWS Batch

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Para criar um emprego GPU baseado nos EKS recursos da Amazon

Esta seção aborda como executar uma EKS GPU carga de trabalho da Amazon no. AWS Batch

Para criar um Kubernetes cluster GPU baseado na Amazon EKS

Antes de criar um Kubernetes cluster GPU baseado na AmazonEKS, você deve ter concluído as etapas emComeçando a usar AWS Batch no Amazon EKS. Além disso, considere também o seguinte:

  • AWS Batch suporta tipos de instância com NVIDIAGPUs.

  • Por padrão, AWS Batch seleciona o Amazon EKS accelerated AMI com a Kubernetes versão que corresponde à versão do seu plano de controle de EKS cluster da 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 não gerencia o plug-in do NVIDIA GPU dispositivo em seu nome. Você deve instalar esse plug-in em seu EKS cluster da Amazon e permitir que ele atinja os AWS Batch nós. Para obter mais informações, consulte Enabling GPU Support in Kubernetes on GitHub.

Para configurar o plug-in do NVIDIA dispositivo (DaemonSet) para direcionar os AWS Batch nós, execute os comandos a seguir.

# 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

Não recomendamos que você misture cargas de trabalho baseadas em computação (CPUe memória) com cargas de trabalho GPU baseadas nos mesmos pares de ambiente computacional e fila de trabalhos. Isso ocorre porque os trabalhos de computação podem consumir GPU capacidade.

Para anexar filas de trabalhos, execute os comandos a seguir.

$ 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 criar uma definição de EKS GPU trabalho na Amazon

Somente o nvidia.com/gpu é compatível no momento, e o valor do recurso definido deve ser um número inteiro. Você não pode usar frações de. GPU Para obter mais informações, consulte Programação GPUs na Kubernetesdocumentação.

Para registrar uma definição de GPU trabalho para a AmazonEKS, execute os seguintes 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 executar um GPU trabalho em seu EKS cluster da Amazon

O GPU recurso não é compactável. AWS Batch cria uma especificação de pod para GPU trabalhos em que o valor da solicitação é igual ao valor dos limites. Isso é um requisito do Kubernetes.

Para enviar um GPU trabalho, execute os comandos a seguir.

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