Untuk membuat pekerjaan berbasis GPU di sumber daya Amazon EKS - AWS Batch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk membuat pekerjaan berbasis GPU di sumber daya Amazon EKS

Bagian ini mencakup cara menjalankan beban kerja GPU Amazon EKS. AWS Batch

Untuk membuat Kubernetes cluster berbasis GPU di Amazon EKS

Sebelum Anda membuat Kubernetes cluster berbasis GPU di Amazon EKS, Anda harus telah menyelesaikan langkah-langkahnya. Memulai dengan AWS Batch di Amazon EKS Selain itu, pertimbangkan juga hal berikut:

  • AWS Batch mendukung jenis instance dengan GPU NVIDIA.

  • Secara default, AWS Batch pilih AMI yang dipercepat Amazon EKS dengan Kubernetes versi yang cocok dengan versi bidang kontrol cluster Amazon EKS Anda.

$ 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 tidak mengelola plugin perangkat NVIDIA GPU atas nama Anda. Anda harus menginstal plugin ini ke cluster Amazon EKS Anda dan membiarkannya menargetkan AWS Batch node. Untuk informasi selengkapnya, lihat Mengaktifkan Dukungan GPU di Kubernetes aktif. GitHub

Untuk mengkonfigurasi plugin NVIDIA perangkat (DaemonSet) untuk menargetkan AWS Batch node, jalankan perintah berikut.

# 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

Kami tidak menyarankan Anda mencampur beban kerja berbasis komputasi (CPU dan memori) dengan beban kerja berbasis GPU dalam pasangan lingkungan komputasi dan antrian pekerjaan yang sama. Ini karena pekerjaan komputasi dapat menggunakan kapasitas GPU.

Untuk melampirkan antrian pekerjaan, jalankan perintah berikut.

$ 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

Untuk membuat definisi pekerjaan GPU Amazon EKS

Hanya nvidia.com/gpu didukung saat ini dan nilai sumber daya yang Anda tetapkan harus berupa bilangan bulat. Anda tidak dapat menggunakan pecahan GPU. Untuk informasi selengkapnya, lihat Menjadwalkan GPU dalam Kubernetesdokumentasi.

Untuk mendaftarkan definisi pekerjaan GPU untuk Amazon EKS, jalankan perintah berikut.

$ 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

Untuk menjalankan pekerjaan GPU di cluster Amazon EKS Anda

Sumber daya GPU tidak dapat dikompresi. AWS Batch membuat spesifikasi pod untuk pekerjaan GPU di mana nilai permintaan sama dengan nilai limit. Ini adalah Kubernetes persyaratan.

Untuk mengirimkan pekerjaan GPU, jalankan perintah berikut.

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