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
Buat SageMaker HyperPod cluster pertama Anda menggunakan AWS CLI perintah untuk HyperPod.
Buat SageMaker HyperPod cluster pertama Anda dengan Slurm
Tutorial berikut menunjukkan cara membuat SageMaker HyperPod cluster baru dan mengaturnya dengan Slurm melalui perintah untuk AWS CLI
. SageMaker HyperPod Mengikuti tutorial, Anda akan membuat HyperPod cluster dengan tiga node Slurm:my-controller-group,my-login-group, dan. worker-group-1
Dengan pendekatan konfigurasi berbasis API, Anda mendefinisikan tipe node Slurm dan penetapan partisi secara langsung dalam permintaan API yang digunakan. CreateCluster SlurmConfig Ini menghilangkan kebutuhan akan provisioning_parameters.json file terpisah dan menyediakan validasi bawaan, deteksi drift, dan per-instance-group FSx konfigurasi.
-
Pertama, siapkan dan unggah skrip siklus hidup ke bucket Amazon S3. Selama pembuatan cluster, HyperPod jalankan mereka di setiap grup instance. Unggah skrip siklus hidup ke Amazon S3 menggunakan perintah berikut.
aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/srccatatan
Jalur bucket S3 harus dimulai dengan awalan
sagemaker-, karena peran IAM untuk SageMaker HyperPod withAmazonSageMakerClusterInstanceRolePolicyhanya mengizinkan akses ke bucket Amazon S3 yang dimulai dengan awalan tertentu.Jika Anda memulai dari awal, gunakan contoh skrip siklus hidup yang disediakan di repositori Pelatihan Terdistribusi Awsome
. GitHub Sub-langkah berikut menunjukkan cara mengunduh dan mengunggah contoh skrip siklus hidup ke bucket Amazon S3. -
Unduh salinan sampel skrip siklus hidup ke direktori di komputer lokal Anda.
git clone https://github.com/aws-samples/awsome-distributed-training/ -
Masuk ke direktori
1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config, di mana Anda dapat menemukan satu set skrip siklus hidup. cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-configUntuk mempelajari lebih lanjut tentang contoh skrip siklus hidup, lihat. Menyesuaikan SageMaker HyperPod cluster menggunakan skrip siklus hidup
-
Unggah skrip ke
s3://sagemaker-. Anda dapat melakukannya dengan menggunakan konsol Amazon S3, atau dengan menjalankan perintah Amazon AWS CLI S3 berikut.<unique-s3-bucket-name>/<lifecycle-script-directory>/srcaws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
catatan
Dengan konfigurasi berbasis API, Anda tidak perlu membuat atau mengunggah file.
provisioning_parameters.jsonKonfigurasi Slurm didefinisikan secara langsung dalam permintaan CreateCluster API pada langkah berikutnya. -
-
Siapkan file CreateClusterpermintaan dalam format JSON dan simpan sebagai
create_cluster.json.Dengan konfigurasi berbasis API, Anda menentukan jenis node Slurm dan penetapan partisi untuk setiap grup instance menggunakan bidang.
SlurmConfigAnda juga mengonfigurasi pengaturan Slurm tingkat cluster menggunakan.Orchestrator.SlurmUntuk
ExecutionRole, berikan ARN dari peran IAM yang Anda buat dengan yang dikelola.AmazonSageMakerClusterInstanceRolePolicyPrasyarat untuk menggunakan SageMaker HyperPod{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }SlurmConfig bidang:
Bidang Deskripsi NodeTypePeran Slurm untuk grup instance. Nilai valid: Controller,Login,ComputePartitionNamesPartisi Slurm untuk menetapkan node komputasi ke. Hanya berlaku untuk tipe Computenode.Bidang Orchestrator.Slurm:
Bidang Deskripsi SlurmConfigStrategyMengontrol bagaimana HyperPod mengelola slurm.conf. Nilai yang valid:Managed(default),Overwrite,MergeSlurmConfigStrategy pilihan:
-
Managed(disarankan): HyperPod sepenuhnya mengelolaslurm.confdan mendeteksi perubahan yang tidak sah (deteksi drift). Pembaruan gagal jika drift terdeteksi. -
Overwrite: HyperPodslurm.confmenimpa pembaruan, mengabaikan perubahan manual apa pun. -
Merge: HyperPod mempertahankan perubahan manual dan menggabungkannya dengan konfigurasi API.
Menambahkan FSx Lustre (opsional):
Untuk memasang sistem file FSx for Lustre ke node komputasi Anda, tambahkan
FsxLustreConfigke grup instance.InstanceStorageConfigsIni memerlukan konfigurasi VPC Kustom.{ "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole" }Menambahkan FSx untuk OpenZFS (opsional):
Anda juga dapat me-mount FSx untuk sistem file OpenZFS:
"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } } ]catatan
Setiap grup instance dapat memiliki paling banyak satu FSx untuk Lustre dan satu FSx untuk konfigurasi OpenZFS. Grup instance yang berbeda dapat memasang sistem file yang berbeda.
Menambahkan konfigurasi VPC (diperlukan untuk FSx):
Jika menggunakan FSx, Anda harus menentukan konfigurasi VPC Kustom:
{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole" }, ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] } } -
-
Jalankan perintah berikut untuk membuat cluster.
aws sagemaker create-cluster --cli-input-jsonfile://complete/path/to/create_cluster.jsonIni harus mengembalikan ARN dari cluster yang dibuat.
{ "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster" }Jika Anda menerima kesalahan karena batasan sumber daya, pastikan Anda mengubah jenis instans menjadi salah satu dengan kuota yang cukup di akun Anda, atau minta kuota tambahan dengan mengikuti. SageMaker HyperPod kuota
Kesalahan validasi umum:
Kesalahan Resolusi “Cluster harus memiliki persis satu InstanceGroup dengan tipe node Controller” Pastikan persis satu grup instance memiliki SlurmConfig.NodeType:"Controller"“Partisi hanya dapat ditetapkan ke tipe node Compute” Hapus PartitionNamesdariControlleratau grupLogincontoh“FSx Konfigurasi hanya didukung untuk VPC Kustom” Tambahkan VpcConfigke permintaan Anda saat menggunakan FSx -
Jalankan
describe-clusteruntuk memeriksa status cluster.aws sagemaker describe-cluster --cluster-namemy-hyperpod-clusterContoh respons:
{ "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster", "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "Creating", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "CurrentCount": 0, "TargetCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<bucket>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "CurrentCount": 0, "TargetCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<bucket>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "CurrentCount": 0, "TargetCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<bucket>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "CreationTime": "2024-01-15T10:30:00Z" }Setelah status cluster berubah
InService, lanjutkan ke langkah berikutnya. Pembuatan cluster biasanya memakan waktu 10-15 menit. -
Jalankan
list-cluster-nodesuntuk memeriksa detail node cluster.aws sagemaker list-cluster-nodes --cluster-namemy-hyperpod-clusterContoh respons:
{ "ClusterNodeSummaries": [ { "InstanceGroupName": "my-controller-group", "InstanceId": "i-0abc123def456789a", "InstanceType": "ml.c5.xlarge", "InstanceStatus": { "Status": "Running", "Message": "" }, "LaunchTime": "2024-01-15T10:35:00Z" }, { "InstanceGroupName": "my-login-group", "InstanceId": "i-0abc123def456789b", "InstanceType": "ml.m5.4xlarge", "InstanceStatus": { "Status": "Running", "Message": "" }, "LaunchTime": "2024-01-15T10:35:00Z" }, { "InstanceGroupName": "worker-group-1", "InstanceId": "i-0abc123def456789c", "InstanceType": "ml.trn1.32xlarge", "InstanceStatus": { "Status": "Running", "Message": "" }, "LaunchTime": "2024-01-15T10:36:00Z" } ] }Itulah
InstanceIdyang dibutuhkan pengguna cluster Anda untuk login (aws ssm) ke dalamnya. Untuk informasi selengkapnya tentang masuk ke node cluster dan menjalankan beban kerja ML, lihatPekerjaan di SageMaker HyperPod cluster. -
Connect ke cluster Anda menggunakan AWS Systems Manager Session Manager.
aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b\ --regionus-west-2Setelah terhubung, 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
Hapus cluster dan sumber daya bersih
Setelah Anda berhasil menguji pembuatan SageMaker HyperPod klaster, klaster terus berjalan di InService status hingga Anda menghapus klaster. Kami menyarankan Anda menghapus klaster apa pun yang dibuat menggunakan kapasitas SageMaker AI sesuai permintaan saat tidak digunakan untuk menghindari biaya layanan lanjutan berdasarkan harga sesuai permintaan. Dalam tutorial ini, Anda telah membuat sebuah cluster yang terdiri dari tiga kelompok instance. Pastikan Anda menghapus cluster dengan menjalankan perintah berikut.
aws sagemaker delete-cluster --cluster-namemy-hyperpod-cluster
Untuk membersihkan skrip siklus hidup dari bucket Amazon S3 yang digunakan untuk tutorial ini, buka bucket Amazon S3 yang Anda gunakan selama pembuatan cluster dan hapus file seluruhnya.
aws s3 rm s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src--recursive
Jika Anda telah menguji menjalankan beban kerja pelatihan model apa pun di klaster, periksa juga apakah Anda telah mengunggah data apa pun atau apakah pekerjaan Anda telah menyimpan artefak apa pun ke bucket Amazon S3 atau layanan sistem file yang berbeda seperti Amazon FSx for Lustre dan Amazon Elastic File System. Untuk mencegah timbulnya biaya, hapus semua artefak dan data dari penyimpanan atau sistem file.