IBM Spectrum LSF
Начиная с версии LSF 10.1 FixPack 9 (10.1.0.9) Azure CycleCloud является собственным поставщиком для Соединителя ресурсов. IBM предоставляет документацию. Эти ресурсы содержат инструкции по настройке главного узла LSF для подключения к CycleCloud.
LSF является лицензированным продуктом IBM; Для использования LSF в CycleCloud требуется файл прав, который IBM предоставляет своим клиентам.
Примечание
LSF является лицензированным продуктом IBM; для использования LSF в CycleCloud требуется файл прав, который IBM предоставляет своим клиентам. Двоичные файлы LSF и файл прав должны быть добавлены в каталог больших двоичных объектов/ для использования полностью автоматизированного кластера или конструктора образов виртуальных машин в этом проекте. Чтобы использовать полностью автоматизированный кластер или конструктор образов виртуальных машин в этом проекте, необходимо добавить двоичные файлы LSF и файл прав в каталог больших двоичных объектов или .
Поддерживаемые сценарии типа кластера CycleCloud LSF
LSF может заимствовать узлы из Azure для выполнения заданий по запросу, добавляя и удаляя узлы по мере необходимости. Тип кластера LSF является гибким для обработки нескольких сценариев в одном кластере:
- Задания с высокой пропускной способностью (ЦП & GPU)
- Тесно связанная (MPI, ЦП & GPU)
- Низкий приоритет
Эти сценарии обрабатываются конфигурацией нескольких узлов и свойств LSF в согласованном режиме. Узлы предварительно настроены в CycleCloud. Правильная конфигурация LSF позволяет использовать различные сценарии заданий.
Если LSF настроен в соответствии с этими рекомендациями, bsub
требования к -R
ресурсам можно использовать следующим образом:
Используйте ресурс placementGroup для выполнения задания с подключенной сетью InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Для GPU рекомендуется использовать поддержку LSF для расширенного синтаксиса GPU. Обычно требуется добавить в lsf.conf два атрибута: LSB_GPU_NEW_SYNTAX=extend
и LSF_GPU_AUTOCONFIG=Y
. Если включена поддержка расширенного синтаксиса, используйте placementGroup вместе с -gpu
для выполнения задания, тесно связанного с ускорением GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Параллельное выполнение заданий с поддержкой GPU.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Выполнение большого задания ускорения на виртуальных машинах с низким уровнем доступности.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Настройка LSF для типа кластера CycleCloud LSF
Чтобы включить эти сценарии, как описано, добавьте несколько типов общих ресурсов в 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)
Возможно, это cyclecloudlowprio
можно исключить, но он предоставляет дополнительную проверка, что задания выполняются в предполагаемом клиенте виртуальной машины.
Шаблон поставщика LSF для CycleCloud
Поставщик LSF CycleCloud предоставляет ряд конфигураций с помощью шаблона поставщика. Эти конфигурации являются подмножеством полной конфигурации узлаarray.
Ниже приведен пример шаблона LSF для Cyclecloud из 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"
}
Атрибуты шаблона LSF для CycleCloud
Шаблон поставщика LSF предоставляет не все атрибуты nodearray. Их можно считать переопределениями конфигурации узла CycleCloudarray. Единственный обязательный шаблон LSF:
- templateId
- nodeArray
Другие выводятся из конфигурации CycleCloud, могут быть опущены или вообще не нужны.
- imageId — образ виртуальной машины Azure, например
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"
переопределение для конфигурации кластера CycleCloud. - subnetId — подсеть Azure, например
"resource_group/vnet/subnet"
переопределение для конфигурации кластера CycleCloud. - vmType — например,
"Standard_HC44rs"
переопределение для конфигурации кластера CycleCloud. - keyPairLocation — например,
"~/.ssh/id_rsa_beta"
переопределение для конфигурации кластера CycleCloud. - customScriptUri — например, "http://10.1.0.4/user_data.sh", скрипт не указан.
- userData — например,
"nodearray_name=gpumpi;placement_group_id=gpumpipg1"
пусто, если не указано.
Примечание о PlacementGroups
Центры обработки данных Azure имеют возможности сети Infiniband для сценариев HPC. Эти сети, в отличие от обычного Ethernet, имеют ограниченный диапазон. Сетевые экстенты Infiniband описаны в разделе PlacementGroups. Если виртуальные машины находятся в одной группе размещения и являются специальными типами виртуальных машин с поддержкой Infiniband, они будут совместно использовать сеть Infiniband.
Эти группы размещения требуют специальной обработки в LSF и CycleCloud.
Ниже приведен пример шаблона LSF для Cyclecloud из 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"
}
В placementGroupName
этом файле может быть любой объект, но будет определять имя placementGroup в CycleCloud. Все узлы, заимствованные из CycleCloud из этого шаблона, будут находиться в этой группе размещения и, если это виртуальные машины с поддержкой Infiniband, будут совместно использовать сеть IB.
Обратите внимание, что placementGroupName
соответствует атрибуту placementgroup
host , это намеренно и необходимо. Кроме того, placement_group_id
параметр задается для userData
использования в user_data.sh во время запуска узла.
Атрибут ondemandmpi
может показаться лишним, но используется для предотвращения сопоставления этого задания на узлах, где placementGroup
не определен.
Часто при использовании групп размещения максимальный размер группы размещения определяется свойством Azure.MaxScaleSetSize
. Это свойство косвенно ограничивает количество узлов, которые могут быть добавлены в группу размещения, но не учитывается LSF. Поэтому важно задать MaxNumber
шаблон LSF, равный Azure.MaxScaleSetSize
в шаблоне кластера.
user_data.sh
Шаблон предоставляет атрибуты для выполнения скрипта user_data.sh ; customScriptUri
и userData
. Это URI и пользовательские переменные среды управляемого пользователем скрипта, выполняемого при запуске узла. Этот скрипт загружается с помощью команды CURL, поэтому customScriptUri
проверка подлинности завершается ошибкой. Используйте этот скрипт для выполнения указанных ниже действий.
- Настройка управляющих программ LSF рабочей роли; в частности
LSF_LOCAL_RESOURCES
, иLSF_MASTER_LIST
- Если
LSF_TOP
находится в общей файловой системе, может быть полезно создать локальную копиюlsf.conf
и задатьLSF_ENVDIR
переменную перед запуском управляющих программ.
- Если
- Запустите управляющие программы lim, res и sbatch.
Поставщик CycleCloud задает некоторые переменные среды по умолчанию.
- rc_account
- template_id
- providerName
- clustername
- cyclecloud_nodeid (рекомендуется задать для этого
instanceId
ресурса)
Другие пользовательские переменные данных, которые могут быть полезны при управлении ресурсами в поставщике CycleCloud:
- nodearray_name
- placement_group_id
Примечание
Хотя Windows является официально поддерживаемой платформой LSF, CycleCloud в настоящее время не поддерживает запуск LSF в Windows.