Ejercicio: Incorporación de una matriz de nodos personalizada a un clúster de HPC

Completado

Precaución

Este contenido hace referencia a CentOS, una distribución de Linux que es el estado Fin de vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para obtener más información, consulte la Guía de fin de ciclo de vida de CentOS.

Un objeto nodearray es una colección de nodos configurados de forma idéntica de un clúster de Azure CycleCloud. Su propósito es adaptarse al escalado horizontal de los recursos de proceso del clúster a medida que cambia el número de trabajos en cola. Cada elemento nodearray tiene un nombre, un conjunto de atributos que se aplican a cada uno de sus nodos y atributos opcionales que describen cómo se debe escalar el elemento nodearray.

Las particiones del programador de trabajos de Slurm agrupan los nodos en conjuntos lógicos y potencialmente superpuestos. Su propósito es optimizar el procesamiento de trabajos al tener en cuenta sus restricciones específicas, como los límites de recursos o de tiempo. El programador asigna trabajos a los nodos de una partición hasta que se agotan sus recursos o se han procesado todos los trabajos.

Quiere modificar el clúster administrado de Azure CycleCloud recién implementado para tener en cuenta las necesidades de recursos específicas del trabajo. Para lograr este objetivo, decide aplicar más cambios a la plantilla subyacente y validar el enfoque.

En este ejercicio, realizará las siguientes tareas:

  • Tarea 1: incorporación de una definición de nodearray a la plantilla de Azure CycleCloud
  • Tarea 2: incorporación de parámetros de interfaz gráfica a la plantilla de Azure CycleCloud
  • Tarea 3: exportación de propiedades del clúster de Azure CycleCloud
  • Tarea 4: edición del archivo de propiedades para incluir los nuevos parámetros
  • Tarea 5: importación de la plantilla modificada y el archivo de parámetros en el clúster existente

Nota:

Asegúrate de haber realizado correctamente el ejercicio anterior antes de iniciar este.

Tarea 1: incorporación de una definición de nodearray a la plantilla de Azure CycleCloud

Empieza agregando una definición de nodearray en la plantilla de Slurm que ha personalizado en el ejercicio anterior. La plantilla de ejemplo incluye dos particiones etiquetadas hpc y htc. Va a crear otra partición y el objeto nodearray correspondiente para los trabajos que se benefician de las capacidades de Arquitectura Unificada de Dispositivos de Cómputo (CUDA).

  1. Acceda a Azure Portal. Cuando se le pida, autentíquese con una cuenta de Microsoft o de Microsoft Entra que tenga el rol Colaborador o Propietario en la suscripción a Azure que va a usar en este módulo.

  2. En Azure Portal, abra Cloud Shell. Para ello, seleccione su icono en la barra de herramientas que se encuentra junto al cuadro de texto de búsqueda y asegúrese de que está ejecutando una sesión de Bash.

  3. Ejecuta el comando siguiente en el Cloud Shell para establecer el directorio de trabajo en el que hospeda el repositorio de GitHub que ha capturado en el ejercicio anterior:

    cd ~/cyclecloud-slurm/templates
    
  4. Ejecute el siguiente comando para abrir la plantilla descargada en el editor nano:

    nano slurm.txt
    
  5. En la interfaz del editor nano, ve a la sección [parameters About] y agregue el siguiente contenido directamente delante de ella:

    
    [[nodearray cuda]]
    MachineType = $CUDAMachineType
    ImageName = $CUDAImageName
    MaxCoreCount = $MaxCUDAExecuteCoreCount
    
    AdditionalClusterInitSpecs = $CUDAClusterInitSpecs
    
        [[[configuration]]]
        slurm.autoscale = true
        slurm.hpc = true
    
        [[[cluster-init cyclecloud/slurm:execute]]]
    
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic
    
    

    Nota:

    Si usas un equipo Windows, puedes pegar el contenido del Portapapeles mediante la combinación de teclas Mayús + Insert.

    Nota:

    Los cambios definen un elemento nodearray adicional.

Tarea 2: incorporación de parámetros de interfaz gráfica a la plantilla de Azure CycleCloud

Para poder modificar los valores de los parámetros de plantilla con la interfaz gráfica de Azure CycleCloud, va a aplicar más cambios a la plantilla.

  1. En la interfaz del editor nano, ve a la sección [[parameters Auto-Scaling]] y agrega el siguiente contenido directamente delante de ella:

    
        [[[parameter CUDAMachineType]]]
        Label = CUDA VM Type
        Description = The VM type for CUDA execute nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_NC24
    
    
  2. Ve a la sección [[[parameter HPCMaxScalesetSize]]] y agrega el siguiente contenido directamente delante de ella:

    
        [[[parameter MaxCUDAExecuteCoreCount]]]
        Label = Max CUDA Cores
        Description = The total number of CUDA execute cores to start
        DefaultValue = 100
        Config.Plugin = pico.form.NumberTextBox
        Config.MinValue = 0
        Config.IntegerOnly = true
    
    
  3. Ve a la sección [[[parameter SchedulerClusterInitSpecs]]] y agrega el siguiente contenido directamente delante de ella:

    
        [[[parameter CUDAImageName]]]
        Label = CUDA OS
        ParameterType = Cloud.Image
        Config.OS = linux
        DefaultValue = cycle.image.centos7
        Config.Filter := Package in {"cycle.image.centos7", "cycle.image.ubuntu18"}
    
    
  4. Ve a la sección [[parameters Advanced Networking]] y agrega el siguiente contenido directamente delante de ella:

    
        [[[parameter CUDAClusterInitSpecs]]]
        Label = CUDA Cluster-Init
        DefaultValue = =undefined
        Description = Cluster init specs to apply to CUDA execute nodes
        ParameterType = Cloud.ClusterInitSpecs
    
    
  5. Selecciona la combinación de teclas Ctrl + O, la tecla Entrar y luego la combinación de teclas Ctrl + X para guardar los cambios realizados y cerrar el archivo.

Tarea 3: exportación de propiedades del clúster de Azure CycleCloud

Antes de aplicar los cambios de configuración realizados en la plantilla de Azure CycleCloud al clúster de destino, debe exportar las propiedades del clúster.

  1. Ejecuta el siguiente comando en Cloud Shell para enumerar los clústeres existentes:

    cyclecloud show_cluster
    

    Nota:

    Compruebe que la salida incluye la entrada contoso-custom-slurm-lab-cluster.

  2. Ejecute el siguiente comando para exportar al archivo params.json la lista de parámetros del clúster contoso-custom-slurm-lab-cluster y sus valores:

    cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
    
  3. Ejecute el siguiente comando para revisar la lista exportada de parámetros y sus valores:

    cat ~/params.json
    

Tarea 4: edición del archivo de propiedades para incluir los nuevos parámetros

Aunque las ediciones aplicadas a la plantilla de Azure CycleCloud incluían valores predeterminados para todos los parámetros recién incorporados, es posible que tenga que modificarlos para tener en cuenta sus requisitos específicos. En esta tarea va a establecer los valores de los parámetros CUDAMachineType y MaxCUDAExecuteCoreCount.

  1. Ejecuta el siguiente comando en Cloud Shell para abrir en el editor nano el archivo de parámetros descargado:

    nano ~/params.json
    
  2. En el editor nano, ve al final del archivo y agrega el siguiente contenido empezando por una nueva línea delante de las llaves de cierre (}):

       "CUDAMachineType" : "Standard_NC6",
       "MaxCUDAExecuteCoreCount" : 60
    
  3. Agrega una coma al final de la línea anterior a la que ha agregado en el paso previo:

       "CUDAMachineType" : "Standard_NC6"
    
  4. Selecciona la combinación de teclas Ctrl + O, la tecla Entrar y luego la combinación de teclas Ctrl + X para guardar los cambios realizados y cerrar el archivo.

Tarea 5: importación de la plantilla modificada y el archivo de parámetros en el clúster existente

Para finalizar este ejercicio, va a importar la plantilla modificada y su archivo de parámetros en el clúster existente, reemplazando su configuración actual.

  1. Ejecuta el siguiente comando en Cloud Shell para importar la plantilla modificada y su archivo de parámetros en el clúster existente:

    cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
    

    Nota:

    Debes especificar el nombre del clúster de destino y la marca --force para sobrescribir la configuración del clúster existente.

  2. En el equipo, abra otra ventana del explorador y vaya a la dirección URL https://<IP_address>. Si se le pide, confirme que quiere continuar.

  3. Si se le pide que se autentique, inicie sesión con las credenciales de la misma cuenta de usuario de la aplicación de Azure CycleCloud que ha usado para configurar la CLI de Azure CycleCloud.

  4. En la interfaz gráfica de Azure CycleCloud, vaya a la página Clústeres. En la lista de clústeres, selecciona la entrada contoso-custom-slurm-lab-cluster y selecciona Editar.

  5. En la ventana emergente Editar contoso-custom-slurm-lab-cluster, en la página Acerca de, seleccione Siguiente.

  6. En la página Valores obligatorios, compruebe la presencia de la entrada CUDA VM Type (Tipo de máquina virtual CUDA) establecida en el valor Standard_NC6 y las opciones de escalado automático correspondientes:

Captura de pantalla de la página Configuración necesaria de la ventana emergente Editar contoso-custom-slurm-lab-cluster.

Felicidades. Ha realizado correctamente el segundo ejercicio de este módulo. En este ejercicio ha personalizado aún más el clúster de Azure CycleCloud mediante una plantilla modificada que incluye la definición de un nuevo nodearray con la partición correspondiente. Para lograr este objetivo, después de editar la plantilla, ha exportado y editado el archivo de parámetros del clúster y lo ha importado, junto con la plantilla modificada, en el clúster.

Nota:

No elimines los recursos que has implementado y configurado en este ejercicio si tienes previsto ejecutar el ejercicio siguiente. Estos recursos son necesarios para completar el ejercicio siguiente.