Vous pouvez utiliser le mode Démarrage flexible du planificateur de charge de travail dynamique (DWS) pour améliorer la disponibilité des ressources GPU rares pour vos charges de travail par lot Managed Service for Apache Spark.
Présentation
Le programmeur de charge de travail dynamique est un programmeur qui tient compte de la capacité et qui gère les ressources de calcul rares à l'échelle mondiale. En mode Démarrage flexible, Managed Service pour Apache Spark peut mettre en file d'attente votre demande pendant une durée configurable lorsque les GPU ne sont pas immédiatement disponibles en raison de ruptures de stock régionales.
Le démarrage flexible est le comportement par défaut pour toutes les charges de travail compatibles avec les GPU envoyées à la version 3.0+ du runtime Spark du service géré pour Apache Spark. Lorsque les ressources ne sont pas disponibles, la requête est mise en file d'attente au lieu d'échouer avec une erreur de rupture de stock. Une fois la capacité obtenue, le programmeur de charge de travail dynamique provisionne l'intégralité du cluster "tout à la fois" avant le début de l'exécution. Pour en savoir plus, consultez Présentation du programmeur de charge de travail dynamique.
Avantages
- Disponibilité accrue : réduction considérable des échecs de tâches causés par des pénuries temporaires de capacité de GPU.
- Provisionnement atomique : le provisionnement des nœuds de calcul du cluster en tant qu'unité unique garantit l'intégrité du cluster et évite les scénarios dans lesquels seul un ensemble partiel de nœuds de calcul est créé.
- Fiabilité par défaut : amélioration de l'acquisition de ressources sans configuration manuelle des paramètres.
Exigences en matière de quota
Pour utiliser DWS Flex Start, votre projet doit disposer d'un quota suffisant :
- Quota de GPU préemptifs : DWS Flex Start utilise la version préemptive du pool de quotas de GPU plutôt que le pool standard (par exemple,
PREEMPTIBLE_NVIDIA_L4_GPUS). Pour en savoir plus, consultez Quotas de ressources Managed Service pour Apache Spark. - Quota de disques SSD locaux : lorsque vous utilisez la classe de stockage
performanceavec des machines accélérées par GPU, Managed Service pour Apache Spark provisionne des disques SSD locaux pour le shuffle à haute vitesse et le stockage temporaire. Votre projet doit disposer d'un quota de disques SSD locaux suffisant dans la région cible.
Configuration
Le démarrage flexible DWS est activé par défaut pour les charges de travail GPU sur la version du runtime 3.0+. Vous pouvez utiliser les propriétés Spark suivantes pour personnaliser le délai avant expiration ou désactiver la fonctionnalité :
| Propriété | Description | Valeurs | Par défaut |
|---|---|---|---|
spark.dataproc.[driver|executor].provisioning.mode |
Spécifie le modèle de provisionnement. Utilisez queue pour le démarrage flexible DWS (par défaut pour les GPU) ou default pour désactiver DWS et utiliser le provisionnement à la demande. |
queue, default |
queue (pour les GPU sur 3.0 et versions ultérieures) |
spark.dataproc.[driver|executor].provisioning.allocationTimeout |
Durée maximale pendant laquelle le pool de nœuds peut attendre dans la file d'attente de capacité. La valeur par défaut est de 1 heure (3600s) et la valeur maximale est de 2 heures (7200s). Remarque : Les valeurs doivent se terminer par le suffixe "s". |
durée en secondes (par exemple, 1800s) |
3600s |
Exemple : Charge de travail par lot de GPU avec DWS Flex Start
L'exemple suivant envoie un job par lot PySpark à l'aide de GPU NVIDIA L4. Avec DWS Flex Start activé par défaut, la commande définit un délai d'attente de 30 minutes (1800s) pour le pilote et les exécuteurs :
gcloud dataproc batches submit pyspark \
gs://my-bucket/path/to/your-script.py \
--project="PROJECT_ID" \
--region="REGION" \
--version="3.0" \
--properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"