Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyiapkan partisi GPU di Amazon SageMaker HyperPod
Topik
Prasyarat
-
HyperPod Cluster Amazon EKS dengan instans GPU yang didukung
-
Operator GPU NVIDIA diinstal
-
Izin IAM yang sesuai untuk manajemen klaster
Membuat Cluster dengan Konfigurasi MIG
Menggunakan AWS CLI
aws sagemaker create-cluster \ --cluster-name my-mig-cluster \ --orchestrator 'Eks={ClusterArn=arn:aws:eks:region:account:cluster/cluster-name}' \ --instance-groups '{ "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket", "OnCreate": "on_create_script.sh" }, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-1g.5gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role", "ThreadsPerCore": 1 }' \ --vpc-config '{ "SecurityGroupIds": ["sg-12345"], "Subnets": ["subnet-12345"] }' \ --node-provisioning-mode Continuous
Menggunakan CloudFormation
{ "ClusterName": "my-mig-cluster", "InstanceGroups": [ { "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-2g.10gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role" } ], "Orchestrator": { "Eks": { "ClusterArn": "arn:aws:eks:region:account:cluster/cluster-name" } }, "NodeProvisioningMode": "Continuous" }
Menambahkan operator GPU ke cluster yang ada
Instal Operator GPU
Ganti {$AWS_REGION} dengan wilayah cluster Anda (misalnya, us-east-1, us-west-2).
helm install gpuo helm_chart/HyperPodHelmChart/charts/gpu-operator \ -f helm_chart/HyperPodHelmChart/charts/gpu-operator/regional-values/values-{$AWS_REGION}.yaml \ -n kube-system
Verifikasi Instalasi (Tunggu 2-3 menit)
Periksa semua pod operator GPU yang sedang berjalan:
kubectl get pods -n kube-system | grep -E "(gpu-operator|nvidia-)"
Pod yang diharapkan:
-
gpu-operator-* - 1 contoh (pengontrol cluster)
-
nvidia-device-plugin-daemonset-* - 1 per node GPU (semua instance GPU)
-
nvidia-mig-manager-* - 1 per node berkemampuan MiG (A100/H100)
Hapus Plugin Perangkat Lama
Nonaktifkan yang ada nvidia-device-plugin:
helm upgrade dependencies helm_chart/HyperPodHelmChart \ --set nvidia-device-plugin.devicePlugin.enabled=false \ -n kube-system
Verifikasi Sumber Daya GPU
Konfirmasi node menunjukkan kapasitas GPU. Ini harus menampilkan: nvidia.com/gpu: 8 (atau jumlah GPU Anda yang sebenarnya).
kubectl describe nodes | grep "nvidia.com/gpu"
Memperbarui Konfigurasi MIG
Mempersiapkan Node Sebelum Pembaruan MIG
Sebelum memperbarui konfigurasi MIG pada grup instans Anda, Anda harus menyiapkan node untuk mencegah gangguan beban kerja. Ikuti langkah-langkah ini untuk menguras beban kerja dengan aman dari node yang akan dikonfigurasi ulang.
Langkah 1: Identifikasi Node dalam Grup Instance
Pertama, identifikasi semua node yang termasuk dalam grup instance yang ingin Anda perbarui:
# List all nodes in the instance group kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME# Example: kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=p4d-group
Perintah ini mengembalikan daftar semua node dalam kelompok contoh tertentu. Catat setiap nama node untuk langkah-langkah berikut.
Langkah 2: Cordon dan Tiriskan Setiap Node
Untuk setiap node yang diidentifikasi pada Langkah 1, lakukan tindakan berikut:
Cordon Node
Cordoning mencegah pod baru dijadwalkan pada node:
# Cordon a single node kubectl cordonNODE_NAME# Example: kubectl cordon hyperpod-i-014a41a7001adca60
Kuras Pod Beban Kerja dari Node
Kuras node untuk mengusir semua pod beban kerja sambil mempertahankan pod sistem:
# Drain the node (ignore DaemonSets and evict pods) kubectl drainNODE_NAME\ --ignore-daemonsets \ --delete-emptydir-data \ --force \ --grace-period=300 # Example: kubectl drain hyperpod-i-014a41a7001adca60 \ --ignore-daemonsets \ --delete-emptydir-data \ --force \ --grace-period=300
Opsi Perintah Dijelaskan:
-
--ignore-daemonsets- Memungkinkan operasi pembuangan untuk dilanjutkan bahkan jika DaemonSet polong ada -
--delete-emptydir-data- Menghapus pod menggunakan volume emptyDir (diperlukan agar pengeringan berhasil) -
--force- Memaksa penghapusan pod yang tidak dikelola oleh pengontrol (gunakan dengan hati-hati) -
--grace-period=300- Memberikan pod 5 menit untuk mengakhiri dengan anggun
penting
-
Operasi pembuangan dapat memakan waktu beberapa menit tergantung pada jumlah polong dan masa tenggang penghentiannya
-
Pod sistem dalam namespace berikut akan tetap berjalan:
kube-system,,cert-manager,kubeflow,hyperpod-inference-system,kube-public,mpi-operator,gpu-operator,aws-hyperpod,jupyter-k8s-systemhyperpod-observability,kueue-systemdankeda -
DaemonSet pod akan tetap berada di node (mereka diabaikan oleh desain)
Langkah 3: Verifikasi Tidak Ada Pod Beban Kerja yang Berjalan
Setelah menguras, verifikasi bahwa tidak ada pod beban kerja yang tersisa di node (tidak termasuk ruang nama sistem):
# Check for any remaining pods outside system namespaces kubectl get pods --all-namespaces --field-selector spec.nodeName=NODE_NAME\ | grep -v "kube-system" \ | grep -v "cert-manager" \ | grep -v "kubeflow" \ | grep -v "hyperpod-inference-system" \ | grep -v "kube-public" \ | grep -v "mpi-operator" \ | grep -v "gpu-operator" \ | grep -v "aws-hyperpod" \ | grep -v "jupyter-k8s-system" \ | grep -v "hyperpod-observability" \ | grep -v "kueue-system" \ | grep -v "keda" # Example: kubectl get pods --all-namespaces --field-selector spec.nodeName=hyperpod-i-014a41a7001adca60 \ | grep -v "kube-system" \ | grep -v "cert-manager" \ | grep -v "kubeflow" \ | grep -v "hyperpod-inference-system" \ | grep -v "kube-public" \ | grep -v "mpi-operator" \ | grep -v "gpu-operator" \ | grep -v "aws-hyperpod" \ | grep -v "jupyter-k8s-system" \ | grep -v "hyperpod-observability" \ | grep -v "kueue-system" \ | grep -v "keda"
Output yang Diharapkan: Jika node dikeringkan dengan benar, perintah ini seharusnya tidak mengembalikan hasil (atau hanya menampilkan baris header). Jika ada pod yang masih berjalan, selidiki mengapa mereka tidak diusir dan hapus secara manual jika perlu.
Langkah 4: Verifikasi Status Kesiapan Node
Sebelum melanjutkan dengan pembaruan MIG, konfirmasikan bahwa semua node ditutup:
# Check node status - should show "SchedulingDisabled" kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME
Node harus ditampilkan SchedulingDisabled di kolom STATUS, menunjukkan bahwa mereka ditutup dan siap untuk pembaruan MIG.
Memperbarui Profil MIG pada Cluster yang Ada
Anda dapat mengubah profil MIG pada cluster yang ada:
aws sagemaker update-cluster \ --cluster-name my-mig-cluster \ --instance-groups '{ "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-3g.20gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role" }'
catatan
Jika pekerjaan sudah berjalan pada node, partisi MIG akan gagal. Pengguna akan mendapatkan pesan kesalahan untuk menguras node sebelum mencoba kembali partisi MIG.
Memverifikasi Konfigurasi MIG
Setelah pembuatan atau pembaruan cluster, verifikasi konfigurasi MIG:
# Update kubeconfig aws eks update-kubeconfig --nameyour-eks-cluster--regionus-east-2# Check MIG labels kubectl get nodeNODE_NAME-o=jsonpath='{.metadata.labels}' | grep mig # Check available MIG resources kubectl describe nodeNODE_NAME| grep -A 10 "Allocatable:"
Perintah Umum untuk Debugging Konfigurasi MIG
Gunakan perintah berikut untuk memecahkan masalah dan memvalidasi konfigurasi MIG di klaster Anda:
# Check GPU Operator status kubectl get pods -n gpu-operator-resources # View MIG configuration kubectl exec -n gpu-operator-resources nvidia-driver-XXXXX -- nvidia-smi mig -lgi # Check device plugin configuration kubectl logs -n gpu-operator-resources nvidia-device-plugin-XXXXX # Monitor node events kubectl get events --field-selector involvedObject.name=NODE_NAME
catatan
Ganti nvidia-driver-XXXXX dan nvidia-device-plugin-XXXXX dengan nama pod yang sebenarnya dari klaster Anda, dan NODE_NAME dengan nama node Anda.
Menggunakan Konsol SageMaker AI
Membuat Cluster Baru dengan MIG
-
Arahkan ke Amazon SageMaker AI > HyperPod Clusters > Cluster Management > Create HyperPod cluster
-
Pilih Diatur oleh EKS
-
Pilih Pengaturan khusus dan verifikasi Operator GPU diaktifkan secara default
-
Di bawah Bagian grup instans, klik Tambahkan grup
-
Konfigurasikan grup instans dan arahkan ke Konfigurasi Lanjutan untuk mengaktifkan sakelar Gunakan partisi GPU dan pilih konfigurasi MIG yang Anda inginkan dari dropdown
-
Klik Tambahkan grup Instance dan selesaikan konfigurasi cluster yang tersisa
-
Klik Kirim untuk membuat klaster
Memperbarui Konfigurasi MIG pada Cluster yang Ada
-
Arahkan ke Amazon SageMaker AI > HyperPod Clusters > Cluster Management
-
Pilih klaster yang ada dan klik Edit pada grup instans yang ingin Anda ubah
-
Dalam konfigurasi lanjutan, alihkan Gunakan partisi GPU jika belum diaktifkan dan pilih konfigurasi MIG yang berbeda dari dropdown
-
Klik Simpan perubahan