Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do LSF 10.1 FixPack 9 (10.1.0.9), o Azure CycleCloud é um provedor nativo do Resource Connector. A IBM fornece documentação. Esses recursos fornecem instruções sobre como configurar o nó primário LSF para se conectar ao CycleCloud.
LSF é um produto licenciado da IBM. Para usar o LSF no CycleCloud, você precisa de um arquivo de direitos que a IBM fornece aos clientes.
Observação
- LSF é um produto licenciado da IBM. Para usar o LSF no CycleCloud, você precisa de um arquivo de direitos que a IBM fornece aos seus clientes. Adicione os binários LSF e o arquivo de direitos
blobs/ao diretório para usar o cluster totalmente automatizado ou o construtor de imagens da VM neste projeto. - Para usar o cluster totalmente automatizado ou o construtor de imagens da VM neste projeto, adicione os binários LSF e o arquivo de direitos
blobs/ao diretório. - O LSF depende do
edpacote que não está instalado em versões recentes da Imagem HPC do Azure por padrão. Se a imagem de VM selecionada não incluired, sugerimos usar cloud-init para adicionar o pacote. Por exemplo, no RedHat Enterprise Linux, AlmaLinux ou CentOS, você pode adicionar o seguinte ao modelo de cluster (ou na GUI do CycleCloud por meio da caixa de diálogo Editar Cluster):
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
Cenários com suporte do tipo de cluster LSF do CycleCloud
O LSF pode "emprestar" hosts do Azure para executar trabalhos sob demanda, adicionando e removendo hosts conforme necessário. O tipo de cluster LSF é flexível para lidar com vários cenários em um único cluster:
- Trabalhos de alta taxa de transferência (CPU e GPU)
- Fortemente acoplado (MPI, CPU e GPU)
- Baixa Prioridade
Manipule esses cenários configurando várias matrizes de nós e propriedades LSF. O CycleCloud preconfigura as matrizes de nós. A configuração adequada do LSF habilita os vários cenários de trabalho.
Ao configurar o LSF de acordo com essas recomendações, você pode usar bsub os requisitos -R de recursos da seguinte maneira:
Use o placementGroup recurso para executar um trabalho com a rede conectada InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Para GPUs, é recomendável usar o suporte LSF para sintaxe de GPU estendida. Normalmente, você adiciona esses atributos a lsf.conf: LSB_GPU_NEW_SYNTAX=extend e LSF_GPU_AUTOCONFIG=Y. Com suporte para sintaxe estendida habilitado, use o placementGroup junto com -gpu para executar um trabalho fortemente acoplado com aceleração de GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Execute trabalhos habilitados para GPU de forma paralela.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Execute um trabalho de grande intermitência em VMs de baixa prioridade.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Configurar o LSF para o tipo de Cluster LSF do CycleCloud
Para habilitar esses cenários, adicione tipos de recursos compartilhados ao 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)
Você pode omitir cyclecloudlowprio, mas essa verificação fornece uma garantia extra de que os trabalhos estão em execução na tenência de VM pretendida.
Modelo de Provedor LSF para CycleCloud
O provedor LSF CycleCloud expõe as configurações por meio do modelo de provedor. Essas configurações são um subconjunto da configuração completa do nodearray.
Veja um exemplo de modelo LSF para Cyclecloud de 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 Modelo LSF para CycleCloud
O modelo de provedor LSF não expõe todos os atributos de nodearray. Esses atributos são considerados substituições da configuração de nodearray do CycleCloud. Os únicos atributos de modelo LSF necessários são:
templateIdnodeArray
Você pode omitir outros atributos ou eles podem não ser necessários. O CycleCloud infere estes atributos:
-
imageId– Imagem da VM do Azure, por exemplo,"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"– substituição da configuração do cluster cycleCloud. -
subnetId– Sub-rede do Azure, por exemplo,"resource_group/vnet/subnet"– substituição da configuração de cluster do CycleCloud. -
vmType– por exemplo,"Standard_HC44rs"– substituição da configuração do cluster CycleCloud. -
keyPairLocation– por exemplo,"~/.ssh/id_rsa_beta"– substituição da configuração do cluster CycleCloud. - customScriptUri - Por exemplo,
http://10.1.0.4/user_data.sh. Sem script se não especificado. - userData - Por exemplo,
"nodearray_name=gpumpi;placement_group_id=gpumpipg1". Vazio se não for especificado.
Uma Observação sobre PlacementGroups
Os datacenters do Azure têm capacidade de rede InfiniBand para cenários de HPC. Ao contrário da Ethernet normal, essas redes têm intervalo limitado. "PlacementGroups" descrevem as extensões de rede InfiniBand. Se as VMs residirem no mesmo grupo de posicionamento e forem tipos de VM especiais habilitados para InfiniBand, elas compartilharão uma rede InfiniBand.
Esses grupos de posicionamento exigem tratamento especial no LSF e no CycleCloud.
Veja um exemplo de modelo LSF para CycleCloud de 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"
}
O placementGroupName neste arquivo pode ser qualquer coisa, mas determina o nome do placementGroup no CycleCloud. Todos os nós emprestados do CycleCloud desse modelo residem nesse placementGroup e, se forem VMs habilitadas para InfiniBand, compartilhem uma rede IB.
A placementGroupName propriedade corresponde ao atributo placementgrouphost. Essa correspondência é intencional e necessária. Defina a propriedade placement_group_id em userData para uso em user_data.sh no momento de início do host.
O atributo ondemandmpi pode parecer supérfluo, mas é usado para evitar que este trabalho corresponda a hosts em que placementGroup não está definido.
Quando você usa grupos de posicionamento, o valor da Azure.MaxScaleSetSize propriedade determina o tamanho máximo do grupo de posicionamento.
Essa propriedade limita indiretamente quantos nós você pode adicionar a um grupo de posicionamento, mas o LSF não o considera. Defina MaxNumber do modelo LSF igual a Azure.MaxScaleSetSize no modelo de cluster.
user_data.sh
O modelo fornece dois atributos para executar um script user_data.sh : customScriptUri e userData. Esses atributos são o URI e as variáveis de ambiente personalizadas do script gerenciado pelo usuário que é executado na inicialização do nó.
customScriptUri não pode exigir autenticação porque um comando CURL anônimo baixa o script. Use esse script para:
- Configurar os daemons LSF do trabalho; especialmente
LSF_LOCAL_RESOURCESeLSF_MASTER_LIST.- Se
LSF_TOPestiver em um sistema de arquivos compartilhado, será útil fazer uma cópialsf.conflocal e definir aLSF_ENVDIRvariável antes de iniciar os daemons.
- Se
- Iniciar os daemons lim, res e sbatch.
O provedor CycleCloud define algumas variáveis de ambiente padrão.
- rc_account
- template_id
- nomeDoProvedor
- nome do cluster
- cyclecloud_nodeid (defina essa variável como
instanceIdrecurso)
Outras variáveis de dados do usuário que podem ser úteis no gerenciamento de recursos no provedor do CycleCloud são:
- nodearray_name
- placement_group_id
Observação
Embora o Windows seja uma plataforma LSF com suporte oficial, o CycleCloud não dá suporte à execução de LSF no Windows no momento.