IBM Spectrum LSF
Počínaje verzí LSF 10.1 FixPack 9 (10.1.0.9) je Azure CycleCloud nativním poskytovatelem konektoru prostředků. IBM poskytuje dokumentaci. Tyto zdroje informací poskytují pokyny ke konfiguraci hlavního uzlu LSF pro připojení k CycleCloudu.
LSF je produkt licencovaný společností IBM; použití LSF v CycleCloudu vyžaduje soubor nároků, který ibm poskytuje svým zákazníkům.
Poznámka
LSF je produkt licencovaný společností IBM; použití LSF v CycleCloudu vyžaduje soubor nároků, který IBM poskytuje svým zákazníkům. Binární soubory LSF a soubor nároků musí být přidány do objektů blob nebo adresáře, aby se v tomto projektu používal plně automatizovaný cluster nebo tvůrce image virtuálního počítače. Pokud chcete použít plně automatizovaný cluster nebo tvůrce image virtuálních počítačů v tomto projektu, musíte do objektu blob nebo adresáře přidat binární soubory LSF a soubor nároků.
Podporované scénáře typu clusteru CycleCloud LSF
LSF si může vypůjčit hostitele z Azure, aby mohli spouštět úlohy na vyžádání a podle potřeby přidávat a odebírat hostitele. Typ clusteru LSF je flexibilní pro zpracování několika scénářů v jednom clusteru:
- Úlohy s vysokou propustností (CPU & GPU)
- Úzce propojené (MPI, procesor & GPU)
- Nízká priorita
Tyto scénáře jsou zpracovány konfigurací více nodearrays a LSF vlastnosti v concert. Uzlyarray jsou předem nakonfigurované v CycleCloudu. Správná konfigurace LSF umožňuje různé scénáře úloh.
Při konfiguraci LSF v souladu s těmito doporučeními bsub
je možné požadavky na -R
prostředky použít následujícím způsobem:
Pomocí prostředku placementGroup spusťte úlohu s připojenou sítí InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
U gpu GPU doporučujeme použít podporu LSF pro rozšířenou syntaxi GPU. Obvykle vyžaduje přidání dvou atributů do souboru lsf.conf: LSB_GPU_NEW_SYNTAX=extend
a LSF_GPU_AUTOCONFIG=Y
. Pokud je povolená podpora rozšířené syntaxe, použijte společně s -gpu
nástrojem placementGroup ke spuštění úzce propojené úlohy s akcelerací GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Paralelní spouštění úloh s podporou GPU
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Na virtuálních počítačích s nízkou úrovní zabezpečení spusťte velkou úlohu shlukového zatížení.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Konfigurace LSF pro typ clusteru CycleCloud LSF
Pokud chcete tyto scénáře povolit podle popisu, přidejte do souboru lsb.shared několik typů sdílených prostředků.
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)
Je možné, že cyclecloudlowprio
je možné vynechat, ale poskytuje další kontrolu, jestli jsou úlohy spuštěné na zamýšleném tenantovi virtuálních počítačů.
Šablona zprostředkovatele LSF pro CycleCloud
Poskytovatel LSF CycleCloud zveřejňuje řadu konfigurací prostřednictvím šablony zprostředkovatele. Tyto konfigurace jsou podmnožinou úplné konfigurace nodearray.
Tady je příklad šablony LSF pro Cyclecloud z 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"
}
Atributy šablonY LSF pro CycleCloud
Šablona zprostředkovatele LSF neznačí všechny atributy nodearray. Ty lze považovat za přepsání konfigurace nodearray CycleCloud. Jedinou požadovanou šablonou LSF jsou:
- id šablony
- nodeArray
Jiné se odvozují z konfigurace CycleCloudu, je možné je vynechat nebo nejsou vůbec nutné.
- imageId – image virtuálního počítače Azure, např.
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"
přepsání konfigurace clusteru CycleCloud. - subnetId – podsíť Azure, např.
"resource_group/vnet/subnet"
přepsání konfigurace clusteru CycleCloud. - vmType – např.
"Standard_HC44rs"
přepsání konfigurace clusteru CycleCloud. - keyPairLocation - např.
"~/.ssh/id_rsa_beta"
přepsání konfigurace clusteru CycleCloud. - customScriptUri – např. "http://10.1.0.4/user_data.sh", není-li zadán žádný skript.
- userData – např.
"nodearray_name=gpumpi;placement_group_id=gpumpipg1"
prázdné, pokud není zadáno.
Poznámka k UmístěníGroups
Datacentra Azure mají pro scénáře prostředí HPC možnost sítě Infiniband. Tyto sítě mají na rozdíl od normálního ethernetu omezený rozsah. Rozsahy sítě Infiniband popisuje "PlacementGroups". Pokud se virtuální počítače nacházejí ve stejné skupině umístění a jsou speciálními typy virtuálních počítačů s podporou Infiniband, budou sdílet síť Infiniband.
Tyto skupiny umístění vyžadují zvláštní zacházení v LSF a CycleCloudu.
Tady je příklad šablony LSF pro Cyclecloud z 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"
}
V placementGroupName
tomto souboru může být cokoli, ale určuje název umístěníGroup v CycleCloudu. Všechny uzly vypůjčené z CycleCloudu z této šablony se budou nacházet v této skupině umístěníGroup, a pokud se jedná o virtuální počítače s podporou Infiniband, budou sdílet síť IB.
Všimněte si, že placementGroupName
odpovídá atributu placementgroup
hostitele , což je záměrné a nezbytné. Také že placement_group_id
je v souboru nastavená userData
možnost pro použití v user_data.sh při spuštění hostitele.
Atribut ondemandmpi
se může zdát nadbytečný, ale slouží k zabránění tomu, aby se tato úloha shodovala na hostitelích, kde placementGroup
není definován.
Při použití skupin umístění často platí maximální velikost skupiny umístění určená Azure.MaxScaleSetSize
vlastností. Tato vlastnost nepřímo omezuje počet uzlů, které mohou být přidány do skupiny umístění, ale LSF ji nevažuje. Proto je důležité nastavit MaxNumber
šablonu LSF jako Azure.MaxScaleSetSize
v šabloně clusteru.
user_data.sh
Šablona poskytuje atributy pro spuštění skriptu user_data.sh ; customScriptUri
a userData
. Jedná se o identifikátor URI a vlastní proměnné prostředí skriptu spravovaného uživatelem, který běží při spuštění uzlu. Tento skript se stáhne pomocí příkazu curl annonymózní, takže customScriptUri
vyžadování ověření se nezdaří. Pomocí tohoto skriptu můžete:
- Konfigurace daemonů LSF pracovního procesu; zejména
LSF_LOCAL_RESOURCES
aLSF_MASTER_LIST
- Pokud
LSF_TOP
je ve sdíleném systému souborů, může být užitečné vytvořit místní kopiilsf.conf
a nastavitLSF_ENVDIR
proměnnou před spuštěním démonů.
- Pokud
- Spusťte démony lim, res a sbatch.
Poskytovatel CycleCloud nastavil několik výchozích proměnných prostředí.
- rc_account
- template_id
- Providername
- název clusteru
- cyclecloud_nodeid (doporučuje se nastavit na
instanceId
prostředek)
Další proměnné uživatelských dat, které můžou být užitečné při správě prostředků v poskytovateli CycleCloud, jsou:
- nodearray_name
- placement_group_id
Poznámka
I když je Windows oficiálně podporovanou platformou LSF, CycleCloud v tuto chvíli nepodporuje spouštění LSF ve Windows.