Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan penjadwalan sadar topologi di tata kelola tugas Amazon SageMaker HyperPod
Penjadwalan sadar topologi di tata kelola SageMaker HyperPod tugas Amazon mengoptimalkan efisiensi pelatihan beban kerja machine learning terdistribusi dengan menempatkan pod berdasarkan topologi jaringan fisik instans Amazon Anda. EC2 Dengan mempertimbangkan struktur hierarkis AWS infrastruktur, termasuk Availability Zone, blok jaringan, dan rak fisik, penjadwalan sadar topologi memastikan bahwa pod yang membutuhkan komunikasi yang sering dijadwalkan dalam jarak dekat untuk meminimalkan latensi jaringan. Penempatan cerdas ini sangat bermanfaat untuk pekerjaan pelatihan pembelajaran mesin skala besar yang melibatkan pod-to-pod komunikasi intensif, sehingga mengurangi waktu pelatihan dan pemanfaatan sumber daya yang lebih efisien di seluruh cluster Anda.
catatan
Untuk menggunakan penjadwalan sadar topologi, pastikan bahwa versi tata kelola HyperPod tugas Anda adalah v1.2.2-eksbuild.1 atau lebih tinggi.
Penjadwalan sadar topologi mendukung jenis instans berikut:
-
ml.p3dn.24xlarge
-
ml.p4d.24xlarge
-
ml.p4de.24xlarge
-
ml.p5.48xbesar
-
ml.p5e.48xlarge
-
ml.p5en.48xlarge
-
ml.p6e-gb200.36xlarge
-
ml.trn1.2xbesar
-
ml.trn1.32xbesar
-
ml.trn1n.32xbesar
-
ml.trn2.48xlarge
-
ml.trn2u.48xlarge
Penjadwalan sadar topologi terintegrasi dengan HyperPod alur kerja Anda yang ada sambil memberikan preferensi topologi yang fleksibel melalui file YAMG kubectl dan CLI. HyperPod HyperPod Tata kelola tugas secara otomatis mengonfigurasi node cluster dengan label topologi dan bekerja dengan kebijakan tata kelola HyperPod tugas dan mekanisme peminjaman sumber daya, memastikan bahwa penjadwalan sadar topologi tidak mengganggu proses operasional Anda saat ini. Dengan dukungan bawaan untuk spesifikasi topologi yang disukai dan yang diperlukan, Anda dapat menyempurnakan penempatan beban kerja agar sesuai dengan persyaratan kinerja spesifik Anda sambil mempertahankan fleksibilitas untuk kembali ke penjadwalan standar ketika kendala topologi tidak dapat dipenuhi.
Dengan memanfaatkan label sadar topologi HyperPod, Anda dapat meningkatkan beban kerja pembelajaran mesin mereka melalui penempatan pod cerdas yang mempertimbangkan infrastruktur jaringan fisik. HyperPod Task governance secara otomatis mengoptimalkan penjadwalan pod berdasarkan topologi pusat data hierarkis, yang secara langsung diterjemahkan menjadi pengurangan latensi jaringan dan peningkatan kinerja pelatihan untuk tugas-tugas ML terdistribusi. Kesadaran topologi ini sangat berharga untuk beban kerja machine learning skala besar, karena meminimalkan overhead komunikasi dengan menempatkan pod terkait secara strategis lebih dekat bersama-sama dalam hierarki jaringan. Hasilnya adalah latensi jaringan komunikasi yang dioptimalkan antar pod, pemanfaatan sumber daya yang lebih efisien, dan kinerja keseluruhan yang lebih baik untuk AI/ML aplikasi komputasi intensif, semuanya dicapai tanpa Anda perlu mengelola konfigurasi topologi jaringan yang kompleks secara manual.
Berikut ini adalah label untuk layer jaringan topologi yang tersedia dimana HyperPod task governance dapat menjadwalkan pod di:
-
topology.k8s.aws/ -1 network-node-layer
-
topology.k8s.aws/ -2 network-node-layer
-
topology.k8s.aws/ -3 network-node-layer
Untuk menggunakan penjadwalan sadar topologi, sertakan label berikut dalam file YAMM Anda:
-
kueue.x-k8s.io/ podset-required-topology - menunjukkan bahwa job ini harus memiliki Pod yang diperlukan dan bahwa semua pod dalam node harus dijadwalkan dalam lapisan topologi yang sama.
-
kueue.x-k8s.io/ podset-preferred-topology - menunjukkan bahwa pekerjaan ini harus memiliki pod, tetapi penjadwalan pod dalam lapisan topologi yang sama lebih disukai tetapi tidak diperlukan. HyperPod Task governance akan mencoba menjadwalkan pod dalam satu layer sebelum mencoba layer topologi berikutnya.
Jika sumber daya tidak memiliki label topologi yang sama, pekerjaan akan ditangguhkan. Pekerjaan itu akan ada di daftar tunggu. Begitu Kueue melihat bahwa ada sumber daya yang cukup, ia akan mengakui dan menjalankan pekerjaan.
Contoh berikut mendemonstrasikan cara menggunakan label dalam file YAMAL Anda:
apiVersion: batch/v1 kind: Job metadata: name: test-tas-job namespace: hyperpod-ns-
team-name
labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name
-localqueue kueue.x-k8s.io/priority-class:PRIORITY_CLASS
-priority spec: parallelism: 10 completions: 10 suspend: true template: metadata: labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name
-localqueue annotations: kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3" or kueue.x-k8s.io/podset-preferred-topology: "topology.k8s.aws/network-node-layer-3" spec: nodeSelector: topology.k8s.aws/network-node-layer-3:TOPOLOGY_LABEL_VALUE
containers: - name: dummy-job image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0 args: ["3600s"] resources: requests: cpu: "100" restartPolicy: Never
Tabel berikut menjelaskan parameter baru yang dapat Anda gunakan dalam file YAMM kubectl.
Parameter | Deskripsi |
---|---|
kueue.x-k8s.io/antrian | Nama antrean yang akan digunakan untuk menjalankan tugas. Format nama antrian ini harus. hyperpod-ns- |
kueue.x-k8s.io/kelas prioritas | Memungkinkan Anda menentukan prioritas untuk penjadwalan pod. Verifikasi ini opsional. |
Anotasi | Berisi anotasi topologi yang Anda lampirkan ke pekerjaan. Topologi yang tersedia adalah kueue.x-k8s.io/ dan podset-required-topologykueue.x-k8s.io/. podset-preferred-topology Anda dapat menggunakan anotasi atau nodeSelector, tetapi tidak keduanya secara bersamaan. |
NodeSelector | Menentukan lapisan jaringan yang mewakili lapisan penempatan EC2 instance Amazon. Gunakan bidang ini atau anotasi, tetapi tidak keduanya pada saat yang bersamaan. Dalam file YAMM Anda, Anda juga dapat menggunakan parameter nodeSelector untuk memilih layer yang tepat untuk pod Anda. Untuk mendapatkan nilai label Anda, gunakan operasi DescribeInstanceTopologyAPI. |
Anda juga dapat menggunakan HyperPod CLI untuk menjalankan pekerjaan Anda dan menggunakan penjadwalan sadar topologi. Untuk informasi selengkapnya tentang API, lihat .
hyp create hyp-pytorch-job \ --version 1.1 \ --job-name sample-pytorch-job \ --image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \ --pull-policy "Always" \ --tasks-per-node 1 \ --max-retry 1 \ --priority high-priority \ --namespace hyperpod-ns-
team-name
\ --queue-name hyperpod-ns-team-name
-localqueue \ --preferred-topology-label topology.k8s.aws/network-node-layer-1
Berikut ini adalah contoh file konfigurasi yang mungkin Anda gunakan untuk menjalankan PytorchJob dengan label topologi. File ini sebagian besar mirip jika Anda ingin menjalankan pekerjaan MPI dan Tensorflow. Jika Anda ingin menjalankan pekerjaan tersebut, ingatlah untuk mengubah file konfigurasi yang sesuai, seperti menggunakan gambar yang benar, bukan PyTorchJob. Jika Anda menjalankan PyTorchJob, Anda dapat menetapkan topologi yang berbeda ke node master dan pekerja. PyTorchJob selalu memiliki satu node master, jadi kami sarankan Anda menggunakan topologi untuk mendukung pod pekerja sebagai gantinya.
apiVersion: kubeflow.org/v1 kind: PyTorchJob metadata: annotations: {} labels: kueue.x-k8s.io/queue-name: hyperpod-ns-
team-name
-localqueue name: tas-test-pytorch-job namespace: hyperpod-ns-team-name spec: pytorchReplicaSpecs: Master: replicas: 1 restartPolicy: OnFailure template: metadata: labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name
-localqueue spec: containers: - command: - python3 - /opt/pytorch-mnist/mnist.py - --epochs=1 image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727 imagePullPolicy: Always name: pytorch Worker: replicas: 10 restartPolicy: OnFailure template: metadata: # annotations: # kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3" labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name
-localqueue spec: containers: - command: - python3 - /opt/pytorch-mnist/mnist.py - --epochs=1 image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727 imagePullPolicy: Always name: pytorch resources: limits: cpu: 1 requests: memory: 200Mi cpu: 1 #nodeSelector: # topology.k8s.aws/network-node-layer-3: xxxxxxxxxxx
Untuk melihat topologi klaster Anda, gunakan operasi DescribeInstanceTopologyAPI. Secara default, topologi disembunyikan di dan AWS Management Console Amazon SageMaker Studio. Ikuti langkah-langkah ini untuk melihatnya di antarmuka yang Anda gunakan.
.studio
-
Di SageMaker Studio, navigasikan ke cluster Anda.
-
Dalam tampilan Tugas, pilih menu opsi di kolom Nama, lalu pilih Kelola kolom.
-
Pilih topologi yang diminta dan kendala Topologi untuk menambahkan kolom untuk melihat informasi topologi dalam daftar pod Kubernetes.
AWS Management Console
-
Buka konsol Amazon SageMaker AI di https://console.aws.amazon.com/sagemaker/
. -
Di bawah HyperPod cluster, pilih Manajemen cluster.
-
Pilih tab Tugas, lalu pilih ikon roda gigi.
-
Di bawah atribut instance, alihkan topologi yang diminta dan kendala Topologi.
-
Pilih Konfirmasi untuk melihat informasi topologi dalam tabel.