Vous pouvez utiliser le mode de démarrage flexible du programmeur de charge de travail dynamique (DWS, Dynamic Workload Scheduler) pour améliorer la disponibilité des ressources GPU rares pour vos charges de travail par lot Managed Service pour 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 requête 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 à Managed Service pour Apache Spark Spark version 3.0 ou ultérieure. 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'ensemble du cluster "en une seule 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é GPU.
- Provisionnement atomique : provisionnement des nœuds de calcul du cluster en tant qu'unité unique, ce qui garantit l'intégrité du cluster et empêche 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 le démarrage flexible du programmeur de charge de travail dynamique, votre projet doit disposer d'un quota suffisant :
- Quota de GPU préemptifs : le démarrage flexible du programmeur de charge de travail dynamique consomme 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 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 SSD locaux pour le shuffle haute vitesse et le stockage temporaire. Votre projet doit disposer d'un quota de SSD locaux suffisant dans la région cible.
Configuration
Le démarrage flexible du programmeur de charge de travail dynamique est activé par défaut pour les charges de travail GPU sur la version d'exécution 3.0 ou ultérieure. 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 du programmeur de charge de travail dynamique (par défaut pour les GPU) ou default pour désactiver le programmeur de charge de travail dynamique et utiliser le provisionnement à la demande. |
queue, default |
queue (pour les GPU sur la version 3.0 ou ultérieure) |
spark.dataproc.[driver|executor].provisioning.allocationTimeout |
Durée maximale pendant laquelle le pool de nœuds doit attendre dans la file d'attente pour obtenir de la 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 GPU avec démarrage flexible du programmeur de charge de travail dynamique
L'exemple suivant envoie une job par lot PySpark à l'aide de GPU NVIDIA L4. Le démarrage flexible du programmeur de charge de travail dynamique étant activé par défaut, la commande définit un délai avant expiration de 30 minutes (1800s) pour le pilote et les exécutants :
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"