Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od LSF 10.1 FixPack 9 (10.1.0.9), Azure CycleCloud jest natywnym dostawcą łącznika zasobów. Firma IBM udostępnia dokumentację. Te zasoby zawierają instrukcje dotyczące konfigurowania węzła podstawowego LSF w celu nawiązania połączenia z usługą CycleCloud.
LSF to licencjonowany produkt IBM. Aby korzystać z rozwiązania LSF w usłudze CycleCloud, potrzebny jest plik uprawnień, który firma IBM udostępnia swoim klientom.
Uwaga
- LSF to licencjonowany produkt IBM. Aby korzystać z rozwiązania LSF w usłudze CycleCloud, potrzebny jest plik uprawnień, który firma IBM udostępnia swoim klientom. Dodaj pliki binarne LSF i plik licencyjny do
blobs/katalogu, aby użyć w pełni zautomatyzowanego klastra lub narzędzia do tworzenia obrazów maszyn wirtualnych w tym projekcie. - Aby użyć w pełni zautomatyzowanego klastra lub konstruktora obrazów VM w tym projekcie, dodaj pliki binarne LSF i plik uprawnień do
blobs/katalogu. - LSF domyślnie zależy od pakietu
ed, który nie jest instalowany w ostatnich wersjach obrazu HPC Azure. Jeśli wybrany obraz maszyny wirtualnej nie zawieraed, zalecamy użycie cloud-init do dodania pakietu. Na przykład w systemie RedHat Enterprise Linux, AlmaLinux lub CentOS można dodać następujące elementy do szablonu klastra (lub w graficznym interfejsie użytkownika usługi CycleCloud za pomocą okna dialogowego Edytowanie klastra):
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
Obsługiwane scenariusze typu klastra CycleCloud LSF
Rozwiązanie LSF może "pożyczyć" hosty z platformy Azure, aby uruchamiać zadania w sposób na żądanie, dodając i usuwając hosty zgodnie z potrzebami. Typ klastra LSF jest elastyczny do obsługi kilku scenariuszy w jednym klastrze:
- Zadania o wysokiej przepustowości (CPU i GPU)
- Ściśle powiązane (MPI, CPU i GPU)
- Niski priorytet
Obsłuż te scenariusze, konfigurując wiele macierzy węzłów i właściwości LSF. Usługa CycleCloud wstępnie konfiguruje tablice węzłów. Właściwa konfiguracja LSF umożliwia korzystanie z różnych scenariuszy zadań.
Podczas konfigurowania LSF zgodnie z tymi zaleceniami można użyć bsub wymagań dotyczących -R zasobów w następujący sposób:
Użyj zasobu placementGroup, aby uruchomić zadanie z siecią połączoną InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Dla GPU zalecamy korzystanie z obsługi LSF dla rozszerzonej składni GPU. Zazwyczaj te atrybuty są dodawane do pliku lsf.conf: LSB_GPU_NEW_SYNTAX=extend i LSF_GPU_AUTOCONFIG=Y. Dzięki obsłudze rozszerzonej składni można użyć elementu placementGroup wraz z -gpu do uruchomienia ściśle zintegrowanego zadania z akceleracją GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Uruchamianie zadań z obsługą procesora GPU w sposób równoległy.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Uruchamianie dużego zadania z dużą serią na maszynach wirtualnych o niskim priorytcie.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Konfigurowanie LSF dla typu klastra CycleCloud LSF
Aby włączyć te scenariusze, dodaj typy zasobów udostępnionych do folderu 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)
Możesz pominąć cyclecloudlowprio, ale zapewnia to dodatkową kontrolę, czy zadania są uruchamiane na zamierzonej maszynie wirtualnej w ramach dzierżawy.
Szablon dostawcy LSF dla usługi CycleCloud
Dostawca LSF CycleCloud uwidacznia konfiguracje za pośrednictwem szablonu dostawcy. Te konfiguracje są podzbiorem pełnej konfiguracji tablicy węzłów.
Oto przykładowy szablon LSF dla aplikacji 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"
}
Atrybuty szablonu LSF dla aplikacji CycleCloud
Szablon dostawcy LSF nie uwidacznia wszystkich atrybutów nodearray. Te atrybuty są uznawane za przesłonięcia konfiguracji nodearray CycleCloud. Jedynymi wymaganymi atrybutami szablonu LSF są:
templateIdnodeArray
Możesz pominąć inne atrybuty, ponieważ mogą w ogóle nie być konieczne. Usługa CycleCloud wywnioskuje następujące atrybuty:
-
imageId— Obraz maszyny wirtualnej platformy Azure; na przykład"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"— zastąpienie konfiguracji klastra CycleCloud. -
subnetId— podsieć platformy Azure, na przykład"resource_group/vnet/subnet"— zastąpienie konfiguracji klastra CycleCloud. -
vmType— na przykład"Standard_HC44rs"— nadpisanie konfiguracji klastra CycleCloud. -
keyPairLocation— na przykład"~/.ssh/id_rsa_beta"— nadpisanie konfiguracji klastra CycleCloud. - customScriptUri — na przykład
http://10.1.0.4/user_data.sh. Brak skryptu, jeśli nie zostanie podany. - userData — na przykład
"nodearray_name=gpumpi;placement_group_id=gpumpipg1". Pusty, jeśli nie zostanie określony.
Uwaga dotycząca grup umiejscowienia
Centra danych platformy Azure mają możliwość sieci InfiniBand dla scenariuszy HPC. W przeciwieństwie do normalnego ethernetu te sieci mają ograniczony zakres. "PlacementGroups" określają zakresy sieci InfiniBand. Jeśli maszyny wirtualne znajdują się w tej samej grupie umieszczania i są specjalnymi typami maszyn wirtualnych z obsługą rozwiązania InfiniBand, współużytkują sieć InfiniBand.
Te grupy rozmieszczania wymagają szczególnego traktowania w LSF i CycleCloud.
Oto przykładowy szablon LSF dla aplikacji 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"
}
Element placementGroupName w tym pliku może być dowolny, ale określa nazwę grupy rozmieszczenia w usłudze CycleCloud. Wszystkie węzły pożyczone z aplikacji CycleCloud z tego szablonu znajdują się w tej grupie umieszczania, a jeśli są to maszyny wirtualne z włączoną usługą InfiniBand, współużytkują sieć IB.
Właściwość placementGroupName pasuje do atrybutu placementgrouphosta . To dopasowanie jest zamierzone i konieczne. Ustaw właściwość placement_group_id w userData do użycia w user_data.sh przy uruchamianiu hosta.
Atrybut ondemandmpi może wydawać się zbędny, ale służy do zapobiegania dopasowania tego zadania na hostach, na których placementGroup jest niezdefiniowany.
W przypadku korzystania z grup umiejscowienia wartość Azure.MaxScaleSetSize właściwości określa maksymalny rozmiar grupy umiejscowienia.
Ta właściwość pośrednio ogranicza liczbę węzłów, które można dodać do grupy alokacyjnej, ale LSF nie bierze pod uwagę tego ograniczenia. Ustaw MaxNumber w szablonie LSF na wartość Azure.MaxScaleSetSize w szablonie klastra.
user_data.sh
Szablon zawiera dwa atrybuty do wykonywania skryptu user_data.sh : customScriptUri i userData. Te atrybuty to identyfikator URI i niestandardowe zmienne środowiskowe skryptu zarządzanego przez użytkownika, który jest uruchamiany podczas uruchamiania węzła. Ponieważ anonimowy CURL pobiera skrypt, nie można wymagać uwierzytelniania. Użyj tego skryptu, aby:
- Skonfiguruj demony LSF worker, szczególnie
LSF_LOCAL_RESOURCESiLSF_MASTER_LIST.- Jeśli
LSF_TOPznajduje się w udostępnionym systemie plików, warto utworzyć lokalną kopięlsf.confi ustawić zmiennąLSF_ENVDIRprzed uruchomieniem demonów.
- Jeśli
- Rozpocznij lim, res i sbatch demonów.
Dostawca CycleCloud ustawia niektóre domyślne zmienne środowiskowe.
- rc_account
- template_id
- nazwaDostawcy
- nazwa klastra
- cyclecloud_nodeid (ustaw tę zmienną na
instanceIdzasób)
Inne zmienne danych użytkownika, które mogą być przydatne w zarządzaniu zasobami u dostawcy CycleCloud, to:
- nodearray_name
- placement_group_id
Uwaga
Mimo że system Windows jest oficjalnie obsługiwaną platformą LSF, usługa CycleCloud nie obsługuje obecnie uruchamiania LSF w systemie Windows.