Nozioni di base su SageMaker HyperPod con la AWS CLI
Crea il tuo primo cluster SageMaker HyperPod con i comandi della AWS CLI per HyperPod.
Crea il tuo primo cluster SageMaker HyperPod con Slurm
Il tutorial seguente mostra come creare un nuovo cluster SageMaker HyperPod e configurarlo con Slurm con i comandi della AWS CLI per SageMaker HyperPod. Seguendo il tutorial, creerai un cluster HyperPod con tre nodi Slurm, my-controller-group, my-login-group e worker-group-1.
-
Prima di tutto, prepara e carica gli script del ciclo di vita su un bucket Amazon S3. Durante la creazione del cluster, HyperPod li esegue in ogni gruppo di istanze. Carica gli script del ciclo di vita su Amazon S3 utilizzando il comando seguente.
aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/srcNota
Il percorso del bucket S3 deve iniziare con un prefisso
sagemaker-perché il Ruolo IAM per SageMaker HyperPod conAmazonSageMakerClusterInstanceRolePolicyconsente l’accesso solo ai bucket Amazon S3 che iniziano con il prefisso specifico.Se parti da zero, utilizza gli script del ciclo di vita di esempio forniti nel repository GitHub Awsome Distributed Training
. Le fasi secondarie seguenti mostrano come scaricare, cosa modificare e come caricare gli script del ciclo di vita di esempio in un bucket Amazon S3. -
Scarica una copia degli script del ciclo di vita di esempio in una directory sul computer locale.
git clone https://github.com/aws-samples/awsome-distributed-training/ -
Accedi alla directory
1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config, dove puoi trovare un set di script del ciclo di vita. cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-configPer ulteriori informazioni sugli esempi di script del ciclo di vita, consulta Personalizzazione dei cluster SageMaker HyperPod con script del ciclo di vita.
-
Scrivi un file di configurazione Slurm e salvalo come
provisioning_parameters.json. Nel file, specifica i parametri di configurazione Slurm di base per assegnare correttamente i nodi Slurm ai gruppi di istanze del cluster SageMaker HyperPod. In questo tutorial, configura tre nodi Slurm denominatimy-controller-group,my-login-groupeworker-group-1, come mostrato nella configurazione di esempio seguenteprovisioning_parameters.json.{ "version": "1.0.0", "workload_manager": "slurm", "controller_group": "my-controller-group", "login_group": "my-login-group", "worker_groups": [ { "instance_group_name": "worker-group-1", "partition_name": "partition-1" } ] } -
Carica gli script su
s3://sagemaker-. Puoi eseguire questa operazione con la console di Amazon S3 o con il comando della AWS CLI Amazon S3 seguente.<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
-
-
Prepara un file di richiesta CreateCluster in formato JSON e salvalo come
create_cluster.json. Il modello di richiesta seguente è allineato alla configurazione del nodo Slurm definita inprovisioning_parameters.jsonnella Fase 1.c. PerExecutionRole, fornisci l’ARN del ruolo IAM che hai creato con la policy gestitaAmazonSageMakerClusterInstanceRolePolicyin Prerequisiti per l’utilizzo di SageMaker HyperPod.{// Required: Specify the name of the cluster."ClusterName": "my-hyperpod-cluster",// Required: Configure instance groups to be launched in the cluster"InstanceGroups": [ {// Required: Specify the basic configurations to set up a controller node."InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}",// Optional: Configure an additional storage per instance group."InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.// The default mount path for the additional EBS volume is /opt/sagemaker."EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB)."VolumeSizeInGB":<integer>} } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" } ] } -
Utilizza il comando seguente per creare il cluster.
aws sagemaker create-cluster --cli-input-jsonfile://complete/path/to/create_cluster.jsonQuesto dovrebbe restituire l’ARN del cluster creato.
Se ricevi un errore dovuto ai limiti delle risorse, assicurati di sostituire il tipo di istanza con uno che disponga di quote sufficienti nel tuo account oppure richiedi quote aggiuntive seguendo la procedura in Quote di SageMaker HyperPod.
-
Esegui
describe-clusterper verificare lo stato del cluster.aws sagemaker describe-cluster --cluster-namemy-hyperpod-clusterQuando lo stato del cluster diventa
InService, procedi con la fase successiva. -
Esegui
list-cluster-nodesper controllare i dettagli dei nodi del cluster.aws sagemaker list-cluster-nodes --cluster-namemy-hyperpod-clusterQuesto restituisce una risposta e
InstanceIdè ciò che serve agli utenti del cluster per l’accesso (aws ssm). Per ulteriori informazioni sull’accesso ai nodi del cluster e sull’esecuzione di carichi di lavoro di ML, consulta Processi sui cluster SageMaker HyperPod.
Eliminazione del cluster e pulizia delle risorse
Dopo aver testato correttamente la creazione di un cluster SageMaker HyperPod, questo resterà in esecuzione con lo stato InService fino all’eliminazione del cluster. Ti consigliamo di eliminare tutti i cluster creati utilizzando la capacità SageMaker AI on demand quando non sono in uso per evitare di incorrere in costi di servizio continuativi basati sui prezzi on demand. In questo tutorial hai creato un cluster costituito da due gruppi di istanze. Uno di essi utilizza un’istanza C5, quindi assicurati di eliminare il cluster con il comando seguente.
aws sagemaker delete-cluster --cluster-namemy-hyperpod-cluster
Per pulire gli script del ciclo di vita dal bucket Amazon S3 utilizzato per questo tutorial, vai al bucket Amazon S3 che hai utilizzato durante la creazione del cluster e rimuovi completamente i file.
Se hai testato l’esecuzione di tutti i carichi di lavoro di addestramento dei modelli sul cluster, verifica anche di aver caricato tutti i dati o di aver salvato tutti gli artefatti in bucket Amazon S3 o servizi di file system diversi, ad esempio Amazon FSx per Lustre e Amazon Elastic File System. Per evitare addebiti, elimina tutti gli artefatti e i dati dall’archiviazione o dal file system.