Creazione di un cluster SageMaker HyperPod - Amazon SageMaker AI

Creazione di un cluster SageMaker HyperPod

Scopri come creare cluster SageMaker HyperPod orchestrati da Amazon EKS utilizzando la AWS CLI.

  1. Prima di creare un cluster SageMaker HyperPod:

    1. Assicurati di disporre di un cluster Amazon EKS funzionante. Per istruzioni dettagliate su come configurare un cluster Amazon EKS, consulta Create an Amazon EKS cluster in Amazon EKS User Guide.

    2. Installa il grafico Helm come indicato in Installazione di pacchetti sul cluster Amazon EKS con Helm. Se crei un Creazione di un cluster HyperPod EKS con un gruppo di istanze limitato (RIG), avrai bisogno di un grafico Helm separato.

  2. Prepara uno script di configurazione del ciclo di vita e caricalo in un bucket Amazon S3, ad esempio s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/.

    Per iniziare rapidamente, scarica lo script di esempio on_create.sh dal repository GitHub AWSAwesome Distributed Training e caricalo nel bucket S3. Puoi anche includere istruzioni di configurazione aggiuntive, una serie di script di configurazione o comandi da eseguire durante la fase di provisioning del cluster HyperPod.

    Importante

    Se crei un Ruolo IAM per SageMaker HyperPod collegando solo la AmazonSageMakerClusterInstanceRolePolicy gestita, il tuo cluster ha accesso ai bucket Amazon S3 con il prefisso sagemaker- specifico.

    Se crei un gruppo di istanze limitato, non devi scaricare ed eseguire lo script del ciclo di vita. Devi eseguire install_rig_dependencies.sh, invece.

    I prerequisiti per eseguire lo script install_rig_dependencies.sh includono:

    • Il nodo AWS (CNI) e CoreDNS devono essere entrambi abilitati. Si tratta di componenti aggiuntivi EKS standard che non sono gestiti dal grafico Helm di SageMaker HyperPod standard, ma possono essere facilmente abilitati nella console EKS alla voce Componenti aggiuntivi.

    • Il grafico Helm di SageMaker HyperPod standard deve essere installato prima di eseguire questo script.

    Lo script install_rig_dependencies.sh esegue queste operazioni.

    • aws-node (CNI): nuovo DaemonSet rig-aws-node creato; applicate patch al aws-node esistente per evitare nodi RIG.

    • coredns: convertito in DaemonSet per RIG per supportare l’utilizzo di più RIG e prevenire il sovraccarico.

    • training-operators: aggiornato con le tolleranze di taint dei worker RIG e con nodeAffinity che favorisce le istanze non RIG.

    • Elastic Fabric Adapter (EFA): aggiornato per tollerare il taint dei worker RIG e utilizzare immagini dei container corrette per ogni Regione.

  3. Prepara un file di richiesta API CreateCluster in formato JSON. Per ExecutionRole, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita AmazonSageMakerClusterInstanceRolePolicy nella sezione Ruolo IAM per SageMaker HyperPod.

    Nota

    Assicurati che il cluster SageMaker HyperPod sia implementato all’interno dello stesso cloud privato virtuale (VPC) del cluster Amazon EKS. Le sottoreti e i gruppi di sicurezza specificati nella configurazione del cluster SageMaker HyperPod devono consentire la connettività di rete e la comunicazione con l’endpoint del server API del cluster Amazon EKS.

    // create_cluster.json { "ClusterName": "string", "InstanceGroups": [{ "InstanceGroupName": "string", "InstanceType": "string", "InstanceCount": number, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "string", "ThreadsPerCore": number, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }], "RestrictedInstanceGroups": [ { "EnvironmentConfig": { "FSxLustreConfig": { "PerUnitStorageThroughput": number, "SizeInGiB": number } }, "ExecutionRole": "string", "InstanceCount": number, "InstanceGroupName": "string", "InstanceStorageConfigs": [ { ... } ], "InstanceType": "string", "OnStartDeepHealthChecks": [ "string" ], "OverrideVpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] }, "ScheduledUpdateConfig": { "DeploymentConfig": { "AutoRollbackConfiguration": [ { "AlarmName": "string" } ], "RollingUpdatePolicy": { "MaximumBatchSize": { "Type": "string", "Value": number }, "RollbackMaximumBatchSize": { "Type": "string", "Value": number } }, "WaitIntervalInSeconds": number }, "ScheduleExpression": "string" }, "ThreadsPerCore": number, "TrainingPlanArn": "string" } ], "VpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "Tags": [{ "Key": "string", "Value": "string" }], "Orchestrator": { "Eks": { "ClusterArn": "string", } }, "NodeRecovery": "Automatic" }

    Tieni presente quanto segue durante la configurazione per creare un nuovo cluster SageMaker HyperPod associato a un cluster EKS.

    • Puoi configurare fino a 20 gruppi di istanze nel parametro InstanceGroups.

    • Per Orchestator.Eks.ClusterArn, specifica l’ARN del cluster EKS da utilizzare come orchestratore.

    • Per OnStartDeepHealthChecks, aggiungi InstanceStress e InstanceConnectivity per abilitare Controlli dell’integrità approfonditi.

    • Per NodeRecovery, specifica Automatic per abilitare il ripristino automatico dei nodi. SageMaker HyperPod sostituisce o riavvia le istanze (nodi) quando l’agente di monitoraggio dell’integrità rileva problemi.

    • Per il parametro Tags, puoi aggiungere tag personalizzati per la gestione del cluster SageMaker HyperPod come risorsa AWS. Puoi aggiungere tag al cluster con la stessa procedura utilizzata per altri servizi AWS che supportano il tagging. Per ulteriori informazioni generali sul tagging delle risorse AWS, consulta Tagging AWS Resources User Guide.

    • Per il parametro VpcConfig, specifica le informazioni del VPC utilizzato nel cluster EKS. Le sottoreti devono essere private.

  4. Utilizza il comando create-cluster come segue.

    Importante

    Quando esegui il comando create-cluster con il parametro --cli-input-json, devi includere il prefisso file:// prima del percorso completo del file JSON. Questo prefisso è necessario per garantire che AWS CLI riconosca l’input come percorso di file. L’omissione del prefisso file:// genera un errore di analisi del parametro.

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

    Questo dovrebbe restituire l’ARN del nuovo cluster.

    Importante

    Per rimuovere un gruppo di istanze limitato (RIG), puoi utilizzare l’operazione update-cluster. Quando un RIG viene ridotto verticalmente a 0, il file system FSx per Lustre non viene eliminato. Per eliminare completamente il file system FSx per Lustre, è necessario rimuovere completamente il RIG.

    La rimozione di un RIG non eliminerà gli artefatti archiviati nel bucket Amazon S3 gestito dal servizio. Tuttavia, prima della rimozione, devi verificare che tutti gli artefatti nel file system FSx per Lustre siano completamente sincronizzati con Amazon S3. Consigliamo di attendere almeno 30 minuti dopo il completamento del processo per garantire la sincronizzazione completa di tutti gli artefatti tra il file system FSx per Lustre e il bucket Amazon S3 gestito dal servizio.