Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À compter de LSF 10.1 FixPack 9 (10.1.0.9), Azure CycleCloud est un fournisseur natif pour Resource Connector. IBM fournit de la documentation. Ces ressources fournissent des instructions sur la configuration du nœud principal LSF pour se connecter à CycleCloud.
LSF est un produit sous licence IBM. Pour utiliser LSF dans CycleCloud, vous avez besoin d’un fichier de droits d’utilisation fourni par IBM à ses clients.
Note
- LSF est un produit sous licence IBM. Pour utiliser LSF dans CycleCloud, vous avez besoin d’un fichier de droits d’utilisation fourni par IBM à ses clients. Ajoutez les fichiers binaires et droits LSF au
blobs/répertoire pour utiliser le cluster entièrement automatisé ou le générateur d’images de machine virtuelle dans ce projet. - Pour utiliser le cluster entièrement automatisé ou le générateur d’images de machine virtuelle dans ce projet, ajoutez les fichiers binaires et droits LSF au
blobs/répertoire. - LSF dépend du
edpackage qui n’est pas installé dans les versions récentes d’Azure HPC Image par défaut. Si votre image de machine virtuelle sélectionnée n’inclutedpas, nous vous suggérons d’utiliser cloud-init pour ajouter le package. Par exemple, sur RedHat Enterprise Linux, AlmaLinux ou CentOS, vous pouvez ajouter les éléments suivants à votre modèle de cluster (ou dans l’interface graphique graphique CycleCloud via la boîte de dialogue Modification du cluster) :
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
Scénarios pris en charge du type de cluster LSF CycleCloud
LSF peut « emprunter » des hôtes d’Azure pour exécuter des travaux à la demande, en ajoutant et en supprimant des hôtes en fonction des besoins. Le type de cluster LSF est flexible pour gérer plusieurs scénarios dans un seul cluster :
- Travaux à débit élevé (PROCESSEUR et GPU)
- Étroitement couplé (MPI, PROCESSEUR et GPU)
- Priorité faible
Gérez ces scénarios en configurant plusieurs ensembles de nœuds et les propriétés du logiciel LSF. CycleCloud préconfigure les tableaux de nœuds. La configuration appropriée de LSF permet les différents scénarios de travail.
Lorsque vous configurez LSF conformément à ces recommandations, vous pouvez utiliser bsub les exigences -R de ressources de la manière suivante :
Utilisez la placementGroup ressource pour exécuter un travail avec un réseau connecté InfiniBand.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Pour les GPU, nous vous recommandons d’utiliser la prise en charge LSF pour la syntaxe GPU étendue. En règle générale, vous ajoutez ces attributs à lsf.conf : LSB_GPU_NEW_SYNTAX=extend et LSF_GPU_AUTOCONFIG=Y. Avec la prise en charge de la syntaxe étendue activée, utilisez le placementGroup ainsi que -gpu pour exécuter une tâche étroitement couplée avec l'accélération GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Exécutez des travaux avec GPU de manière parallèle.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Exécutez un travail en rafale volumineux sur des machines virtuelles de faible priorité.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
Configuration de LSF pour le type de cluster LSF CycleCloud
Pour activer ces scénarios, ajoutez des types de ressources partagés à 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)
Vous pouvez peut-être quitter cyclecloudlowprio, mais il fournit un contrôle supplémentaire que les travaux s’exécutent sur leur location de machine virtuelle prévue.
Modèle de fournisseur LSF pour CycleCloud
Le fournisseur LSF CycleCloud expose les configurations via le modèle de fournisseur. Ces configurations sont un sous-ensemble de la configuration complète du nodearray.
Voici un exemple de modèle LSF pour Cyclecloud à partir 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"
}
Attributs de modèle LSF pour CycleCloud
Le modèle de fournisseur LSF n’expose pas tous les attributs nodearray. Ces attributs sont considérés comme des surcharges de la configuration nodearray CycleCloud. Les seuls attributs de modèle LSF requis sont les suivants :
templateIdnodeArray
Vous pouvez omettre d’autres attributs ou ils peuvent ne pas être nécessaires du tout. CycleCloud déduit ces attributs :
-
imageId- Image de machine virtuelle Azure, par exemple,"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"- surcharge de la configuration du cluster CycleCloud. -
subnetId- Sous-réseau Azure, par exemple,"resource_group/vnet/subnet"- surcharge de la configuration du cluster CycleCloud. -
vmType- par exemple,"Standard_HC44rs"- paramètre de substitution de la configuration de cluster de CycleCloud. -
keyPairLocation- par exemple,"~/.ssh/id_rsa_beta"- paramètre de substitution de la configuration de cluster de CycleCloud. - customScriptUri - Par exemple,
http://10.1.0.4/user_data.sh. Aucun script s’il n’est spécifié. - userData - Par exemple,
"nodearray_name=gpumpi;placement_group_id=gpumpipg1". Vide s’il n’est pas spécifié.
Remarque sur les groupes de placement
Les centres de données Azure disposent d’une fonctionnalité réseau InfiniBand pour les scénarios HPC. Contrairement à l’Ethernet normal, ces réseaux ont une étendue limitée. « PlacementGroups » décrivent les étendues réseau InfiniBand. Si les machines virtuelles résident dans le même groupe de placement et sont des types de machines virtuelles infiniBand spéciaux, elles partagent un réseau InfiniBand.
Ces groupes de placement nécessitent une gestion spéciale dans LSF et CycleCloud.
Voici un exemple de modèle LSF pour CycleCloud à partir 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"
}
placementGroupName dans ce fichier peut être n'importe quoi mais détermine le nom du placementGroup dans CycleCloud. Tous les nœuds empruntés à CycleCloud à partir de ce modèle résident dans ce groupe de placement et, s’ils sont des machines virtuelles compatibles InfiniBand, partagent un réseau IB.
La propriété placementGroupName correspond à l’attribut placementgroup hôte. Cette correspondance est intentionnelle et nécessaire. Définissez la propriété placement_group_id dans userData pour utilisation dans user_data.sh au démarrage de l'hôte.
L’attribut ondemandmpi peut sembler superflu, mais il est utilisé pour empêcher cette opération de correspondre sur les hôtes quand placementGroup n’est pas défini.
Lorsque vous utilisez des groupes de placement, la valeur de la Azure.MaxScaleSetSize propriété détermine la taille maximale du groupe de placement.
Cette propriété limite indirectement le nombre de nœuds que vous pouvez ajouter à un groupe de placement, mais LSF ne le considère pas. Réglez MaxNumber du modèle LSF pour qu'il soit égal à Azure.MaxScaleSetSize dans le modèle de cluster.
user_data.sh
Le modèle fournit deux attributs pour l’exécution d’un script user_data.sh : customScriptUri et userData. Ces attributs sont l’URI et les variables d’environnement personnalisées du script géré par l’utilisateur qui s’exécute au démarrage du nœud. Impossible customScriptUri d’exiger l’authentification, car une commande CURL anonyme télécharge le script. Utilisez ce script pour :
- Configurez les daemons LSF worker, en particulier
LSF_LOCAL_RESOURCESetLSF_MASTER_LIST.- Si
LSF_TOPse trouve sur un système de fichiers partagé, il est utile d’effectuer une copie locale delsf.confet de définir la variableLSF_ENVDIRavant de démarrer les démons.
- Si
- Démarrez les daemons lim, res et sbatch.
Le fournisseur CycleCloud définit certaines variables d’environnement par défaut.
- rc_account
- template_id
- providerName
- clustername
- cyclecloud_nodeid (définissez cette variable sur
instanceIdressource)
Les autres variables de données utilisateur qui peuvent être utiles dans la gestion des ressources dans le fournisseur CycleCloud sont les suivantes :
- nodearray_name
- placement_group_id
Note
Même si Windows est une plateforme LSF officiellement prise en charge, CycleCloud ne prend pas en charge l’exécution de LSF sur Windows pour l’instant.