Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A partir do LSF 10.1 FixPack 9 (10.1.0.9), o Azure CycleCloud é um provedor nativo para o 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 pela IBM. Para usar LSF no CycleCloud, você precisa de um arquivo de direitos que a IBM fornece aos seus clientes.
Observação
LSF é um produto licenciado pela IBM. Para usar LSF no CycleCloud, você precisa de um arquivo de direitos que a IBM fornece a seus clientes. Adicione os binários LSF e o arquivo de direitos ao blobs/
diretório para usar o cluster totalmente automatizado ou o construtor de imagens de VM neste projeto.
Para usar o cluster totalmente automatizado ou o construtor de imagens de VM neste projeto, adicione os binários LSF e o arquivo de direitos ao blobs/
diretório.
Cenários suportados do tipo de cluster CycleCloud LSF
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 alto rendimento (CPU e GPU)
- Firmemente acoplado (MPI, CPU & GPU)
- Baixa prioridade
Manipule esses cenários configurando várias matrizes de nó e propriedades LSF. O CycleCloud pré-configura as matrizes de nós. A configuração adequada do LSF permite 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 recurso para executar um trabalho com a rede conectada placementGroup
InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Para GPUs, recomendamos o uso do suporte a LSF para sintaxe de GPU estendida. Normalmente, você adiciona esses atributos ao lsf.conf: LSB_GPU_NEW_SYNTAX=extend
e LSF_GPU_AUTOCONFIG=Y
. Com o suporte para sintaxe estendida habilitado, use o placementGroup junto com -gpu
para executar um trabalho firmemente 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 maneira paralela.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Execute um trabalho de intermitência grande em VMs de baixa prioridade.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Configurando 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)
Talvez seja possível deixar de fora cyclecloudlowprio
, mas isso proporciona uma verificação adicional de que os trabalhos estão a ser executados na locação 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.
Aqui está 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 nodearray. Esses atributos são considerados substituições da configuração do nodearray do CycleCloud. Os únicos atributos de modelo LSF necessários são:
templateId
nodeArray
Você pode omitir outros atributos ou eles podem não ser necessários. O CycleCloud infere estes atributos:
-
imageId
- Imagem de VM do Azure, por exemplo,"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"
- modificação na configuração de cluster do CycleCloud. -
subnetId
- Sub-rede do Azure, por exemplo,"resource_group/vnet/subnet"
- substituição para configuração de cluster do CycleCloud. -
vmType
- por exemplo,"Standard_HC44rs"
- substituir as definições padrão na configuração do cluster CycleCloud. -
keyPairLocation
- por exemplo,"~/.ssh/id_rsa_beta"
- substituir para a configuração de cluster do CycleCloud. - customScriptUri - Por exemplo,
http://10.1.0.4/user_data.sh
. Nenhum script, a menos que seja especificado. - userData - Por exemplo,
"nodearray_name=gpumpi;placement_group_id=gpumpipg1"
. Vazio, se não especificado.
Uma nota sobre PlacementGroups
Os datacenters do Azure têm capacidade de rede InfiniBand para cenários de HPC. Ao contrário da Ethernet normal, estas redes têm um alcance limitado. "PlacementGroups" descrevem as extensões da rede InfiniBand. Se as VMs residirem no mesmo grupo de posicionamento e forem tipos especiais de VM habilitados para InfiniBand, elas compartilharão uma rede InfiniBand.
Esses grupos de posicionamento requerem tratamento especial em LSF e CycleCloud.
Aqui está 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 ficheiro pode assumir qualquer valor, mas determina o nome do placementGroup no CycleCloud. Todos os nós emprestados do CycleCloud a partir deste modelo residem neste placementGroup e, se forem VMs habilitadas para InfiniBand, compartilham uma rede IB.
A propriedade placementGroupName
corresponde ao atributo host placementgroup
. Este jogo é intencional e necessário. Defina a propriedade no placement_group_id
para uso em user_data.sh na hora de início do host.
O atributo ondemandmpi
pode parecer supérfluo, mas é usado para impedir que este trabalho corresponda em hosts onde placementGroup
está indefinido.
Quando você usa grupos de posicionamento, o valor da propriedade determina o Azure.MaxScaleSetSize
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 a considera. Conjunto MaxNumber
do modelo LSF igual ao 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ó. O customScriptUri
não pode exigir autenticação porque um comando CURL anônimo baixa o script. Use este script para:
- Configure os daemons LSF do trabalhador, particularmente
LSF_LOCAL_RESOURCES
eLSF_MASTER_LIST
.- Se
LSF_TOP
estiver em um sistema de arquivos compartilhado, é útil fazer uma cópia local e definir aLSF_ENVDIR
variável antes delsf.conf
iniciar os daemons.
- Se
- Inicie os daemons lim, res, e sbatch.
O provedor CycleCloud define algumas variáveis de ambiente padrão.
- rc_account
- template_id
- nome do provedor
- nome do cluster
- cyclecloud_nodeid (defina esta variável como
instanceId
recurso)
Outras variáveis de dados do usuário que podem ser úteis no gerenciamento de recursos no provedor CycleCloud são:
- nodearray_name
- placement_group_id
Observação
Embora o Windows seja uma plataforma LSF oficialmente suportada, o CycleCloud não suporta a execução de LSF no Windows no momento.