View a markdown version of this page

Penyediaan berkelanjutan untuk operasi cluster yang ditingkatkan dengan Slurm - Amazon SageMaker AI

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

Penyediaan berkelanjutan untuk operasi cluster yang ditingkatkan dengan Slurm

SageMaker HyperPod Cluster Amazon yang dibuat dengan orkestrasi Slurm sekarang mendukung penyediaan berkelanjutan, kemampuan yang memungkinkan fleksibilitas dan efisiensi yang lebih besar saat menjalankan beban kerja skala besar. AI/ML Penyediaan berkelanjutan memungkinkan Anda memulai pelatihan dengan cepat, menskalakan dengan mulus, melakukan pemeliharaan tanpa mengganggu operasi, dan memiliki visibilitas terperinci ke dalam operasi klaster.

catatan

Penyediaan berkelanjutan tersedia sebagai konfigurasi opsional untuk HyperPod cluster yang dibuat dengan orkestrasi Slurm.

Cara kerjanya

Sistem penyediaan berkelanjutan memperkenalkan arsitektur negara yang diinginkan yang menggantikan model penskalaan semua-atau-tidak sama sekali tradisional. Pada model sebelumnya, jika ada grup instans yang tidak dapat sepenuhnya disediakan, seluruh pembuatan klaster atau operasi pembaruan gagal dan diputar kembali. Dengan penyediaan berkelanjutan, sistem menerima kapasitas sebagian dan terus menyediakan instance yang tersisa secara asinkron.

Sistem penyediaan berkelanjutan:

  • Menerima permintaan: Merekam jumlah instans target untuk setiap grup instans.

  • Memulai penyediaan: Mulai meluncurkan instance untuk semua grup instance secara paralel.

  • Ketentuan node prioritas pertama: Transisi cluster InService setelah setidaknya satu node controller (dan satu node login, jika grup instance login ditentukan) berhasil disediakan.

  • Melacak kemajuan: Memantau setiap upaya peluncuran instance dan mencatat statusnya.

  • Menangani kegagalan: Secara otomatis mencoba ulang peluncuran yang gagal untuk node pekerja secara asinkron.

Penyediaan berkelanjutan dinonaktifkan secara default. Untuk menggunakan fitur ini, setel NodeProvisioningMode ke Continuous dalam CreateCluster permintaan Anda.

Dengan penyediaan berkelanjutan diaktifkan, Anda dapat memulai beberapa operasi penskalaan secara bersamaan tanpa menunggu operasi sebelumnya selesai. Ini memungkinkan Anda menskalakan grup instans yang berbeda dalam kluster yang sama secara bersamaan dan mengirimkan beberapa permintaan penskalaan ke grup instans yang sama.

Priority-based penyediaan

Cluster slurm memerlukan node pengontrol untuk beroperasi sebelum node pekerja dapat mendaftar dan menerima pekerjaan. Penyediaan berkelanjutan menangani ini secara otomatis melalui penyediaan berbasis prioritas:

  1. Grup instance controller disediakan terlebih dahulu.

  2. Setelah satu node pengontrol sehat, node login dan node pekerja mulai menyediakan secara paralel.

  3. Cluster bertransisi ke InService ketika satu node pengontrol naik dan satu node login naik (jika grup instance login ditentukan). Jika tidak ada grup instance login yang ditentukan, klaster bertransisi ke InService segera setelah node pengontrol disediakan.

  4. Node pekerja yang tidak dapat segera disediakan karena kendala kapasitas memasuki loop coba ulang asinkron dan ditambahkan ke cluster Slurm secara otomatis saat tersedia.

Penanganan kegagalan pengontrol

Selama pembuatan klaster, jika node pengontrol gagal menyediakan, perilaku tergantung pada apakah kesalahan dapat dicoba ulang atau tidak dapat dicoba ulang.

Kesalahan yang dapat dicoba ulang (misalnya, contoh tidak sehat atau kegagalan sementara):

  • HyperPod terus mengganti instance dan mencoba lagi penyediaan sampai pengontrol muncul.

  • Node pekerja dan login yang telah disediakan tetap tersedia, tetapi cluster tidak bertransisi InService hingga pengontrol sehat.

Non-retryable kesalahan (misalnya, tidak ada kapasitas yang tersedia untuk jenis instance pengontrol atau kegagalan skrip siklus hidup):

  • Cluster ditandai sebagaiFailed.

  • Anda diberi tahu tentang alasan kegagalan dan harus mengambil tindakan korektif, seperti memilih jenis instans yang berbeda, memperbaiki skrip siklus hidup, atau mencoba kembali di Availability Zone yang berbeda.

Prasyarat

Penyediaan berkelanjutan mengharuskan parameter penyediaan Slurm (tipe node, nama partisi) disediakan melalui payload API di setiap bidang grup instans. SlurmConfig Cluster yang mengandalkan provisioning_parameters.json file lama di Amazon S3 tidak kompatibel dengan penyediaan berkelanjutan.

catatan

Fitur-fitur berikut saat ini tidak didukung dengan penyediaan berkelanjutan pada cluster Slurm: konfigurasi node multi-head melalui topologi Slurm, dan. API-based SlurmConfigStrategy Penyediaan berkelanjutan beroperasi secara eksklusif dalam mode gabungan untuk manajemen. slurm.conf

Pengukuran penggunaan

HyperPod cluster dengan penyediaan berkelanjutan menggunakan pengukuran tingkat instans untuk memberikan penagihan akurat yang mencerminkan penggunaan sumber daya aktual. Pendekatan pengukuran ini berbeda dari penagihan tingkat cluster tradisional dengan melacak setiap instance secara independen.

Instance-level penagihan

Dengan penyediaan berkelanjutan, penagihan dimulai dan berhenti di tingkat instans individu daripada menunggu perubahan status tingkat klaster. Pendekatan ini memberikan manfaat sebagai berikut:

  • Akurasi penagihan yang tepat: Penagihan dimulai saat eksekusi skrip siklus hidup dimulai. Jika skrip siklus hidup gagal, penyediaan instance akan dicoba ulang dan Anda dikenakan biaya selama durasi runtime skrip siklus hidup.

  • Pengukuran independen: Siklus hidup penagihan setiap instans dikelola secara terpisah, mencegah kesalahan penagihan berjenjang.

  • Real-time pembaruan penagihan: Penagihan dimulai saat instance mulai mengeksekusi skrip konfigurasi siklus hidupnya dan berhenti saat instance memasuki status penghentian.

Siklus hidup penagihan

Setiap instance di HyperPod klaster Anda mengikuti siklus hidup penagihan ini:

  • Penagihan dimulai: Ketika instance berhasil diluncurkan dan mulai mengeksekusi skrip konfigurasi siklus hidupnya.

  • Penagihan berlanjut: Sepanjang masa operasional instans.

  • Penagihan berhenti: Ketika instance memasuki status penghentian, terlepas dari alasan penghentian.

catatan

Penagihan tidak dimulai untuk instance yang gagal diluncurkan. Jika peluncuran instans gagal karena kapasitas yang tidak mencukupi atau masalah lain, Anda tidak dikenakan biaya untuk upaya yang gagal tersebut. Penagihan dihitung pada tingkat instans dan biaya dikumpulkan dan dilaporkan di bawah Amazon Resource Name (ARN) klaster Anda.

Buat klaster dengan penyediaan berkelanjutan diaktifkan

catatan

Siapkan skrip konfigurasi siklus hidup dan unggah ke bucket Amazon S3 yang dapat diakses oleh peran eksekusi Anda. Untuk informasi selengkapnya, lihat SageMaker HyperPod Operasi klaster slurm.

Siapkan file permintaan CreateCluster API dalam format JSON. Atur NodeProvisioningMode ke Continuous dan berikan informasi topologi Slurm di setiap bidang grup instance. SlurmConfig

// create_cluster.json { "ClusterName": "my-training-cluster", "NodeProvisioningMode": "Continuous", "Orchestrator": { "Slurm": {} }, "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Controller" } }, { "InstanceGroupName": "login-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Login" } }, { "InstanceGroupName": "worker-gpu-a", "InstanceType": "ml.p5.48xlarge", "InstanceCount": 16, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] } } ], "VpcConfig": { "SecurityGroupIds": ["sg-12345678"], "Subnets": ["subnet-12345678"] } }

Jalankan create-cluster perintah untuk mengirimkan permintaan.

aws sagemaker create-cluster \ --cli-input-json file://complete/path/to/create_cluster.json

Ini mengembalikan ARN dari cluster baru.

{ "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde12345" }

Manajemen konfigurasi slurm

Penyediaan berkelanjutan beroperasi secara eksklusif dalam mode gabungan untuk slurm.conf manajemen partisi. Dalam mode gabungan, HyperPod menerapkan perubahan konfigurasi partisi secara aditif di atas apa pun yang telah Anda modifikasi. slurm.conf HyperPod hanya memperbarui bagian terkait partisi slurm.conf (seperti nama partisi dan entri nama node); parameter konfigurasi Slurm lainnya tidak dimodifikasi. Ini berarti:

  • Pengeditan manual Anda slurm.conf dipertahankan.

  • Tidak ada deteksi drift otomatis atau penyelesaian konflik antara modifikasi Anda dan status HyperPod yang diharapkan.

SlurmConfigStrategyParameter (Managed,Merge,Overwrite) tidak didukung dengan penyediaan berkelanjutan. Melewati SlurmConfigStrategy nilai apa pun menghasilkan kesalahan API.

Persyaratan kapasitas minimum (MinCount)

MinCount Fitur ini memungkinkan Anda menentukan jumlah minimum instance yang harus berhasil disediakan sebelum grup instans beralih ke status. InService Fitur ini memberikan kontrol yang lebih baik atas operasi penskalaan dan membantu mencegah skenario di mana grup instans yang disediakan sebagian tidak dapat digunakan secara efektif untuk beban kerja pelatihan.

penting

MinCount bukan jaminan permanen kapasitas minimum. Ini hanya memastikan bahwa jumlah minimum instance yang ditentukan tersedia ketika grup instance pertama kali menjadiInService. Penurunan singkat di bawah ini MinCount dapat terjadi selama operasi normal seperti penggantian instans yang tidak sehat atau kegiatan pemeliharaan.

Bagaimana cara MinCount kerja

Saat Anda membuat atau memperbarui grup instans dengan MinCount diaktifkan, perilaku berikut akan terjadi:

  • Grup instans baru: Grup instance tetap dalam Creating status hingga setidaknya MinCount instance berhasil disediakan dan siap. Setelah ambang batas ini terpenuhi, grup instance bertransisi keInService.

  • Grup instans yang ada: Saat memperbarui MinCount grup instans yang ada, status berubah Updating hingga MinCount persyaratan baru terpenuhi.

  • Penskalaan berkelanjutan: Jika TargetCount lebih besar dari MinCount, sistem penskalaan kontinu terus mencoba meluncurkan instance tambahan hingga tercapai. TargetCount

  • Timeout dan rollback: Jika MinCount tidak dapat dipenuhi dalam waktu 3 jam, sistem secara otomatis memutar kembali grup instans ke keadaan baik terakhir yang diketahui. Untuk informasi selengkapnya tentang perilaku rollback, lihat Perilaku rollback otomatis.

Status grup instans selama MinCount operasi

Grup instans dengan MinCount konfigurasi menunjukkan perilaku status berikut:

Membuat

Untuk grup instance baru saat CurrentCount < MinCount. Grup instans tetap dalam status ini sampai persyaratan kapasitas minimum terpenuhi.

Memperbarui

Untuk grup instance yang ada saat MinCount dimodifikasi dan CurrentCount < MinCount. Grup instans tetap dalam status ini sampai persyaratan kapasitas minimum yang baru terpenuhi.

InService

Ketika MinCount ≤ CurrentCount ≤ TargetCount. Grup instance siap digunakan dan semua operasi mutasi tidak diblokir.

Selama Creating atau Updating status, pembatasan berikut berlaku:

  • Operasi mutasi sepertiBatchAddClusterNodes,BatchDeleteClusterNodes, atau UpdateClusterSoftware diblokir

  • Anda masih dapat memodifikasi MinCount dan TargetCount nilai untuk memperbaiki kesalahan konfigurasi

  • Penghapusan grup Cluster dan Instance selalu diizinkan

Perilaku rollback otomatis

Jika grup instans tidak dapat mencapainya MinCount dalam waktu 3 jam, sistem secara otomatis memulai rollback untuk mencegah penantian yang tidak terbatas:

  • Grup instance baru: MinCount dan TargetCount diatur ulang ke (0, 0)

  • Grup instance yang ada: MinCount dan TargetCount dikembalikan ke nilainya dari InService status terakhir

  • Pemilihan instans untuk penghentian: Jika instance perlu dihentikan selama rollback, sistem memilih instance yang tidak sehat terlebih dahulu, lalu yang terbaru disediakan.

  • Transisi status: Grup instans segera beralih ke InService status setelah inisiasi rollback, memungkinkan sistem penskalaan berkelanjutan untuk mengelola kapasitas sesuai dengan pengaturan rollback

Batas waktu 3 jam disetel ulang setiap kali MinCount diperbarui. Misalnya, jika Anda memperbarui MinCount beberapa kali, periode batas waktu mulai baru dari pembaruan terbaru.

MinCount acara

Sistem memancarkan peristiwa tertentu untuk membantu Anda melacak MinCount operasi:

  • Kapasitas minimum tercapai: Dipancarkan ketika grup instans berhasil mencapai MinCount dan transisi ke InService

  • Rollback dimulai: Dipancarkan saat batas waktu 3 jam berakhir dan rollback otomatis dimulai

Anda dapat memantau peristiwa ini menggunakan ListClusterEventsuntuk melacak kemajuan MinCount operasi Anda.

Penggunaan API

MinCount ditentukan menggunakan MinInstanceCount parameter dalam konfigurasi grup instance:

aws sagemaker create-cluster \ --cluster-name $HP_CLUSTER_NAME \ --instance-groups '[ { "InstanceGroupName": "controller-machine", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": {"NodeType": "Controller"}, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 2 }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": {"NodeType": "Login"}, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1 }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.c5.xlarge", "MinInstanceCount": 1, "InstanceCount": 2, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["p1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1 } ]' \ --vpc-config '{ "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET'"] }' \ --node-provisioning-mode Continuous

Pertimbangan utama untuk MinCount penggunaan:

  • MinInstanceCountharus antara 0 dan InstanceCount (inklusif) nilai dari kelompok instance yang ditentukan dalam CreateClusteratau permintaan UpdateCluster

  • Pengaturan MinInstanceCount ke 0 (default) mempertahankan perilaku penskalaan berkelanjutan standar

  • Default MinInstanceCount untuk Controller dan Login InstanceGroup diatur ke 1 selama pembuatan cluster

  • Pengaturan MinInstanceCount sama dengan InstanceCount memberikan perilaku penskalaan semua-atau-tidak sama sekali

  • MinCount hanya tersedia untuk cluster dengan NodeProvisioningMode set ke Continuous