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

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.

  1. 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>/src
    catatan

    Jalur bucket S3 harus dimulai dengan awalansagemaker-, karena peran IAM untuk SageMaker HyperPod with AmazonSageMakerClusterInstanceRolePolicy hanya 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.

    1. Unduh salinan sampel skrip siklus hidup ke direktori di komputer lokal Anda.

      git clone https://github.com/aws-samples/awsome-distributed-training/
    2. 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-config

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

    3. Unggah skrip kes3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src. Anda dapat melakukannya dengan menggunakan konsol Amazon S3, atau dengan menjalankan perintah Amazon AWS CLI S3 berikut.

      aws 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.json Konfigurasi Slurm didefinisikan secara langsung dalam permintaan CreateCluster API pada langkah berikutnya.

  2. Siapkan file CreateClusterpermintaan dalam format JSON dan simpan sebagaicreate_cluster.json.

    Dengan konfigurasi berbasis API, Anda menentukan jenis node Slurm dan penetapan partisi untuk setiap grup instance menggunakan bidang. SlurmConfig Anda juga mengonfigurasi pengaturan Slurm tingkat cluster menggunakan. Orchestrator.Slurm

    UntukExecutionRole, berikan ARN dari peran IAM yang Anda buat dengan yang dikelola. AmazonSageMakerClusterInstanceRolePolicy Prasyarat 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
    NodeType Peran Slurm untuk grup instance. Nilai valid: Controller, Login, Compute
    PartitionNames Partisi Slurm untuk menetapkan node komputasi ke. Hanya berlaku untuk tipe Compute node.

    Bidang Orchestrator.Slurm:

    Bidang Deskripsi
    SlurmConfigStrategy Mengontrol bagaimana HyperPod mengelolaslurm.conf. Nilai yang valid: Managed (default),Overwrite, Merge

    SlurmConfigStrategy pilihan:

    • Managed(disarankan): HyperPod sepenuhnya mengelola slurm.conf dan mendeteksi perubahan yang tidak sah (deteksi drift). Pembaruan gagal jika drift terdeteksi.

    • Overwrite: HyperPod slurm.conf menimpa 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 FsxLustreConfig ke grup instance. InstanceStorageConfigs Ini 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"] } }
  3. Jalankan perintah berikut untuk membuat cluster.

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

    Ini 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 memilikiSlurmConfig.NodeType: "Controller"
    “Partisi hanya dapat ditetapkan ke tipe node Compute” Hapus PartitionNames dari Controller atau grup Login contoh
    “FSx Konfigurasi hanya didukung untuk VPC Kustom” Tambahkan VpcConfig ke permintaan Anda saat menggunakan FSx
  4. Jalankan describe-cluster untuk memeriksa status cluster.

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

    Contoh 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 berubahInService, lanjutkan ke langkah berikutnya. Pembuatan cluster biasanya memakan waktu 10-15 menit.

  5. Jalankan list-cluster-nodes untuk memeriksa detail node cluster.

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster

    Contoh 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 InstanceId yang 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.

  6. 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 \ --region us-west-2

    Setelah 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-name my-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.