Menginstal operator pelatihan - Amazon SageMaker AI

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

Menginstal operator pelatihan

Lihat bagian berikut untuk mempelajari cara menginstal operator pelatihan.

Prasyarat

Sebelum Anda menggunakan operator HyperPod pelatihan, Anda harus telah menyelesaikan prasyarat berikut:

  • Membuat HyperPod cluster dengan orkestrasi Amazon EKS.

  • Menginstal AMI terbaru di HyperPod cluster Anda. Untuk informasi selengkapnya, lihat SageMaker HyperPod Rilis AMI untuk Amazon EKS.

  • Manajer sertifikat yang diinstal.

  • Siapkan EKS Pod Identity Agent menggunakan konsol. Jika Anda ingin menggunakan AWS CLI, gunakan perintah berikut:

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Wilayah AWS
  • (Opsional) Jika Anda menjalankan node HyperPod cluster di VPC pribadi, Anda harus menyiapkan titik akhir PrivateLinks VPC untuk Amazon AI API (com.amazonaws.aws-region.sagemaker.api) dan layanan SageMaker Amazon EKS Auth (com.amazonaws. aws-region.eks-auth). Anda juga harus memastikan bahwa node cluster Anda berjalan dengan subnet yang berada dalam grup keamanan yang memungkinkan lalu lintas merutekan melalui titik akhir VPC untuk berkomunikasi dengan SageMaker AI dan Amazon EKS. Jika ini tidak diatur dengan benar, penginstalan add-on bisa gagal. Untuk mempelajari selengkapnya tentang menyiapkan titik akhir VPC, lihat Membuat titik akhir VPC.

Menginstal operator pelatihan

Anda sekarang dapat menginstal operator HyperPod pelatihan melalui konsol SageMaker AI, konsol Amazon EKS, atau dengan Metode konsol menawarkan pengalaman yang disederhanakan yang membantu Anda menginstal operator. AWS CLI Ini AWS CLI menawarkan pendekatan terprogram yang memungkinkan Anda menyesuaikan lebih banyak instalasi Anda.

Di antara dua pengalaman konsol, SageMaker AI menyediakan instalasi satu klik yang menciptakan peran eksekusi IAM, membuat asosiasi identitas pod, dan menginstal operator. Instalasi konsol Amazon EKS serupa, tetapi metode ini tidak secara otomatis membuat peran eksekusi IAM. Selama proses ini, Anda dapat memilih untuk membuat peran eksekusi IAM baru dengan informasi yang telah diisi sebelumnya oleh konsol. Secara default, peran yang dibuat ini hanya memiliki akses ke cluster saat ini tempat Anda menginstal operator. Kecuali Anda mengedit izin peran untuk menyertakan kluster lain, jika Anda menghapus dan menginstal ulang operator, Anda harus membuat peran baru.

SageMaker AI console (recommended)
  1. Buka konsol Amazon SageMaker AI di https://console.aws.amazon.com/sagemaker/.

  2. Buka halaman detail klaster Anda.

  3. Pada tab Dasbor, cari add-on bernama operator SageMaker HyperPod pelatihan Amazon, dan pilih instal. Selama proses instalasi, SageMaker AI membuat peran eksekusi IAM dengan izin yang mirip dengan kebijakan AmazonSageMakerHyperPodTrainingOperatorAccessterkelola dan membuat asosiasi identitas pod antara cluster Amazon EKS Anda dan peran eksekusi baru Anda.

Amazon EKS console
catatan

Jika Anda menginstal add-on melalui kluster Amazon EKS, pertama-tama pastikan bahwa Anda telah menandai HyperPod klaster Anda dengan pasangan nilai kunci. SageMaker:true Jika tidak, instalasi akan gagal.

  1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/rumah#/cluster.

  2. Buka kluster EKS Anda, pilih Add-on, lalu pilih Dapatkan lebih banyak Add-on.

  3. Pilih operator SageMaker HyperPod pelatihan Amazon, lalu pilih Berikutnya.

  4. Di bawah Versi, konsol default ke versi terbaru, yang kami sarankan untuk Anda gunakan.

  5. Di bawah Akses Add-on, pilih peran IAM identitas pod yang akan digunakan dengan add-on operator pelatihan. Jika Anda belum memiliki peran, pilih Buat peran yang direkomendasikan untuk membuatnya.

  6. Selama proses pembuatan peran ini, konsol IAM mengisi semua informasi yang diperlukan, seperti kasus penggunaan, kebijakan AmazonSageMakerHyperPodTrainingOperatorAccessterkelola, dan izin lain yang diperlukan, nama peran, dan deskripsi. Saat Anda melalui langkah-langkah, tinjau informasi, dan pilih Buat peran.

  7. Di konsol EKS, tinjau pengaturan add-on Anda, lalu pilih Buat.

CLI
  1. Pastikan bahwa peran eksekusi IAM untuk HyperPod klaster Anda memiliki hubungan kepercayaan yang memungkinkan EKS Pod Identity untuk mengambil peran atau atau membuat peran IAM baru dengan kebijakan kepercayaan berikut. Atau, Anda dapat menggunakan konsol Amazon EKS untuk menginstal add-on, yang menciptakan peran yang direkomendasikan.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Lampirkan kebijakan AmazonSageMakerHyperPodTrainingOperatorAccess terkelola ke peran yang Anda buat.

  3. Kemudian buat asosiasi identitas pod antara cluster EKS Anda, peran IAM Anda, dan peran IAM baru Anda.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Wilayah AWS
  4. Setelah Anda menyelesaikan proses, Anda dapat menggunakan ListPodIdentityAssociations operasi untuk melihat asosiasi yang Anda buat. Berikut ini adalah contoh respons dari seperti apa tampilannya.

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. Untuk menginstal operator pelatihan, gunakan create-addon operasi. Parameter --addon-version bersifat opsional. Jika Anda tidak menyediakannya, defaultnya adalah versi terbaru. Untuk mendapatkan versi yang memungkinkan, gunakan DescribeAddonVersionsoperasi.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

Jika Anda sudah menginstal operator pelatihan di HyperPod cluster Anda, Anda dapat memperbarui add-on EKS ke versi yang Anda inginkan. Jika Anda ingin menggunakan pelatihan tanpa pemeriksaan atau pelatihan elastis, pertimbangkan hal berikut:

  • Baik pelatihan tanpa pemeriksaan dan pelatihan elastis membutuhkan add-on EKS untuk berada di versi 1.2.0 atau lebih tinggi.

  • Operator SageMaker HyperPod pelatihan Amazon mempertahankan kompatibilitas mundur untuk versi add-on EKS apa pun, sehingga Anda dapat meningkatkan dari versi add-on apa pun ke 1.2.0 atau lebih tinggi.

  • Jika Anda menurunkan versi dari versi 1.2.0 atau versi lebih tinggi ke versi yang lebih rendah, Anda harus terlebih dahulu menghapus pekerjaan yang ada sebelum downgrade dan mengirimkan kembali pekerjaan setelah downgrade selesai.

Amazon EKS Console
  1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/rumah#/cluster.

  2. Buka kluster EKS Anda, dan pilih Add-on. Kemudian, pilih add-on operator SageMaker HyperPod pelatihan Amazon dan pilih Edit.

  3. Di menu Versi, pilih versi add-on yang Anda inginkan, lalu pilih Simpan perubahan.

CLI
  1. Pertama, dapatkan daftar versi add-on yang didukung untuk klaster Anda.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. Kemudian perbarui add-on ke versi yang Anda inginkan.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

Operator pelatihan dilengkapi dengan sejumlah opsi dengan nilai default yang mungkin sesuai dengan kasus penggunaan Anda. Kami menyarankan Anda mencoba operator pelatihan dengan nilai default sebelum mengubahnya. Tabel di bawah ini menjelaskan semua parameter dan contoh kapan Anda mungkin ingin mengonfigurasi setiap parameter.

Parameter Deskripsi Default
hpTrainingControllerManager.manager.resources.requests.cpu Berapa banyak prosesor yang dialokasikan untuk controller 1
hpTrainingControllerManager.manager.resources.requests.memory Berapa banyak memori untuk dialokasikan ke controller 2Gi
hpTrainingControllerManager.manager.resources.limits.cpu Batas CPU untuk pengontrol 2
hpTrainingControllerManager.manager.resources.limits.memory Batas memori untuk pengontrol 4Gi
hpTrainingControllerManajer.nodeSelector Node selector untuk pod controller Perilaku default adalah memilih node dengan label sagemaker.amazonaws.com/compute-type: "HyperPod"

HyperPod agen elastis

Agen HyperPod elastis adalah perpanjangan dari PyTorch's ElasticAgent. Ini mengatur siklus hidup pekerja pelatihan di setiap wadah dan berkomunikasi dengan operator pelatihan. HyperPod Untuk menggunakan operator HyperPod pelatihan, Anda harus terlebih dahulu memasang agen HyperPod elastis ke dalam gambar pelatihan Anda sebelum Anda dapat mengirimkan dan menjalankan pekerjaan menggunakan operator. Berikut ini adalah file docker yang menginstal agen elastis dan digunakan hyperpodrun untuk membuat peluncur pekerjaan.

catatan

Baik pelatihan tanpa pemeriksaan dan pelatihan elastis mengharuskan Anda menggunakan agen HyperPod elastis versi 1.1.0 atau lebih tinggi.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \ training.py --script-args

Anda sekarang dapat mengirimkan pekerjaan dengankubectl.

HyperPod argumen agen elastis

Agen HyperPod elastis mendukung semua argumen asli dan menambahkan beberapa argumen tambahan. Berikut ini adalah semua argumen yang tersedia dalam agen HyperPod elastis. Untuk informasi lebih lanjut tentang Agen PyTorch Elastis, lihat dokumentasi resmi mereka.

Pendapat Deskripsi nilai default
--shutdown-sinyal Sinyal untuk dikirim ke pekerja untuk shutdown (SIGTERM atau SIGKILL) “SIGKILL”
--shutdown-timeout Batas waktu dalam hitungan detik antara sinyal shutdown dan sinyal SIGKILL 15
--server-host Alamat server agen “0.0.0.0"
--server-port Port server agen 8080
--server-log-level Tingkat log server agen “Info”
--server-shutdown-timeout Batas waktu shutdown server dalam hitungan detik 300
--pre-train-script Jalur ke skrip pra-pelatihan Tidak ada
--pre-train-args Argumen untuk skrip pra-pelatihan Tidak ada
--post-train-script Jalur ke skrip pasca-pelatihan Tidak ada
--post-train-args Argumen untuk skrip pasca-pelatihan Tidak ada
--inprocess-restart Bendera yang menentukan apakah akan menggunakan fitur inprocess_restart SALAH
--inprocess-timeout Waktu dalam hitungan detik agen menunggu pekerja mencapai penghalang sinkronisasi sebelum memicu restart tingkat proses. Tidak ada

Tata kelola tugas (opsional)

Operator pelatihan terintegrasi dengan tata kelola HyperPod tugas, sistem manajemen yang kuat yang dirancang untuk merampingkan alokasi sumber daya dan memastikan pemanfaatan sumber daya komputasi yang efisien di seluruh tim dan proyek untuk kluster Amazon EKS Anda. Untuk mengatur tata kelola HyperPod tugas, lihatPengaturan untuk tata kelola SageMaker HyperPod tugas.

catatan

Saat menginstal add-on tata kelola HyperPod tugas, Anda harus menggunakan versi v1.3.0-eksbuild.1 atau lebih tinggi.

Saat mengirimkan pekerjaan, pastikan Anda menyertakan nama antrian dan label kelas prioritas dan. hyperpod-ns-team-name-localqueue priority-class-name-priority Misalnya, jika Anda menggunakan Kueue, label Anda menjadi sebagai berikut:

  • kueue.x-k8s.io/antrian nama: hyperpod-ns- -localqueue team-name

  • kueue.x-k8s.io/kelas prioritas: -nama-prioritas priority-class

Berikut ini adalah contoh dari apa file konfigurasi Anda mungkin terlihat seperti:

apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample 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: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"

Kemudian gunakan perintah kubectl berikut untuk menerapkan file YAMM.

kubectl apply -f task-governance-job.yaml

Kueue (opsional)

Meskipun Anda dapat menjalankan pekerjaan secara langsung, organisasi Anda juga dapat mengintegrasikan operator pelatihan dengan Kueue untuk mengalokasikan sumber daya dan menjadwalkan pekerjaan. Ikuti langkah-langkah di bawah ini untuk menginstal Kueue ke dalam cluster Anda HyperPod .

  1. Ikuti panduan instalasi di dokumentasi resmi Kueue. Saat Anda mencapai langkah konfigurasicontroller_manager_config.yaml, tambahkan konfigurasi berikut:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. Ikuti langkah-langkah lainnya dalam panduan instalasi resmi. Setelah Anda selesai menginstal Kueue, Anda dapat membuat beberapa antrian sampel dengan perintah. kubectl apply -f sample-queues.yaml Gunakan file YAMB berikut.

    apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500