Sdílet prostřednictvím


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:

  1. Úlohy s vysokou propustností (CPU & GPU)
  2. Úzce propojené (MPI, procesor & GPU)
  3. 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 placementgrouphostitele , 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:

  1. Konfigurace daemonů LSF pracovního procesu; zejména LSF_LOCAL_RESOURCES a LSF_MASTER_LIST
    • Pokud LSF_TOP je ve sdíleném systému souborů, může být užitečné vytvořit místní kopii lsf.conf a nastavit LSF_ENVDIR proměnnou před spuštěním démonů.
  2. 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.