View a markdown version of this page

Memulai dengan SageMaker HyperPod menggunakan AWS CLI - Amazon SageMaker AI

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

Memulai dengan SageMaker HyperPod menggunakan AWS CLI

Tutorial berikut menunjukkan cara membuat SageMaker HyperPod cluster baru dengan Slurm melalui perintah untuk AWS CLI . SageMaker HyperPod Pada akhir tutorial ini, Anda akan memiliki cluster Slurm yang berfungsi dengan node controller, node login, dan grup pekerja komputasi, siap untuk menjadwalkan dan menjalankan beban kerja ML. Tutorial ini mencakup pengaturan topologi Slurm, opsi konfigurasi siklus hidup node, penyimpanan bersama FSx opsional, dan cara terhubung ke cluster Anda.

Sebelum memulai, pastikan Anda telah menyelesaikan Prasyarat untuk menggunakan SageMaker HyperPod (VPC, kuota, fsX) dan AWS Identity and Access Management untuk SageMaker HyperPod (peran IAM, peran eksekusi dengan). AmazonSageMakerClusterInstanceRolePolicy

Konsep utama

Bagian ini mencakup konsep konfigurasi inti untuk membuat cluster SageMaker HyperPod Slurm. Memahami konsep-konsep ini akan membantu Anda membuat pilihan berdasarkan informasi saat mengonfigurasi cluster Anda, tetapi jika Anda ingin segera memulai, Anda dapat langsung melompat ke Buat klaster Anda dan merujuk kembali ke sini sesuai kebutuhan.

Saat membuat Slurm-orchestrated cluster, Anda membuat dua pilihan konfigurasi independen:

  1. Konfigurasi topologi slurm — Bagaimana topologi cluster Slurm (peran node, partisi) didefinisikan?

  2. Konfigurasi siklus hidup node — Bagaimana node disediakan dan disesuaikan?

Untuk topologi Slurm, tutorial ini menggunakan pendekatan API-driven konfigurasi, di mana Anda mendefinisikan peran node dan partisi secara langsung dalam CreateCluster permintaan menggunakan SlurmConfig pada setiap grup instance dan Orchestrator.Slurm di tingkat cluster. Ini adalah pendekatan yang direkomendasikan untuk cluster baru. Ini menyediakan satu sumber kebenaran, validasi bawaan, dan deteksi drift konfigurasi partisi tanpa file tambahan untuk dikelola. Atau, Anda dapat menggunakan provisioning_parameters.json file lama yang disimpan di Amazon S3 untuk kompatibilitas mundur dengan cluster yang ada. Untuk detail tentang pendekatan warisan, lihatSageMaker HyperPod Konfigurasi slurm.

Untuk konfigurasi siklus hidup node, SageMaker HyperPod mendukung tiga opsi. Dalam kasus yang paling sederhana, Anda menghilangkan LifeCycleConfig seluruhnya dan HyperPod secara otomatis mengonfigurasi node menggunakan AMI-based konfigurasi, menyiapkan Slurm, dan paket penting seperti Docker, Enroot, dan Pyxis untuk menjalankan beban kerja ML, tanpa memerlukan skrip atau bucket Amazon S3. Jika Anda memerlukan penyesuaian di atas AMI-based konfigurasi, Anda dapat memberikan skrip ekstensi melalui OnInitComplete yang berjalan setelah konfigurasi selesai. Untuk kontrol penuh atas seluruh urutan penyediaan, OnCreate jalur memungkinkan skrip Anda memiliki segalanya, termasuk saat Slurm dimulai.

Untuk beban kerja ML, Anda biasanya juga memerlukan sistem file berkinerja tinggi bersama untuk data pelatihan, pos pemeriksaan, dan pustaka bersama. SageMaker HyperPod mendukung Amazon FSx for Lustre dan FSx untuk OpenZFS, dikonfigurasi per grup instans melalui. InstanceStorageConfigs Konfigurasi fsX adalah opsional untuk pembuatan cluster tetapi direkomendasikan untuk beban kerja produksi.

Mengkonfigurasi topologi Slurm melalui API

Semua contoh dalam tutorial ini menggunakan konfigurasi topologi API-driven Slurm, di mana Anda mendefinisikan struktur cluster Slurm secara langsung dalam permintaan CreateCluster API daripada melalui file konfigurasi terpisah.

Cluster Slurm membutuhkan setidaknya node pengontrol (yang menjalankan slurmctld daemon dan mengkoordinasikan penjadwalan pekerjaan) dan satu atau lebih node komputasi (yang menjalankan pekerjaan). Secara opsional, Anda dapat menambahkan node login untuk memberi pengguna titik akses khusus untuk mengirimkan dan mengelola pekerjaan tanpa masuk ke pengontrol secara langsung. Dalam permintaan API, Anda menetapkan setiap grup instance peran Slurm yang digunakanSlurmConfig, menentukan apakah grup berfungsi sebagai pengontrol, login, atau node komputasi. Grup komputasi juga dipetakan ke satu atau lebih partisi Slurm, yang bertindak sebagai antrian logis yang mengatur bagaimana pekerjaan dijadwalkan di berbagai set node.

Pada tingkat cluster, Orchestrator.Slurm mengontrol bagaimana HyperPod mengelola konfigurasi partisi dislurm.conf. Anda memilih strategi yang menentukan HyperPod apakah sumber kebenaran tunggal untuk topologi partisi, apakah itu menimpa perubahan manual, atau apakah itu menggabungkan API-defined konfigurasi dengan pengeditan manual yang Anda buat. Berikut adalah referensi untuk bidang yang digunakan.

SlurmConfig(per grup instans):

"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["partition-name"] }
Bidang Deskripsi
NodeType Wajib. Peran Slurm untuk grup instance ini. Nilai-nilai yang valid: Controller, Login, Compute. Tepat satu kelompok contoh harusController.
PartitionNames Bersyarat. Nama partisi slurm. Diperlukan untuk tipe Compute node; tidak diizinkan untuk Controller atauLogin.

Orchestrator.Slurm(tingkat cluster):

"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }

SlurmConfigStrategymenentukan bagaimana HyperPod mengelola pemetaan partisi-ke-simpul di pada node pengontrol. slurm.conf Saat Anda membuat atau memperbarui cluster, HyperPod tulis konfigurasi partisi slurm.conf berdasarkan yang SlurmConfig Anda tentukan pada setiap grup instans, pemetaan grup instans komputasi ke partisi yang ditetapkan dan mendaftarkan pengontrol dan node login dengan peran Slurm yang sesuai.

Strategi yang Anda pilih mengontrol apa yang terjadi ketika konfigurasi partisi slurm.conf telah dimodifikasi di luar API, misalnya, oleh administrator yang mengedit file langsung pada node pengontrol. DenganManaged, HyperPod memperlakukan API sebagai satu-satunya sumber kebenaran dan akan mendeteksi dan memblokir pembaruan jika slurm.conf pada disk telah melayang. DenganOverwrite, HyperPod memaksa API-defined konfigurasi ke pengontrol, membuang pengeditan manual apa pun. slurm.conf Ini berguna untuk pulih dari perubahan yang tidak diinginkan. DenganMerge, HyperPod mempertahankan pengeditan manual slurm.conf dan menggabungkannya dengan konfigurasi API, memberi pengguna tingkat lanjut fleksibilitas untuk mempertahankan slurm.conf pengaturan khusus di samping partisi. API-managed

Strategi Deteksi drift partisi Perubahan manual Kasus penggunaan
Managed (default) Diaktifkan; memblokir pembaruan jika drift ditemukan Tidak didukung Sumber Kebenaran Tunggal
Overwrite Nonaktif Ditimpa pada pembaruan Pemulihan dari drift
Merge Nonaktif Diawetkan dan digabung slurm.confKebutuhan kustom
penting

Deteksi drift hanya berlaku untuk konfigurasi partisi Slurm di slurm.conf (pemetaan partisi-ke-simpul yang ditentukan melalui API). Perubahan pada slurm.conf pengaturan lain, seperti parameter penjadwalan, batas sumber daya, atau konfigurasi akuntansi, tidak dipantau dan tidak akan terdeteksi atau dilaporkan oleh. HyperPod

catatan

Jika Anda lebih suka mendefinisikan topologi Slurm menggunakan provisioning_parameters.json file alih-alih API, hilangkan dari grup instance dan SlurmConfig dari permintaan cluster, dan Orchestrator.Slurm unggah file ke Amazon S3 bersama skrip siklus hidup node Anda. Lihat perinciannya di SageMaker HyperPod Konfigurasi slurm.

Opsi konfigurasi siklus hidup node

Saat membuat klaster SageMaker HyperPod Slurm, Anda memilih bagaimana node setiap grup instans disediakan dengan mengonfigurasi blok dalam LifeCycleConfig permintaan. CreateCluster SageMaker HyperPod mendukung tiga opsi konfigurasi siklus hidup node, masing-masing menawarkan tingkat kontrol yang berbeda atas proses penyediaan.

Dengan AMI-based konfigurasi saja, Anda menghilangkan LifeCycleConfig sepenuhnya. HyperPod secara otomatis mengkonfigurasi node menggunakan AMI-based konfigurasi, menyiapkan Slurm, menginstal paket penting, dan memulai semua layanan yang diperlukan. Ini adalah jalur paling sederhana dan tidak memerlukan bucket atau skrip Amazon S3.

Dengan opsi Ekstensi, Anda menentukan OnInitComplete LifeCycleConfig bersama dengan SourceS3Uri menunjuk ke skrip ekstensi Anda di Amazon S3. HyperPod menjalankan AMI-based konfigurasi penuh terlebih dahulu, kemudian mengeksekusi skrip Anda. Ini memungkinkan Anda menambahkan kustomisasi, seperti agen pemantauan, integrasi LDAP, atau dudukan penyimpanan tambahan, tanpa mengelola penyediaan dasar.

Dengan opsi Kustom, Anda menentukan OnCreate LifeCycleConfig bersama dengan SourceS3Uri menunjuk ke skrip siklus hidup lengkap yang disetel di Amazon S3. HyperPod tidak menjalankan AMI-based konfigurasi dan tidak memulai Slurm. Skrip Anda memiliki seluruh urutan penyediaan. Ini memberi Anda kontrol penuh atas perangkat lunak apa yang diinstal, bagaimana itu dikonfigurasi, dan kapan Slurm dimulai.

Opsi siklus hidup simpul Bucket Amazon S3 dibutuhkan? Skrip untuk diunggah? LifeCycleConfig di API?
AMI-based konfigurasi saja (paling sederhana) Tidak Tidak Hilangkan sepenuhnya
Ekstensi (OnInitComplete) Ya Hanya skrip ekstensi Anda OnInitComplete + SourceS3Uri
Kustom (OnCreate) Ya Set skrip siklus hidup penuh OnCreate + SourceS3Uri
catatan

Konfigurasi siklus hidup node opsional hanya didukung untuk Slurm-orchestrated cluster. EKS-orchestrated cluster dan cluster Slurm menggunakan Continuous NodeProvisioningMode terus membutuhkan LifeCycleConfig dengan OnCreate dan SourceS3Uri pada setiap grup instans.

catatan

OnCreatedan OnInitComplete saling eksklusif. Menentukan keduanya pada grup instance yang sama menghasilkan kesalahan validasi.

Konfigurasi fsX dan VPC

Untuk beban kerja ML, sistem file berkinerja tinggi bersama sangat penting untuk menyimpan data pelatihan, pos pemeriksaan model, dan pustaka bersama di seluruh node cluster. SageMaker HyperPod mendukung Amazon FSx for Lustre dan FSx untuk OpenZFS, dikonfigurasi per grup instans melalui. InstanceStorageConfigs Sistem file FSx berada di VPC Anda, jadi konfigurasi VPC kustom () diperlukan saat menggunakan fsX. VpcConfig

Konfigurasi fsX bekerja dengan ketiga opsi konfigurasi siklus hidup node. Saat menggunakan AMI-based konfigurasi atauOnInitComplete, HyperPod menangani pemasangan FSx secara otomatis. Saat menggunakanOnCreate, skrip siklus hidup Anda bertanggung jawab untuk pemasangan.

FSx for Lustre:

"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ]
Bidang Deskripsi
DnsName Wajib. Nama DNS dari FSx for Lustre filesystem.
MountPath Tidak wajib. Jalur pemasangan lokal pada instance. Default: /fsx
MountName Wajib. Nama mount dari sistem file FSx for Lustre. Temukan ini di konsol FSx for Lustre atau melalui. aws fsx describe-file-systems

FSx untuk OpenZFS:

"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } } ]
Bidang Deskripsi
DnsName Wajib. Nama DNS dari FSx untuk sistem file OpenZFS.
MountPath Tidak wajib. Jalur pemasangan lokal pada instance. Default: /home
catatan

Setiap grup instans dapat memiliki paling banyak satu FSx for Lustre dan satu FSx untuk konfigurasi OpenZFS. Grup instance yang berbeda dapat memasang sistem file yang berbeda.

Konfigurasi VPC (diperlukan untuk FSx):

Tambahkan VpcConfig di tingkat cluster dalam CreateCluster permintaan Anda:

"VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] }

Untuk informasi selengkapnya tentang pengaturan VPC, lihat. Prasyarat untuk menggunakan SageMaker HyperPod Untuk informasi lebih lanjut tentang penyiapan FSx, lihat. Prasyarat untuk menggunakan SageMaker HyperPod

Buat klaster Anda

Bagian ini memandu Anda melalui pembuatan cluster menggunakan masing-masing dari tiga opsi konfigurasi siklus hidup node yang dijelaskan dalam. Opsi konfigurasi siklus hidup node Untuk sebagian besar pengguna, kami sarankan memulai dengan Opsi A, AMI-based konfigurasi saja. Ini tidak memerlukan skrip atau bucket Amazon S3 dan mengirimkan cluster yang berfungsi penuh di luar kotak. Pilih Opsi B jika Anda perlu menambahkan penyesuaian di atas AMI-based konfigurasi, atau Opsi C jika Anda memerlukan kontrol penuh atas proses penyediaan.

Untuk ExecutionRole dalam semua contoh, berikan ARN dari peran IAM yang Anda buat dengan yang dikelola. AmazonSageMakerClusterInstanceRolePolicy Prasyarat untuk menggunakan SageMaker HyperPod

Opsi A: AMI-based konfigurasi saja (tanpa konfigurasi siklus hidup)

Ini adalah jalan yang paling sederhana. Tidak diperlukan bucket, skrip, atau file konfigurasi Amazon S3. SageMaker HyperPod mengkonfigurasi node secara otomatis menggunakan AMI-based konfigurasi, menginstal perangkat lunak penting dan menerapkan konfigurasi sehingga cluster siap untuk menjalankan beban kerja ML di luar kotak. Semua paket perangkat lunak disematkan di AMI, sehingga tidak diperlukan akses internet selama penyediaan.

Tabel berikut mencantumkan kemampuan yang termasuk dalam AMI-based konfigurasi:

Kemampuan Deskripsi
Daemon slurmPengontrol dan komputasi daemon dimulai secara otomatis
DockerRuntime kontainer untuk membangun dan menjalankan kontainer ML
EnrootEksekusi kontainer tanpa akar untuk beban kerja Slurm
PyxisPlugin slurm untuk integrasi wadah
Akuntansi slurmMengkonfigurasi akuntansi pekerjaan Slurm untuk melacak riwayat pekerjaan dan konsumsi sumber daya
MariaDBMenyebarkan MariaDB pada node pengontrol sebagai basis data pendukung untuk akuntansi Slurm
Pembuatan kunci SSHPasangan kunci yang dihasilkan untuk pengguna ubuntu default
Perbanyakan SSHKredensi pengguna disebarkan di seluruh node komputasi untuk pekerjaan multi-node
Rotasi log slurmMencegah masalah log bloat dan disk penuh
Pengaturan direktori rumahDirektori home pengguna Ubuntu dipasang ke sistem file bersama
  1. Simpan yang berikut ini sebagaicreate_cluster.json:

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ] } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] } }

    Perhatikan bahwa tidak LifeCycleConfig ada yang ditentukan pada grup instance apa pun.

    Topologi Slurm didefinisikan melalui SlurmConfig pada setiap grup instance: my-controller-group diberi Controller peran (berjalanslurmctld), my-login-group berfungsi sebagai simpul untuk akses pengguna, dan worker-group-1 merupakan Login simpul yang ditugaskan untuk Compute partition-1 penjadwalan pekerjaan. Pada tingkat cluster, SlurmConfigStrategy: "Managed" memastikan HyperPod adalah satu-satunya sumber kebenaran untuk konfigurasi partisi. Kelompok pekerja menyertakan sistem file FSx for Lustre yang /fsx dipasang di untuk penyimpanan bersamaVpcConfig, dan ditentukan pada tingkat cluster seperti yang diperlukan untuk FSx.

    Tip

    Jika Anda menguji tanpa FSx, Anda dapat menghilangkan InstanceStorageConfigs dan menghapus FsxLustreConfig VpcConfig dari permintaan. FSx tidak diperlukan untuk pembuatan klaster, tetapi direkomendasikan untuk beban kerja ML produksi.

  2. Buat cluster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  3. Periksa statusnya:

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    Dengan AMI-based konfigurasi saja, grup instance dalam respons tidak menyertakan LifeCycleConfig blok. Berikut ini adalah contoh terpotong yang menunjukkan grup instance controller:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" } } ] }

    Setelah status berubahInService, lanjutkan keConnect ke klaster Anda.

Opsi B: Perluas AMI-based konfigurasi dengan OnInitComplete

Gunakan opsi ini saat Anda memerlukan penyesuaian di atas AMI-based konfigurasi, seperti agen pemantauan, LDAP/SSSD integrasi, atau dudukan penyimpanan tambahan. SageMaker HyperPod menjalankan AMI-based konfigurasi terlebih dahulu, lalu mengeksekusi skrip ekstensi Anda.

  1. Tulis skrip ekstensi Anda. Misalnya,extend-defaults.sh:

    #!/bin/bash set -e echo "Running post-initialization customizations..." # Example: Install a monitoring agent # apt-get install -y my-monitoring-agent # Example: Configure LDAP integration # /opt/custom/setup-ldap.sh # Example: Mount an additional S3 bucket # mount-s3 my-data-bucket /mnt/s3-data echo "Custom extensions complete."
    Menggunakan skrip ekstensi dari repositori Pelatihan Terdistribusi Awsome

    Folder Extensions di repositori Awsome Distributed Training menyediakan skrip ekstensi siap pakai untuk tugas-tugas umum seperti menambahkan pengguna dan mengaktifkan observabilitas. Setiap kemampuan mandiri dalam direktorinya sendiri dengan skrip titik masuknya sendiri yang dapat diberikan langsung sebagai OnInitComplete skrip.

    Untuk cluster yang membutuhkan banyak kemampuan, sebaiknya gunakan run_extensions.sh skrip yang tersedia di tingkat atas folder Extensions. Skrip ini mengatur semua skrip ekstensi yang tersedia dan menyediakan sakelar boolean sederhana untuk mengaktifkan atau menonaktifkan setiap kemampuan. Untuk menggunakannya, unggah seluruh folder Extensions ke bucket Amazon S3 Anda dan tentukan run_extensions.sh sebagai skrip: OnInitComplete

    s3://<bucket>/<prefix>/ |-- run_extensions.sh (OnInitComplete target) |-- detect-node/ (node type detection utility) |-- add-users/ (user management scripts + config) |-- observability/ (observability scripts + config)

    Di dalamrun_extensions.sh, aktifkan atau nonaktifkan setiap kemampuan dengan menyetel bendera yang sesuai:

    ENABLE_ADD_USERS="true" ENABLE_OBSERVABILITY="true"

    Setiap file konfigurasi kemampuan yang diaktifkan harus diisi sebelum mengunggah ke Amazon S3. Lihat README di setiap direktori kemampuan untuk detail konfigurasi.

  2. Unggah ke Amazon S3 (jalur bucket harus dimulai dengans3://sagemaker-):

    aws s3 cp extend-defaults.sh \ s3://sagemaker-amzn-s3-demo-bucket/scripts/
  3. Simpan yang berikut ini sebagaicreate_cluster.json:

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }
    penting

    Kapan OnInitComplete ditentukan, SourceS3Uri diperlukan. OnCreatedan OnInitComplete tidak dapat digunakan bersama pada grup instance yang sama.

    Tip

    Anda dapat mencampur opsi dalam cluster. Misalnya, gunakan AMI-based konfigurasi hanya pada controller dan OnInitComplete pada pekerja.

    Topologi Slurm sama seperti pada Opsi A. Setiap grup instance memiliki peran node dan tugas partisi yang SlurmConfig menentukan, dan SlurmConfigStrategy: "Managed" diatur pada tingkat cluster. Satu-satunya perbedaan adalah penambahan LifeCycleConfig withOnInitComplete, yang memberitahu HyperPod untuk menjalankan skrip ekstensi Anda setelah AMI-based konfigurasi selesai pada setiap node. Untuk menambahkan FSx, sertakan FsxLustreConfig atau FsxOpenZfsConfig masuk InstanceStorageConfigs pada grup instans yang relevan dan tambahkan VpcConfig pada tingkat cluster, seperti yang dijelaskan dalam. Konfigurasi fsX dan VPC

  4. Buat cluster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  5. Periksa statusnya:

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    DenganOnInitComplete, responsnya terlihat OnInitComplete diLifeCycleConfig. Berikut ini adalah contoh terpotong yang menunjukkan grup instance controller:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/", "OnInitComplete": "extend-defaults.sh" } } ] }

    Setelah status berubahInService, lanjutkan keConnect ke klaster Anda.

Opsi C: Kontrol kustom penuh dengan OnCreate (lanjutan)

Gunakan opsi ini ketika Anda memerlukan kontrol penuh atas penyediaan, termasuk menginstal perangkat lunak, membuat perubahan infrastruktur, dan memutuskan kapan harus memulai Slurm. DenganOnCreate, SageMaker HyperPod tidak menjalankan AMI-based konfigurasi dan tidak memulai Slurm secara otomatis.

catatan

Jika Anda baru SageMaker HyperPod dan tidak memiliki persyaratan penyesuaian khusus, sebaiknya mulai dengan Opsi A atau Opsi B. Anda selalu dapat bermigrasi ke mode kustom nanti.

  1. Siapkan dan unggah skrip siklus hidup ke Amazon S3. Jika memulai dari awal, gunakan contoh skrip dari repositori Pelatihan GitHub Terdistribusi Awsome:

    git clone https://github.com/aws-samples/awsome-distributed-training/ cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

    Unggah ke Amazon S3 (jalur bucket harus dimulai dengans3://sagemaker-):

    aws s3 sync . \ s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src

    Untuk mempelajari lebih lanjut tentang skrip siklus hidup, lihat. Menyesuaikan SageMaker HyperPod cluster menggunakan skrip siklus hidup

  2. Simpan yang berikut ini sebagaicreate_cluster.json:

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }

    Topologi Slurm mengikuti SlurmConfig pola yang sama dengan opsi lainnya. Perbedaan utamanya adalah LifeCycleConfig denganOnCreate. Ini memberitahu HyperPod untuk melewati AMI-based konfigurasi sepenuhnya dan menjalankan on_create.sh skrip Anda sebagai gantinya. Skrip Anda bertanggung jawab atas urutan penyediaan lengkap, termasuk menginstal perangkat lunak, mengonfigurasi Slurm, dan memulai daemon Slurm. Untuk menambahkan FSx, sertakan FsxLustreConfig atau FsxOpenZfsConfig masuk InstanceStorageConfigs pada grup instans yang relevan dan tambahkan VpcConfig pada tingkat cluster, seperti yang dijelaskan dalam. Konfigurasi fsX dan VPC

  3. Buat cluster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  4. Periksa statusnya:

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    DenganOnCreate, responsnya terlihat OnCreate diLifeCycleConfig. Berikut ini adalah contoh terpotong yang menunjukkan grup instance controller:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" } } ] }

    Setelah status berubahInService, lanjutkan keConnect ke klaster Anda.

Kesalahan validasi umum

Kesalahan Resolusi
“Cluster harus memiliki persis satu InstanceGroup dengan tipe node Controller” Pastikan persis satu grup instance memilikiSlurmConfig.NodeType: "Controller"
“Partisi hanya dapat ditetapkan ke tipe node Compute” Hapus PartitionNames dari Controller atau grup Login contoh
“Konfigurasi fsX hanya didukung untuk VPC Kustom” Tambahkan VpcConfig ke permintaan Anda saat menggunakan FSx
“LifeCycleConfig diperlukan untuk grup misalnya...” Kluster EKS atau Slurm Continuous. NodeProvisioningMode Konfigurasi siklus hidup node opsional tidak didukung.
“OnCreate dan OnInitComplete di LifeCycleConfig saling eksklusif...” Hapus salah satu OnCreate atauOnInitComplete. Anda tidak dapat menentukan keduanya.
“LifeCycleConfig misalnya grup tidak lengkap...” Kapan OnCreate atau OnInitComplete ditentukan, juga SourceS3Uri harus disediakan.
“LifeCycleConfig bersifat opsional tetapi membutuhkan AMI yang kompatibel...” Jalankan UpdateClusterSoftware untuk memperbarui ke AMI yang mendukung konfigurasi siklus hidup node opsional.
“LifeCycleConfig misalnya grup disediakan tetapi tidak berisi konfigurasi...” Tentukan SourceS3Uri dengan OnCreate atauOnInitComplete, atau hilangkan LifeCycleConfig seluruhnya.

Connect ke klaster Anda

Setelah status cluster berubah menjadi InService (biasanya 10 hingga 15 menit), sambungkan dan verifikasi.

  1. Daftar node cluster untuk mendapatkan ID instance:

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster
  2. Connect menggunakan AWS Systems Manager Session Manager:

    aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \ --region us-west-2
  3. Verifikasi Slurm dikonfigurasi dengan benar:

    # Check Slurm nodes sinfo # Check Slurm partitions sinfo -p partition-1 # Submit a test job srun -p partition-1 --nodes=1 hostname

Untuk informasi selengkapnya tentang menjalankan beban kerja ML, lihatPekerjaan di SageMaker HyperPod cluster.

Hapus cluster dan sumber daya bersih

Setelah pengujian, hapus cluster untuk menghindari biaya lanjutan:

aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster

Jika Anda menggunakan skrip siklus hidup node (Opsi B atau Opsi C), bersihkan bucket Amazon S3:

aws s3 rm s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src --recursive

Jika Anda hanya menggunakan AMI-based konfigurasi (Opsi A), pembersihan Amazon S3 tidak diperlukan untuk skrip siklus hidup node.

Jika Anda menjalankan beban kerja pelatihan, periksa juga data atau artefak di Amazon S3, Amazon FSx for Lustre, atau Amazon Elastic File System dan hapus untuk mencegah tagihan.