View a markdown version of this page

Personalización de SageMaker HyperPod clústeres mediante scripts de ciclo de vida - 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.

Personalización de SageMaker HyperPod clústeres mediante scripts de ciclo de vida

SageMaker HyperPod siempre ofrece up-and-running clústeres de procesamiento, que son altamente personalizables, ya que puede escribir scripts de ciclo de vida que indiquen SageMaker HyperPod cómo configurar los recursos del clúster. Los siguientes temas son prácticas recomendadas para preparar scripts de ciclo de vida para configurar SageMaker HyperPod clústeres con herramientas de gestión de cargas de trabajo de código abierto.

En los siguientes temas, se analizan en profundidad las mejores prácticas para preparar scripts de ciclo de vida para configurar las configuraciones de Slurm. SageMaker HyperPod

Descripción general

El siguiente procedimiento es el flujo principal de aprovisionamiento de un HyperPod clúster y su configuración con Slurm. Los pasos se ordenan siguiendo un enfoque ascendente.

  1. Planifique cómo quiere crear los nodos de Slurm en un clúster. HyperPod Por ejemplo, si quieres configurar dos nodos de Slurm, tendrás que configurar dos grupos de instancias en un clúster. HyperPod

  2. Prepara la configuración de Slurm. Elija uno de los siguientes enfoques:

    • Opción A: Configuración basada en API (recomendada): defina los tipos de nodos y las particiones de Slurm directamente en la carga útil de la CreateCluster API utilizando SlurmConfig cada grupo de instancias. Con este enfoque:

      • No se necesita ningún provisioning_parameters.json archivo

      • La topología de Slurm se define en la carga útil de la API junto con las definiciones de los grupos de instancias

      • FSx Los sistemas de archivos se configuran mediante per-instance-group InstanceStorageConfigs

      • La estrategia de configuración se controla mediante Orchestrator.Slurm.SlurmConfigStrategy

      Ejemplo SlurmConfig en un grupo de instancias:

      { "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] } }
    • Opción B: Configuración antigua: prepara un provisioning_parameters.json archivo, que es unFormulario de configuración para provisioning_parameters.json. provisioning_parameters.jsondebe contener la información de configuración del nodo de Slurm que se va a aprovisionar en el clúster. HyperPod Esto debería reflejar el diseño de los nodos de Slurm del paso 1.

  3. Prepare un conjunto de scripts de ciclo de vida para configurar Slurm, HyperPod instalar paquetes de software y configurar un entorno en el clúster para su caso de uso. Debe estructurar los scripts de ciclo de vida para que se ejecuten de forma colectiva y en orden en un script de Python central (lifecycle_script.py) y escribir un script de intérprete de comandos de punto de entrada (on_create.sh) para ejecutar el script de Python. El script de shell de punto de entrada es lo que debe proporcionar a una solicitud de creación de HyperPod clústeres más adelante en el paso 5.

    Además, tenga en cuenta que debe escribir los scripts para esperar resource_config.json que se generen HyperPod durante la creación del clúster. resource_config.jsoncontiene información sobre los recursos del HyperPod clúster, como las direcciones IP, los tipos de instancias y ARNs, y es lo que debe usar para configurar Slurm.

  4. Reúna todos los archivos de los pasos anteriores en una carpeta. La estructura de carpetas depende del enfoque de configuración que haya seleccionado en el paso 2.

    Si seleccionó la opción A (configuración basada en API):

    La carpeta solo necesita scripts de ciclo de vida para las tareas de configuración personalizadas. La configuración y el FSx montaje de Slurm se gestionan automáticamente en HyperPod función de la carga útil de la API.

    └── lifecycle_files // your local folder ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scripts to be fed into lifecycle_script.py
    nota

    El provisioning_parameters.json archivo no es necesario cuando se utiliza una configuración basada en API.

    Si seleccionó la opción B (configuración antigua):

    La carpeta debe incluir provisioning_parameters.json el conjunto completo de scripts del ciclo de vida.

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py
  5. Cargue todos los archivos en un bucket de S3. Copie y conserve la ruta del bucket de S3. Tenga en cuenta que debe crear una ruta de bucket de S3 que empiece por sagemaker-, ya que tiene que elegir un Función de IAM para SageMaker HyperPod asociado a AmazonSageMakerClusterInstanceRolePolicy, que solo permite las rutas de bucket de S3 que comienzan con el prefijo sagemaker-. El siguiente comando es un ejemplo de comando para cargar todos los archivos en un bucket de S3.

    aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
  6. Prepare una solicitud HyperPod de creación de clústeres.

    • Opción 1: Si utilizas el AWS CLI, escribe una solicitud de creación de clústeres en formato JSON (create_cluster.json) siguiendo las instrucciones que se indican enCreación de un nuevo clúster.

    • Opción 2: Si utilizas la interfaz de usuario de la consola de SageMaker IA, rellena el formulario de solicitud de creación de un clúster en la interfaz de usuario de la HyperPod consola siguiendo las instrucciones que se indican enCrea un SageMaker HyperPod clúster.

    En esta fase, asegúrese de crear grupos de instancias en la misma estructura que planeó en los pasos 1 y 2. Además, asegúrese de especificar el bucket de S3 del paso 5 en los formularios de solicitud.

  7. Envía la solicitud de creación del clúster. HyperPod aprovisiona un clúster en función de la solicitud y, a continuación, crea un resource_config.json archivo en las instancias del HyperPod clúster y configura Slurm en el clúster ejecutando los scripts del ciclo de vida.

En los siguientes temas se explica y profundiza en los detalles sobre cómo organizar los archivos de configuración y los scripts del ciclo de vida para que funcionen correctamente durante la creación del HyperPod clúster.