View a markdown version of this page

Cómo empezar a SageMaker HyperPod usar el AWS CLI - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cómo empezar a SageMaker HyperPod usar el AWS CLI

El siguiente tutorial muestra cómo crear un nuevo SageMaker HyperPod clúster con Slurm mediante los AWS CLI comandos para. SageMaker HyperPod Al final de este tutorial, dispondrá de un clúster de Slurm en funcionamiento con un nodo controlador, un nodo de inicio de sesión y un grupo de trabajo de cómputo, listo para programar y ejecutar cargas de trabajo de aprendizaje automático. El tutorial cubre la configuración de la topología de Slurm, las opciones de configuración del ciclo de vida de los nodos, el almacenamiento compartido FSx opcional y cómo conectarse a su clúster.

Antes de empezar, asegúrese de haber completado las funciones Requisitos previos para su uso SageMaker HyperPod (VPC, cuotas, FSx) y AWS Identity and Access Management para SageMaker HyperPod (funciones de IAM, función de ejecución con). AmazonSageMakerClusterInstanceRolePolicy

Conceptos clave

En esta sección se describen los conceptos básicos de configuración para crear un SageMaker HyperPod clúster de Slurm. Comprender estos conceptos le ayudará a tomar decisiones informadas a la hora de configurar su clúster, pero si quiere empezar de inmediato, puede ir directamente a esta sección Cree su clúster de y volver a consultarla si es necesario.

Al crear un Slurm-orchestrated clúster, debe elegir dos opciones de configuración independientes:

  1. Configuración de la topología de Slurm: ¿cómo se define la topología del clúster de Slurm (funciones de nodo, particiones)?

  2. Configuración del ciclo de vida de los nodos: ¿cómo se aprovisionan y personalizan los nodos?

Para la topología de Slurm, en este tutorial se utiliza el enfoque de API-driven configuración, en el que se definen las funciones y particiones de los nodos directamente en la CreateCluster solicitud, SlurmConfig en cada grupo de instancias y Orchestrator.Slurm a nivel de clúster. Este es el enfoque recomendado para los clústeres nuevos. Proporciona una única fuente de información fiable, una validación integrada y una detección de desviaciones en la configuración de las particiones, sin necesidad de gestionar archivos adicionales. Como alternativa, puede utilizar un provisioning_parameters.json archivo antiguo almacenado en Amazon S3 para garantizar la compatibilidad con versiones anteriores de los clústeres existentes. Para obtener más información sobre el enfoque heredado, consulteSageMaker HyperPod Configuración de Slurm.

Para la configuración del ciclo de vida de los nodos, SageMaker HyperPod admite tres opciones. En el caso más simple, se omite LifeCycleConfig por completo y HyperPod se configuran los nodos automáticamente mediante la AMI-based configuración, configurando Slurm y paquetes esenciales como Docker, Enroot y Pyxis para ejecutar cargas de trabajo de aprendizaje automático, sin necesidad de scripts ni de un bucket de Amazon S3. Si necesita personalizaciones además de la AMI-based configuración, puede proporcionar un script de extensión que se ejecute una vez finalizada la configuración. OnInitComplete Para tener el control total de toda la secuencia de aprovisionamiento, la OnCreate ruta permite que tus scripts se encarguen de todo, incluso cuando se inicia Slurm.

Para las cargas de trabajo de aprendizaje automático, normalmente también necesitarás un sistema de archivos compartido de alto rendimiento para entrenar los datos, los puntos de control y las bibliotecas compartidas. SageMaker HyperPod es compatible con Amazon FSx for Lustre y FSx para OpenZFS, configurados por grupo de instancias mediante. InstanceStorageConfigs La configuración de FSx es opcional para la creación de clústeres, pero se recomienda para las cargas de trabajo de producción.

Configuración de la topología de Slurm mediante la API

Todos los ejemplos de este tutorial utilizan la configuración de topología de API-driven Slurm, en la que se define la estructura de clústeres de Slurm directamente en la solicitud de CreateCluster API, en lugar de hacerlo a través de un archivo de configuración independiente.

Un clúster de Slurm requiere al menos un nodo controlador (que ejecuta el slurmctld daemon y coordina la programación de los trabajos) y uno o más nodos de procesamiento (que ejecutan los trabajos). Si lo desea, puede añadir un nodo de inicio de sesión para proporcionar a los usuarios un punto de acceso dedicado para enviar y gestionar los trabajos sin necesidad de iniciar sesión directamente en el controlador. En la solicitud de API, asignas a cada grupo de instancias su función de SlurmSlurmConfig, especificando si el grupo actúa como controlador, inicio de sesión o nodo de cómputo. Los grupos de cómputo también se asignan a una o más particiones de Slurm, que actúan como colas lógicas que organizan la programación de los trabajos en distintos conjuntos de nodos.

A nivel de clúster, Orchestrator.Slurm controla la forma en que se HyperPod gestiona la configuración de las particiones. slurm.conf Usted elige una estrategia que determine si HyperPod es la única fuente de información fiable para la topología de particiones, si sobrescribe los cambios manuales o si combina la API-defined configuración con cualquier edición manual que haya realizado. Esta es una referencia para los campos utilizados.

SlurmConfig(por grupo de instancias):

"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["partition-name"] }
Campo Description (Descripción)
NodeType Obligatorio. El rol de Slurm para este grupo de instancias. Valores válidos: Controller, Login, Compute. Debe existir exactamente un grupo de instancias. Controller
PartitionNames Condicional. Nombres de particiones de Slurm. Necesario para Compute el tipo de nodo; no permitido para Controller o. Login

Orchestrator.Slurm(nivel de clúster):

"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }

SlurmConfigStrategydetermina cómo HyperPod gestiona las asignaciones de partición a nodo en slurm.conf el nodo controlador. Al crear o actualizar un clúster, HyperPod escribe la configuración de la partición en slurm.conf función de la SlurmConfig que haya definido en cada grupo de instancias, mapea los grupos de instancias de cómputo a las particiones asignadas y registra los nodos de controlador e inicio de sesión con las funciones de Slurm adecuadas.

La estrategia que elijas controla lo que ocurre cuando la configuración de la partición slurm.conf se modifica fuera de la API, por ejemplo, cuando un administrador edita el archivo directamente en el nodo controlador. ConManaged, HyperPod trata a la API como la única fuente de información y detectará y bloqueará las actualizaciones slurm.conf en caso de que no haya espacio en el disco. ConOverwrite, HyperPod fuerza la API-defined configuración hacia el controlador y descarta cualquier modificación manual. slurm.conf Esto es útil para recuperarse de un cambio imprevisto. ConMerge, HyperPod conserva las ediciones manuales slurm.conf y las fusiona con la configuración de la API, lo que brinda a los usuarios avanzados la flexibilidad de mantener slurm.conf configuraciones personalizadas junto con las particiones. API-managed

Strategy (Estrategia) Detección de desviación de particiones Cambios manuales Caso de uso
Managed (predeterminado) Activado; bloquea las actualizaciones si se detecta una desviación No compatible Una única fuente de verdad
Overwrite Deshabilitado Se sobrescribe en la actualización Recuperación de una deriva
Merge Deshabilitado Preservado y fusionado slurm.confNecesidades personalizadas
importante

La detección de desviaciones solo se aplica a la configuración de particiones de Slurm en slurm.conf (las asignaciones de partición a nodo definidas a través de la API). Los cambios en otros slurm.conf ajustes, como los parámetros de programación, los límites de recursos o la configuración de la contabilidad, no se supervisan y no los detectarán ni informarán al respecto. HyperPod

nota

Si prefieres definir la topología de Slurm mediante un provisioning_parameters.json archivo en lugar de la API, omítelo en los grupos SlurmConfig de instancias y en la solicitud Orchestrator.Slurm de clúster, y sube el archivo a Amazon S3 junto con los scripts del ciclo de vida del nodo. Para obtener más información, consulte SageMaker HyperPod Configuración de Slurm.

Opciones de configuración del ciclo de vida del nodo

Al crear un clúster de SageMaker HyperPod Slurm, debes configurar el LifeCycleConfig bloque de la solicitud para elegir cómo se aprovisionarán los nodos de cada grupo de instancias. CreateCluster SageMaker HyperPod admite tres opciones de configuración del ciclo de vida de los nodos, cada una de las cuales ofrece un nivel diferente de control sobre el proceso de aprovisionamiento.

Solo con AMI-based la configuración, se omite por completo. LifeCycleConfig HyperPod configura automáticamente los nodos mediante la AMI-based configuración, la configuración de Slurm, la instalación de los paquetes esenciales y el inicio de todos los servicios necesarios. Esta es la ruta más sencilla y no requiere ningún bucket ni scripts de Amazon S3.

Con la opción Extension, debe especificar OnInitComplete LifeCycleConfig junto con un SourceS3Uri puntero el script de extensión en Amazon S3. HyperPod ejecuta primero la AMI-based configuración completa y, a continuación, ejecuta el script. Esto le permite añadir personalizaciones, como agentes de supervisión, integración con LDAP o montajes de almacenamiento adicionales, sin gestionar el aprovisionamiento básico.

Con la opción Personalizado, puede especificar OnCreate LifeCycleConfig y SourceS3Uri señalar el conjunto de scripts de ciclo de vida completo de Amazon S3. HyperPod no ejecuta la AMI-based configuración ni inicia Slurm. Sus scripts son los propietarios de toda la secuencia de aprovisionamiento. Esto le da un control total sobre el software que se instala, cómo se configura y cuándo se inicia Slurm.

Opción de ciclo de vida del nodo ¿Necesita un bucket de Amazon S3? ¿Secuencias de comandos para cargar? LifeCycleConfig ¿en la API?
AMI-based solo configuración (la más sencilla) No No Omitir por completo
Extensión () OnInitComplete Solo tu script de extensión OnInitComplete + SourceS3Uri
Personalizado (OnCreate) Conjunto de scripts de ciclo de vida completo OnCreate + SourceS3Uri
nota

La configuración opcional del ciclo de vida de los nodos solo se admite para Slurm-orchestrated los clústeres. EKS-orchestrated Los clústeres y los clústeres de Slurm que utilizan NodeProvisioningMode Continuous siguen siendo necesarios LifeCycleConfig con OnCreate y dentro de cada SourceS3Uri grupo de instancias.

nota

OnCreatey OnInitComplete se excluyen mutuamente. Si se especifican ambos en el mismo grupo de instancias, se produce un error de validación.

Configuración de FSx y VPC

Para las cargas de trabajo de aprendizaje automático, un sistema de archivos compartido de alto rendimiento es esencial para almacenar los datos de entrenamiento, los puntos de control de los modelos y las bibliotecas compartidas en los nodos del clúster. SageMaker HyperPod es compatible con Amazon FSx for Lustre y FSx para OpenZFS, configurados por grupo de instancias mediante. InstanceStorageConfigs Los sistemas de archivos FSx residen en la VPC, por lo que se requiere una configuración de VPC personalizada () cuando se utiliza FSx. VpcConfig

La configuración de FSx funciona con las tres opciones de configuración del ciclo de vida de los nodos. Cuando se utiliza AMI-based la configuración oOnInitComplete, HyperPod gestiona el montaje de FSx automáticamente. Cuando se usaOnCreate, los scripts de ciclo de vida son responsables del montaje.

FSx for Lustre:

"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ]
Campo Description (Descripción)
DnsName Obligatorio. El nombre DNS del sistema de archivos FSx for Lustre.
MountPath Opcional. La ruta de montaje local de la instancia. Valor predeterminado: /fsx
MountName Obligatorio. El nombre de montaje del sistema de archivos FSx for Lustre. Encuéntrelo en la consola FSx for Lustre o a través de. aws fsx describe-file-systems

FSx para OpenZFS:

"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } } ]
Campo Description (Descripción)
DnsName Obligatorio. El nombre DNS del sistema de archivos FSx para OpenZFS.
MountPath Opcional. La ruta de montaje local de la instancia. Valor predeterminado: /home
nota

Cada grupo de instancias puede tener como máximo una configuración FSx for Lustre y una FSx para OpenZFS. Los distintos grupos de instancias pueden montar diferentes sistemas de archivos.

Configuración de VPC (necesaria para FSx):

Añada VpcConfig a nivel de clúster en su CreateCluster solicitud:

"VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] }

Para obtener más información sobre la configuración de una VPC, consulte. Requisitos previos para su uso SageMaker HyperPod Para obtener más información sobre la configuración de FSx, consulte. Requisitos previos para su uso SageMaker HyperPod

Cree su clúster de

En esta sección, se explica cómo crear un clúster mediante cada una de las tres opciones de configuración del ciclo de vida de los nodos que se describen enOpciones de configuración del ciclo de vida del nodo. Para la mayoría de los usuarios, recomendamos comenzar con la opción A, solo con AMI-based la configuración. No requiere scripts ni un bucket de Amazon S3 y ofrece un clúster completamente funcional listo para usar. Elija la opción B si necesita añadir personalizaciones a la AMI-based configuración, o la opción C si necesita un control total sobre el proceso de aprovisionamiento.

ExecutionRolePara todos los ejemplos, proporcione el ARN del rol de IAM que creó con el administrado. AmazonSageMakerClusterInstanceRolePolicy Requisitos previos para su uso SageMaker HyperPod

Opción A: solo AMI-based configuración (sin configuración del ciclo de vida)

Esta es la ruta más sencilla. No se necesita ningún bucket, script ni archivo de configuración de Amazon S3. SageMaker HyperPod configura los nodos automáticamente mediante la AMI-based configuración, instalando el software esencial y aplicando las configuraciones para que el clúster esté listo para ejecutar cargas de trabajo de aprendizaje automático desde el primer momento. Todos los paquetes de software están integrados en la AMI, por lo que no se requiere acceso a Internet durante el aprovisionamiento.

En la siguiente tabla se enumeran las capacidades incluidas en la AMI-based configuración:

Funcionalidad Description (Descripción)
Demonios de SlurmLos daemons de controlador y cómputo se iniciaron automáticamente
DockerTiempo de ejecución de contenedores para crear y ejecutar contenedores de aprendizaje automático
EnrootEjecución de contenedores sin root para cargas de trabajo de Slurm
PyxisComplemento Slurm para la integración de contenedores
Contabilidad SlurmConfigura la contabilidad de trabajos de Slurm para rastrear el historial de trabajos y el consumo de recursos
MariaDBDespliega MariaDB en el nodo controlador como base de datos de respaldo para la contabilidad de Slurm
Generación de claves SSHPar de claves generado para el usuario predeterminado de Ubuntu
Propagación de SSHLas credenciales de usuario se propagan entre los nodos de cómputo para trabajos de varios nodos
Rotación de registros de SlurmEvita que el registro se sobrecargue y que el disco se llene
Configuración del directorio principalEl directorio principal de usuarios de Ubuntu está montado en un sistema de archivos compartido
  1. Guarde lo siguiente como: create_cluster.json

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ] } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] } }

    Ten en cuenta que no LifeCycleConfig se especifica en ningún grupo de instancias.

    La topología de Slurm se define SlurmConfig en cada grupo de instancias: my-controller-group se le asigna el Controller rol (se ejecutaslurmctld), my-login-group sirve como Login nodo para el acceso de los usuarios y worker-group-1 es un Compute nodo asignado partition-1 para la programación de tareas. A nivel de clúster, SlurmConfigStrategy: "Managed" asegura que HyperPod es la única fuente de información fiable para la configuración de las particiones. El grupo de trabajo incluye un sistema de archivos FSx for Lustre /fsx montado para el almacenamiento compartido y se especifica a nivel de VpcConfig clúster según sea necesario para FSx.

    sugerencia

    Si está realizando pruebas sin FSx, puede omitir o eliminar FsxLustreConfig VpcConfig de InstanceStorageConfigs la solicitud. FSx no es necesario para la creación de clústeres, pero se recomienda para las cargas de trabajo de ML de producción.

  2. Cree el clúster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  3. Compruebe el estado:

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

    Solo con AMI-based la configuración, los grupos de instancias de la respuesta no incluyen ningún bloque. LifeCycleConfig El siguiente es un ejemplo truncado que muestra el grupo de instancias del controlador:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" } } ] }

    Cuando el estado cambie aInService, continúe con. Conéctese a su clúster

Opción B: Amplíe AMI-based la configuración con OnInitComplete

Use esta opción cuando necesite personalizaciones adicionales a la AMI-based configuración, como agentes de monitoreo, LDAP/SSSD integraciones o montajes de almacenamiento adicionales. SageMaker HyperPod ejecuta primero AMI-based la configuración y, a continuación, ejecuta el script de extensión.

  1. Escribe tu script de extensión. Por ejemploextend-defaults.sh:

    #!/bin/bash set -e echo "Running post-initialization customizations..." # Example: Install a monitoring agent # apt-get install -y my-monitoring-agent # Example: Configure LDAP integration # /opt/custom/setup-ldap.sh # Example: Mount an additional S3 bucket # mount-s3 my-data-bucket /mnt/s3-data echo "Custom extensions complete."
    Uso de scripts de extensión del repositorio Awsome Distributed Training

    La carpeta de extensiones del repositorio de Awsome Distributed Training proporciona scripts de extensión listos para usar para tareas comunes, como añadir usuarios y habilitar la observabilidad. Cada capacidad está contenida en su propio directorio con su propio script de punto de entrada que se puede proporcionar directamente como script. OnInitComplete

    Para los clústeres que necesitan múltiples capacidades, recomendamos utilizar el run_extensions.sh script disponible en el nivel superior de la carpeta de extensiones. Este script organiza todos los scripts de extensión disponibles y proporciona sencillos ajustes booleanos para activar o desactivar cada función. Para usarlo, cargue toda la carpeta Extensions a su bucket de Amazon S3 y especifique run_extensions.sh como OnInitComplete script:

    s3://<bucket>/<prefix>/ |-- run_extensions.sh (OnInitComplete target) |-- detect-node/ (node type detection utility) |-- add-users/ (user management scripts + config) |-- observability/ (observability scripts + config)

    Dentrorun_extensions.sh, habilite o deshabilite cada capacidad configurando el indicador correspondiente:

    ENABLE_ADD_USERS="true" ENABLE_OBSERVABILITY="true"

    El archivo de configuración de cada capacidad habilitada debe rellenarse antes de cargarlo en Amazon S3. Consulte el archivo README del directorio de cada capacidad para obtener detalles de configuración.

  2. Cargue en Amazon S3 (la ruta del bucket debe empezar pors3://sagemaker-):

    aws s3 cp extend-defaults.sh \ s3://sagemaker-amzn-s3-demo-bucket/scripts/
  3. Guarde lo siguiente comocreate_cluster.json:

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }
    importante

    Si OnInitComplete se especifica, SourceS3Uri es obligatorio. OnCreatey OnInitComplete no se pueden usar juntos en el mismo grupo de instancias.

    sugerencia

    Puedes combinar opciones dentro de un clúster. Por ejemplo, utilice AMI-based la configuración solo en el controlador y OnInitComplete en los trabajadores.

    La topología de Slurm es la misma que la de la opción A. Cada grupo de instancias tiene una SlurmConfig función de nodo y una asignación de particiones definidas, y SlurmConfigStrategy: "Managed" se establece a nivel de clúster. La única diferencia es la adición de LifeCycleConfig withOnInitComplete, que indica HyperPod que debes ejecutar el script de extensión una vez finalizada la AMI-based configuración en cada nodo. Para agregar FSx, incluya FsxLustreConfig o incluya FsxOpenZfsConfig InstanceStorageConfigs en los grupos de instancias relevantes y agréguelos VpcConfig a nivel de clúster, como se describe en. Configuración de FSx y VPC

  4. Cree el clúster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  5. Compruebe el estado:

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

    ConOnInitComplete, la respuesta se muestra OnInitComplete en. LifeCycleConfig El siguiente es un ejemplo truncado que muestra el grupo de instancias del controlador:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/", "OnInitComplete": "extend-defaults.sh" } } ] }

    Cuando el estado cambie aInService, continúe con. Conéctese a su clúster

Opción C: Control totalmente personalizado con OnCreate (avanzado)

Utilice esta opción cuando necesite tener un control total sobre el aprovisionamiento, lo que incluye la instalación del software, la realización de cambios en la infraestructura y la decisión de cuándo iniciar Slurm. ConOnCreate, SageMaker HyperPod no ejecuta la AMI-based configuración y no inicia Slurm automáticamente.

nota

Si es nuevo SageMaker HyperPod y no tiene requisitos de personalización específicos, le recomendamos que comience con la opción A o la opción B. Siempre podrá migrar al modo personalizado más adelante.

  1. Prepare y cargue los scripts del ciclo de vida en Amazon S3. Si empieza desde cero, utilice los scripts de muestra del GitHub repositorio Awsome Distributed Training:

    git clone https://github.com/aws-samples/awsome-distributed-training/ cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

    Cargue en Amazon S3 (la ruta del bucket debe empezar pors3://sagemaker-):

    aws s3 sync . \ s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src

    Para obtener más información sobre los scripts de ciclo de vida, consulte Personalización de SageMaker HyperPod clústeres mediante scripts de ciclo de vida.

  2. Guarde lo siguiente comocreate_cluster.json:

    { "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }

    La topología de Slurm sigue el mismo SlurmConfig patrón que las demás opciones. La diferencia clave es con. LifeCycleConfig OnCreate Esto indica HyperPod que hay que saltarse AMI-based la configuración por completo y ejecutar el on_create.sh script en su lugar. Sus scripts son responsables de toda la secuencia de aprovisionamiento, que incluye la instalación del software, la configuración de Slurm y el inicio de los daemons de Slurm. Para agregar FSx, incluya FsxLustreConfig o incluya FsxOpenZfsConfig InstanceStorageConfigs en los grupos de instancias relevantes y agréguelos VpcConfig a nivel de clúster, como se describe en. Configuración de FSx y VPC

  3. Cree el clúster:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  4. Compruebe el estado:

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

    ConOnCreate, la respuesta se muestra OnCreate en. LifeCycleConfig El siguiente es un ejemplo truncado que muestra el grupo de instancias del controlador:

    { "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" } } ] }

    Cuando el estado cambie aInService, continúe con. Conéctese a su clúster

Errores de validación comunes

Error Resolución
«El clúster debe tener exactamente uno InstanceGroup con un tipo de nodo controlador» Asegúrese de que exactamente un grupo de instancias tengaSlurmConfig.NodeType: "Controller"
«Las particiones solo se pueden asignar a los tipos de nodos de cómputo» Elimine PartitionNames de Controller nuestros grupos de Login instancias
«Las configuraciones de FSx solo se admiten para VPC personalizadas» VpcConfigAñádalo a su solicitud cuando utilice FSx
«LifeCycleConfig es obligatorio para el grupo de instancias...» Clústeres EKS o Slurm Continuous. NodeProvisioningMode No se admite la configuración opcional del ciclo de vida de los nodos.
«OnCreate e OnInitComplete in LifeCycleConfig se excluyen mutuamente...» Elimine una de OnCreate las dosOnInitComplete. No puede especificar ambos.
«LifeCycleConfig por ejemplo, el grupo está incompleto...» Cuando se especifique OnCreate o OnInitComplete se especifique, también SourceS3Uri debe proporcionarse.
«LifeCycleConfig es opcional pero requiere una AMI compatible...» Ejecute UpdateClusterSoftware para actualizar a una AMI que admita la configuración opcional del ciclo de vida del nodo.
«LifeCycleConfig porque se proporciona un grupo de instancias pero no contiene ninguna configuración...» Especifique SourceS3Uri con OnCreate oOnInitComplete, u omita LifeCycleConfig por completo.

Conéctese a su clúster

Una vez que el estado del clúster cambie a InService (normalmente de 10 a 15 minutos), conéctese y compruébelo.

  1. Enumere los nodos del clúster para obtener los ID de las instancias:

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster
  2. Conéctese mediante el administrador de AWS Systems Manager sesiones:

    aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \ --region us-west-2
  3. Compruebe que Slurm esté configurado correctamente:

    # Check Slurm nodes sinfo # Check Slurm partitions sinfo -p partition-1 # Submit a test job srun -p partition-1 --nodes=1 hostname

Para obtener más información sobre la ejecución de cargas de trabajo de aprendizaje automático, consulte. Trabajos en SageMaker HyperPod clústeres

Eliminación del clúster y limpieza de recursos

Tras realizar las pruebas, elimine el clúster para evitar que se sigan cobrando cargos:

aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster

Si utilizó scripts de ciclo de vida de nodos (opción B u opción C), limpie el bucket de Amazon S3:

aws s3 rm s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src --recursive

Si ha utilizado únicamente AMI-based la configuración (opción A), no es necesaria ninguna limpieza de Amazon S3 para los scripts del ciclo de vida de los nodos.

Si ejecutó cargas de trabajo de entrenamiento, compruebe también si hay datos o artefactos en Amazon S3, Amazon FSx for Lustre o Amazon Elastic File System y elimínelos para evitar cargos.