Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de LSF 10.1 FixPack 9 (10.1.0.9), Azure CycleCloud es un proveedor nativo para Resource Connector. IBM proporciona documentación. Estos recursos proporcionan instrucciones sobre cómo configurar el nodo principal LSF para conectarse a CycleCloud.
LSF es un producto con licencia de IBM. Para usar LSF en CycleCloud, necesita un archivo de derechos que IBM proporciona a sus clientes.
Nota:
- LSF es un producto con licencia de IBM. Para usar LSF en CycleCloud, necesita un archivo de derechos que IBM proporciona a sus clientes. Agregue los archivos binarios de LSF y el archivo de derechos al
blobs/directorio para usar el clúster totalmente automatizado o el generador de imágenes de máquina virtual en este proyecto. - Para usar el clúster totalmente automatizado o el generador de imágenes de máquina virtual en este proyecto, agregue los archivos binarios de LSF y el archivo de derechos al
blobs/directorio. - LSF depende del
edpaquete que no está instalado en las versiones recientes de Azure HPC Image de forma predeterminada. Si la imagen de máquina virtual seleccionada no incluyeed, se recomienda usar cloud-init para agregar el paquete. Por ejemplo, en RedHat Enterprise Linux, AlmaLinux o CentOS puede agregar lo siguiente a la plantilla de clúster (o en la GUI de CycleCloud mediante el cuadro de diálogo Edición de clúster):
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
Escenarios admitidos del tipo de clúster CycleCloud LSF
LSF puede "tomar prestados" hosts de Azure para ejecutar trabajos bajo demanda, agregando y quitando hosts según sea necesario. El tipo de clúster LSF es flexible para controlar varios escenarios en un único clúster:
- Trabajos de alto rendimiento (CPU y GPU)
- Estrechamente acoplado (MPI, CPU y GPU)
- Prioridad baja
Controle estos escenarios configurando varias matrices de nodos y propiedades LSF. CycleCloud preconfigura las matrices de nodos. La configuración adecuada de LSF permite los distintos escenarios de trabajo.
Al configurar LSF de acuerdo con estas recomendaciones, puede usar bsub los requisitos -R de recursos de la siguiente manera:
Use el placementGroup recurso para ejecutar un trabajo con la red conectada infiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
En el caso de las GPU, se recomienda usar la compatibilidad con LSF para la sintaxis extendida de GPU. Normalmente, se agregan estos atributos a lsf.conf: LSB_GPU_NEW_SYNTAX=extend y LSF_GPU_AUTOCONFIG=Y. Con compatibilidad con la sintaxis extendida habilitada, use placementGroup junto con -gpu para ejecutar un trabajo estrechamente acoplado con aceleración de GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Ejecute trabajos habilitados para GPU de forma paralela.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Ejecute un trabajo de ráfaga grande en máquinas virtuales de prioridad baja.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Configuración de LSF para el tipo de clúster CycleCloud LSF
Para habilitar estos escenarios, agregue tipos de recursos compartidos a lsb.shared.
cyclecloudhost Boolean () () (instances from Azure CycleCloud)
cyclecloudmpi Boolean () () (instances that support MPI placement)
cyclecloudlowprio Boolean () () (instances that low priority / interruptible from Azure CycleCloud)
nodearray String () () (nodearray from CycleCloud)
placementgroup String () () (id used to note locality of machines)
instanceid String () () (unique host identifier)
Es posible que pueda dejar fuera cyclecloudlowprio, pero proporciona una comprobación adicional de que los trabajos se ejecutan en su inquilino de máquina virtual previsto.
Plantilla de proveedor LSF para CycleCloud
El proveedor LSF CycleCloud expone configuraciones a través de la plantilla de proveedor. Estas configuraciones son un subconjunto de la configuración completa de nodearray.
Esta es una plantilla LSF de ejemplo para Cyclecloud desde cyclecloudprov_templates.json:
{
"templateId": "ondemand",
"attributes": {
"type": ["String", "X86_64"],
"ncores": ["Numeric", "44"],
"ncpus": ["Numeric", "44"],
"mem": ["Numeric", "327830"],
"cyclecloudhost": ["Boolean", "1"],
"nodearray" : ["String", "ondemand"]
},
"priority" : 250,
"nodeArray": "ondemand",
"vmType" : "Standard_HC44rs",
"subnetId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Network/virtualNetworks/hpc-network/subnets/compute",
"imageId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Compute/images/lsf-worker-a4bc2f10",
"maxNumber": 500,
"keyPairLocation": "/opt/cycle_server/.ssh/id_rsa_admin.pem",
"customScriptUri": "https://aka.ms/user_data.sh",
"userData": "nodearray_name=ondemand"
}
Atributos de plantilla LSF para CycleCloud
La plantilla de proveedor LSF no expone todos los atributos nodearray. Estos atributos se consideran invalidaciones de la configuración nodearray de CycleCloud. Los únicos atributos de plantilla LSF necesarios son:
templateIdnodeArray
Puede omitir otros atributos o que no sean necesarios en absoluto. CycleCloud deduce estos atributos:
-
imageId: imagen de VM de Azure, por ejemplo,"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f". Invalidar para la configuración del clúster CycleCloud. -
subnetId: subred de Azure, por ejemplo,"resource_group/vnet/subnet". Invalidar para la configuración del clúster CycleCloud. -
vmType: por ejemplo,"Standard_HC44rs". Invalidar para la configuración del clúster CycleCloud. -
keyPairLocation: por ejemplo,"~/.ssh/id_rsa_beta". Invalidar para la configuración del clúster CycleCloud. - customScriptUri: por ejemplo,
http://10.1.0.4/user_data.sh. No hay ningún script si no se especifica. - userData: por ejemplo,
"nodearray_name=gpumpi;placement_group_id=gpumpipg1". Está vacío si no se especifica.
Una nota sobre PlacementGroups
Los centros de datos de Azure tienen funcionalidad de red InfiniBand para escenarios de HPC. A diferencia del Ethernet normal, estas redes tienen un intervalo limitado. "PlacementGroups" describe las extensiones de red InfiniBand. Si las máquinas virtuales residen en el mismo grupo de colocación y son tipos especiales de máquinas virtuales habilitadas para InfiniBand, comparten una red de InfiniBand.
Estos grupos de selección de ubicación requieren un control especial en LSF y CycleCloud.
Este es un ejemplo de plantilla LSF para CycleCloud desde cyclecloudprov_templates.json:
{
"templateId": "ondemandmpi-1",
"attributes": {
"nodearray": ["String", "ondemandmpi" ],
"zone": [ "String", "westus2"],
"mem": [ "Numeric", 8192.0],
"ncpus": [ "Numeric", 2],
"cyclecloudmpi": [ "Boolean", 1],
"placementgroup": [ "String", "ondemandmpipg1"],
"ncores": [ "Numeric", 2],
"cyclecloudhost": [ "Boolean", 1],
"type": [ "String", "X86_64"],
"cyclecloudlowprio": [ "Boolean", 0]
},
"maxNumber": 40,
"nodeArray": "ondemandmpi",
"placementGroupName": "ondemandmpipg1",
"priority": 448,
"customScriptUri": "https://aka.ms/user_data.sh",
"userData" : "nodearray_name=ondemandmpi;placement_group_id=ondemandmpipg1"
}
El placementGroupName de este archivo puede ser cualquier cosa, pero determina el nombre de placementGroup en CycleCloud. Todos los nodos prestados por CycleCloud desde esta plantilla residen en este placementGroup y, si son máquinas virtuales habilitadas para InfiniBand, comparten una red de IB.
La placementGroupName propiedad coincide con el atributo placementgrouphost . Esta coincidencia es intencionada y necesaria. Establezca la propiedad placement_group_id en userData para usarla en user_data.sh a la hora de inicio del host.
El ondemandmpi atributo puede parecer extraño, pero se usa para evitar que este trabajo coincida en hosts donde placementGroup no está definido.
Cuando se usan grupos de selección de ubicación, el valor de la Azure.MaxScaleSetSize propiedad determina el tamaño máximo del grupo de selección de ubicación.
Esta propiedad limita indirectamente cuántos nodos se pueden agregar a un grupo de ubicación, pero LSF no lo tiene en cuenta. Establecer MaxNumber de la plantilla LSF como Azure.MaxScaleSetSize en la plantilla de clúster.
user_data.sh
La plantilla proporciona dos atributos para ejecutar un script de user_data.sh : customScriptUri y userData. Estos atributos son el URI y las variables de entorno personalizadas del script administrado por el usuario que se ejecuta en el inicio del nodo.
customScriptUri no puede requerir autenticación porque el script se descarga mediante un comando CURL anónimo. Use este script para:
- Configure los demonios LSF de trabajo, especialmente
LSF_LOCAL_RESOURCESyLSF_MASTER_LIST.- Si
LSF_TOPestá en un sistema de archivos compartido, resulta útil realizar una copia local delsf.confy establecer la variableLSF_ENVDIRantes de iniciar los demonios.
- Si
- Inicie los demonios lim, res y sbatch.
El proveedor CycleCloud establece algunas variables de entorno predeterminadas.
- rc_account
- template_id
- nombreDelProveedor
- clustername
- cyclecloud_nodeid (establezca esta variable en
instanceIdrecurso)
Otras variables de datos de usuario que pueden ser útiles para administrar recursos en el proveedor CycleCloud son:
- nodearray_name
- placement_group_id
Nota:
Aunque Windows es una plataforma LSF compatible oficialmente, CycleCloud no admite la ejecución de LSF en Windows en este momento.