View a markdown version of this page

Aprovisionamiento continuo para mejorar las operaciones de los clústeres con Slurm - 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.

Aprovisionamiento continuo para mejorar las operaciones de los clústeres con Slurm

SageMaker HyperPod Los clústeres de Amazon creados con la orquestación de Slurm ahora admiten el aprovisionamiento continuo, una capacidad que permite una mayor flexibilidad y eficiencia al ejecutar cargas de trabajo a gran escala. AI/ML El aprovisionamiento continuo le permite empezar a entrenar rápidamente, escalar sin problemas, realizar tareas de mantenimiento sin interrumpir las operaciones y obtener una visión detallada de las operaciones del clúster.

nota

El aprovisionamiento continuo está disponible como configuración opcional para los clústeres creados con la orquestación de Slurm HyperPod .

Funcionamiento

El sistema de aprovisionamiento continuo presenta una arquitectura del estado deseado que reemplaza el modelo tradicional de escalado de todo o nada. En el modelo anterior, si un grupo de instancias no se podía aprovisionar por completo, se producía un error en toda la operación de creación o actualización del clúster y se revertía. Con el aprovisionamiento continuo, el sistema acepta una capacidad parcial y continúa aprovisionando las instancias restantes de forma asíncrona.

El sistema de aprovisionamiento continuo:

  • Acepta la solicitud: registra el recuento de instancias de destino de cada grupo de instancias.

  • Inicia el aprovisionamiento: comienza a lanzar instancias para todos los grupos de instancias en paralelo.

  • Aprovisiona primero los nodos prioritarios: el clúster pasa a una InService vez que se aprovisione correctamente al menos un nodo controlador (y un nodo de inicio de sesión, si se especifica un grupo de instancias de inicio de sesión).

  • Realiza un seguimiento del progreso: supervisa cada intento de lanzamiento de una instancia y registra su estado.

  • Gestiona los errores: reintenta automáticamente los lanzamientos fallidos de los nodos de trabajo de forma asíncrona.

El aprovisionamiento continuo está deshabilitado de forma predeterminada. Para usar esta función, configúrela en NodeProvisioningMode su solicitudContinuous. CreateCluster

Con el aprovisionamiento continuo activado, puede iniciar varias operaciones de escalado simultáneamente sin esperar a que se completen las operaciones anteriores. Esto le permite escalar diferentes grupos de instancias en el mismo clúster de forma simultánea y enviar varias solicitudes de escalado al mismo grupo de instancias.

Priority-based aprovisionamiento

Los clústeres de Slurm requieren que un nodo controlador esté operativo antes de que los nodos trabajadores puedan registrar y aceptar trabajos. El aprovisionamiento continuo lo gestiona automáticamente mediante un aprovisionamiento basado en prioridades:

  1. El grupo de instancias del controlador se aprovisiona primero.

  2. Una vez que un nodo controlador está en buen estado, los nodos de inicio de sesión y los nodos de trabajo comienzan a aprovisionarse en paralelo.

  3. El clúster InService pasa a tener un nodo controlador activo y otro nodo de inicio de sesión activo (si se especifica un grupo de instancias de inicio de sesión). Si no se especifica ningún grupo de instancias de inicio de sesión, el clúster pasa a InService él tan pronto como se aprovisione el nodo controlador.

  4. Los nodos de trabajo que no se pueden aprovisionar inmediatamente debido a limitaciones de capacidad entran en un bucle de reintentos asíncrono y se añaden al clúster de Slurm automáticamente a medida que están disponibles.

Gestión de los fallos del controlador

Durante la creación del clúster, si el nodo controlador no se aprovisiona, el comportamiento depende de si el error se puede volver a intentar o no.

Errores que se pueden volver a intentar (por ejemplo, instancias en mal estado o errores transitorios):

  • HyperPod reemplaza continuamente la instancia y vuelve a intentar el aprovisionamiento hasta que se activa el controlador.

  • Los nodos de trabajo y de inicio de sesión que ya se han aprovisionado permanecen disponibles, pero el clúster no pasa a ellos InService hasta que el controlador esté en buen estado.

Non-retryable errores (por ejemplo, falta de capacidad disponible para el tipo de instancia del controlador o error en el script del ciclo de vida):

  • El clúster está marcado comoFailed.

  • Se le notifica el motivo del error y debe tomar medidas correctivas, como elegir un tipo de instancia diferente, corregir los scripts del ciclo de vida o volver a intentarlo en una zona de disponibilidad diferente.

Requisitos previos

El aprovisionamiento continuo requiere que los parámetros de aprovisionamiento de Slurm (tipos de nodos, nombres de particiones) se proporcionen mediante la carga útil de la API en el campo de cada grupo de instancias. SlurmConfig Los clústeres que se basan en el provisioning_parameters.json archivo heredado de Amazon S3 no son compatibles con el aprovisionamiento continuo.

nota

Las siguientes funciones no se admiten actualmente con el aprovisionamiento continuo en los clústeres de Slurm: configuración de nodos de múltiples cabezales mediante API-based la topología de Slurm y. SlurmConfigStrategy El aprovisionamiento continuo funciona exclusivamente en modo de fusión para la administración. slurm.conf

Medición de uso

HyperPod Los clústeres con aprovisionamiento continuo utilizan la medición a nivel de instancia para proporcionar una facturación precisa que refleje el uso real de los recursos. Este enfoque de medición se diferencia de la facturación tradicional de clústeres, ya que hace un seguimiento de cada instancia de forma independiente.

Instance-level facturación

Con el aprovisionamiento continuo, la facturación comienza y termina en cada instancia en lugar de esperar a que cambie el estado del clúster. A continuación se enumeran los beneficios de este enfoque:

  • Precisión de la facturación: la facturación comienza cuando se inicia la ejecución del script de ciclo de vida. Si el script del ciclo de vida falla, se volverá a intentar aprovisionar la instancia y se le cobrará por la duración del tiempo de ejecución del script del ciclo de vida.

  • Medición independiente: el ciclo de vida de facturación de cada instancia se gestiona por separado, lo que evita que se produzcan errores de facturación en cascada.

  • Real-time actualizaciones de facturación: la facturación comienza cuando una instancia comienza a ejecutar su script de configuración del ciclo de vida y se detiene cuando la instancia entra en un estado de finalización.

Ciclo de vida de facturación

Cada instancia de tu HyperPod clúster sigue este ciclo de vida de facturación:

  • La facturación comienza: cuando la instancia se lanza correctamente y comienza a ejecutar su script de configuración del ciclo de vida.

  • La facturación continúa: durante toda la vida operativa de la instancia.

  • La facturación se detiene: cuando la instancia entra en un estado de finalización, independientemente del motivo de la finalización.

nota

La facturación no se inicia en el caso de las instancias que no se consiguen lanzar. Si el lanzamiento de una instancia falla debido a una falta de capacidad o por otros problemas, no se le cobrará por ese intento fallido. La facturación se calcula por instancia y los costos se agregan y anotan en el Nombre de recurso de Amazon (ARN) de su clúster.

Creación de un clúster con el aprovisionamiento continuo activado

nota

Prepare un script de configuración del ciclo de vida y cárguelo en un bucket de Amazon S3 al que pueda acceder su rol de ejecución. Para obtener más información, consulte SageMaker HyperPod Operaciones de clúster de Slurm.

Prepare un archivo de solicitud de CreateCluster API en formato JSON. Configura NodeProvisioningMode Continuous y proporciona información de topología de Slurm en el campo de cada grupo de instancias. SlurmConfig

// create_cluster.json { "ClusterName": "my-training-cluster", "NodeProvisioningMode": "Continuous", "Orchestrator": { "Slurm": {} }, "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Controller" } }, { "InstanceGroupName": "login-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Login" } }, { "InstanceGroupName": "worker-gpu-a", "InstanceType": "ml.p5.48xlarge", "InstanceCount": 16, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] } } ], "VpcConfig": { "SecurityGroupIds": ["sg-12345678"], "Subnets": ["subnet-12345678"] } }

Ejecuta el create-cluster comando para enviar la solicitud.

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

Esto devuelve el ARN del nuevo clúster.

{ "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde12345" }

Administración de la configuración de Slurm

El aprovisionamiento continuo funciona exclusivamente en modo de fusión para slurm.conf la administración de particiones. En el modo de fusión, HyperPod aplica los cambios de configuración de sus particiones de forma aditiva sobre cualquier elemento que haya modificado. slurm.conf HyperPod solo actualiza las secciones relacionadas con la partición slurm.conf (como las entradas del nombre de la partición y del nombre del nodo); los demás parámetros de configuración de Slurm no se modifican. Esto significa:

  • Se conservan sus modificaciones manuales. slurm.conf

  • No se detectan desviaciones automáticamente ni se resuelven los conflictos entre las modificaciones y HyperPod el estado esperado.

El SlurmConfigStrategy parámetro (Managed,Merge,Overwrite) no es compatible con el aprovisionamiento continuo. Si se transfiere cualquier SlurmConfigStrategy valor, se produce un error de API.

Requisitos mínimos de capacidad (MinCount)

La MinCount función te permite especificar la cantidad mínima de instancias que se deben aprovisionar correctamente antes de que un grupo de instancias pase al InService estado. Esta función proporciona un mejor control sobre las operaciones de escalado y ayuda a evitar situaciones en las que los grupos de instancias parcialmente aprovisionados no se puedan usar de manera eficaz para entrenar cargas de trabajo.

importante

MinCount no es una garantía permanente de capacidad mínima. Solo garantiza que el número mínimo de instancias especificado esté disponible cuando el grupo de instancias se forme por primera vezInService. Durante las operaciones normales, como el reemplazo de instancias en mal estado o las actividades de mantenimiento, MinCount pueden producirse breves interrupciones.

¿Cómo funciona MinCount

Cuando creas o actualizas un grupo de instancias con la MinCount opción habilitada, se produce el siguiente comportamiento:

  • Grupos de instancias nuevos: el grupo de instancias permanece en Creating estado hasta que al menos MinCount las instancias se aprovisionen correctamente y estén listas. Una vez que se alcanza este umbral, el grupo de instancias pasa aInService.

  • Grupos de instancias existentes: al actualizar MinCount un grupo de instancias existente, el estado cambia a Updating hasta que se cumpla el nuevo MinCount requisito.

  • Escalado continuo: si TargetCount es superior a MinCount, el sistema de escalado continuo seguirá intentando lanzar instancias adicionales hasta que TargetCount se alcance.

  • Tiempo de espera y reversión: si MinCount no se puede cumplir en un plazo de 3 horas, el sistema restablece automáticamente el grupo de instancias a su último estado válido conocido. Para obtener más información sobre el comportamiento de reversión, consulta Comportamiento de reversión automática.

Estado del grupo de instancias durante las operaciones MinCount

Los grupos de instancias MinCount configurados muestran el siguiente comportamiento de estado:

Creación

Para grupos de instancias nuevos cuando CurrentCount < MinCount. El grupo de instancias permanece en este estado hasta que se cumpla el requisito de capacidad mínima.

Actualización

Para los grupos de instancias existentes, cuando MinCount se modifica y CurrentCount < MinCount. El grupo de instancias permanece en este estado hasta que se cumpla el nuevo requisito de capacidad mínima.

InService

Cuando MinCount ≤ CurrentCount ≤ TargetCount. El grupo de instancias está listo para usarse y todas las operaciones de mutación están desbloqueadas.

Durante nuestro Creating Updating estado, se aplican las siguientes restricciones:

  • Operaciones de mutación como BatchAddClusterNodesBatchDeleteClusterNodes, o UpdateClusterSoftware están bloqueadas

  • Aún puede modificar TargetCount los valores MinCount y corregir los errores de configuración

  • Siempre se permite eliminar clústeres y grupos de instancias

Comportamiento de reversión automática

Si un grupo de instancias no puede llegar al suyo MinCount en un plazo de 3 horas, el sistema inicia automáticamente una reversión para evitar esperas indefinidas:

  • Nuevos grupos de instancias: MinCount y TargetCount se restablecen a (0, 0)

  • Grupos de instancias existentes: MinCount y TargetCount se restauran a sus valores del último InService estado

  • Selección de instancias para su terminación: si las instancias deben cancelarse durante la reversión, el sistema selecciona primero las instancias en mal estado y, a continuación, las que se aprovisionaron más recientemente.

  • Transición de estado: el grupo de instancias pasa inmediatamente al InService estado después de iniciar la reversión, lo que permite que el sistema de escalado continuo administre la capacidad de acuerdo con la configuración de la reversión

El tiempo de espera de 3 horas se restablece cada vez que se actualiza. MinCount Por ejemplo, si actualizas MinCount varias veces, el período de espera comienza desde la actualización más reciente.

MinCount eventos

El sistema emite eventos específicos para ayudarle a realizar un seguimiento de MinCount las operaciones:

  • Capacidad mínima alcanzada: se emite cuando un grupo de instancias alcanza correctamente su capacidad MinCount y pasa a InService

  • Se inicia la reversión: se emite cuando vence el tiempo de espera de 3 horas y comienza la reversión automática

Puede supervisar estos eventos mediante ListClusterEventsel seguimiento del progreso de sus operaciones. MinCount

Uso de la API

MinCount se especifica mediante el MinInstanceCount parámetro en las configuraciones de grupos de instancias:

aws sagemaker create-cluster \ --cluster-name $HP_CLUSTER_NAME \ --instance-groups '[ { "InstanceGroupName": "controller-machine", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": {"NodeType": "Controller"}, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 2 }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": {"NodeType": "Login"}, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1 }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.c5.xlarge", "MinInstanceCount": 1, "InstanceCount": 2, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["p1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1 } ]' \ --vpc-config '{ "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET'"] }' \ --node-provisioning-mode Continuous

Consideraciones clave de MinCount uso:

  • MinInstanceCountdebe estar entre 0 y el valor InstanceCount (incluido) del grupo de instancias especificado en CreateClusternuestra UpdateClustersolicitud

  • Si MinInstanceCount se establece en 0 (predeterminado), se conserva el comportamiento de escalado continuo estándar

  • El valor predeterminado MinInstanceCount para Controller y Login InstanceGroup se establece en 1 durante la creación del clúster

  • Si se establece MinInstanceCount igual a, se InstanceCount proporciona un comportamiento de escalado de todo o nada

  • MinCount solo está disponible para clústeres con NodeProvisioningMode el valor establecido en Continuous