Dataproc offre la possibilité d'associer des processeurs graphiques (GPU) aux nœuds maîtres et aux nœuds de calcul Compute Engine d'un cluster Dataproc. Vous pouvez utiliser ces GPU pour accélérer des charges de travail spécifiques sur vos instances, telles que le machine learning et le traitement de données.
Pour plus d'informations sur ce que vous pouvez faire avec les GPU et sur les types de processeurs GPU disponibles, consultez la page GPU sur Compute Engine.
.Avant de commencer
- Les GPU nécessitent des pilotes et des logiciels spécifiques. Ces éléments sont préinstallés dans les images Dataproc
-ml(il est recommandé d'utiliser les images-ml). Ils peuvent être installés manuellement si nécessaire. - Consultez la section sur la tarification des GPU dans Compute Engine pour mieux comprendre le coût d'utilisation des GPU sur vos instances.
- Consultez la section sur les restrictions imposées aux instances utilisant des GPU pour comprendre les spécificités de ces instances par rapport à celles sans GPU.
- Consultez la page des quotas de votre projet pour vous assurer que vous disposez d'un quota de GPU suffisant (
NVIDIA_T4_GPUS,NVIDIA_P100_GPUSouNVIDIA_V100_GPUS). Si les GPU ne figurent pas sur la page "Quotas" ou que vous avez besoin d'un quota de GPU supplémentaire, demandez une augmentation de quota.
Types de GPU
Les nœuds Dataproc sont compatibles avec les types de GPU suivants. Vous devez spécifier le type de GPU lorsque vous l'associez à un cluster Dataproc.
nvidia-tesla-l4- NVIDIA® Tesla® L4nvidia-tesla-a100- NVIDIA® Tesla® A100nvidia-tesla-p100- NVIDIA® Tesla® P100nvidia-tesla-v100- NVIDIA® Tesla® V100nvidia-tesla-p4- NVIDIA® Tesla® P4nvidia-tesla-t4- NVIDIA® Tesla® T4nvidia-tesla-p100-vws- NVIDIA® Tesla® P100 Virtual Workstationsnvidia-tesla-p4-vws- NVIDIA® Tesla® P4 Virtual Workstationsnvidia-tesla-t4-vws- NVIDIA® Tesla® T4 Virtual Workstations
Associer des GPU à un cluster
Pour associer des GPU à un cluster Dataproc, vous devez, lorsque vous créez le cluster, spécifier une image -ml (recommandé) ou utiliser une action d'initialisation pour installer des pilotes de GPU.
Les exemples suivants spécifient l'image 2.3-ml-ubuntu lors de la création d'un cluster.
Google Cloud CLI
Pour associer des GPU aux nœuds maîtres, principaux et secondaires dans un cluster Dataproc, créez le cluster à l'aide des options gcloud dataproc clusters create
‑‑master-accelerator, ‑‑worker-accelerator et ‑‑secondary-worker-accelerator. Ces indicateurs comprennent les valeurs suivantes :
- Le type de GPU à associer à un nœud
- Nombre de GPU à associer au nœud
Le type de GPU est obligatoire, tandis que le nombre de GPU est facultatif (la valeur par défaut correspond à 1 GPU).
Exemple :
gcloud dataproc clusters create cluster-name \ --image-version=2.3-ml-ubuntu \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
API REST
Pour associer des GPU aux nœuds maîtres, principaux et aux nœuds de calcul secondaires d'un cluster Dataproc, remplissez les champs InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri et acceleratorCount dans la requête API cluster.create. Ces champs acceptent les valeurs suivantes :
- Type de GPU à associer à un nœud
- Nombre de GPU à associer au nœud
Console
Pour associer des GPU aux nœuds maîtres, principaux et secondaires d'un cluster Dataproc, procédez comme suit :
- Ouvrez la page Dataproc Créer un cluster Dataproc sur Compute Engine.
- Sélectionnez le panneau Configurer les nœuds.
- Dans les sections Nœud du gestionnaire, Nœuds de calcul et Nœuds de calcul secondaires, sous Plate-forme du processeur et GPU > GPU, spécifiez le nombre et le type de GPU pour les nœuds.
Installer des pilotes de GPU
Pour utiliser les GPU associés aux nœuds Dataproc, vous avez besoin de pilotes de GPU.
Au lieu d'utiliser les pilotes de GPU installés dans les images Dataproc -ml, vous pouvez utiliser les actions d'initialisation suivantes pour installer les pilotes de GPU lorsque vous créez un cluster :
Vérifier l'installation du pilote de GPU
Vous pouvez vérifier l'installation du pilote GPU sur un cluster en vous connectant à l'aide de SSH au nœud maître du cluster, puis en exécutant la commande suivante :
nvidia-smi
Si le pilote fonctionne correctement, le résultat affiche la version du pilote et les statistiques du GPU (consultez la section Vérifier l'installation du pilote de GPU).
Configurer Spark
Lorsque vous envoyez une tâche à Spark, vous pouvez utiliser la propriété environnement d'exécution de la configuration Spark spark.executorEnv avec la variable d'environnement LD_PRELOAD pour précharger les bibliothèques nécessaires.
Exemple :
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
Exemple de tâche GPU
Vous pouvez tester les GPU sur Dataproc en exécutant l'une des tâches suivantes, ce qui est particulièrement utile avec les GPU :
- Exécutez l'un des exemples de machine learning Spark.
- Exécutez l'exemple suivant avec
spark-shellpour exécuter un calcul matriciel :
import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.linalg.distributed._
import java.util.Random
def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = {
val range = sc.parallelize(1 to nBlocks)
val indices = range.cartesian(range)
return new BlockMatrix(
indices.map(
ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))),
rowsPerBlock, rowsPerBlock, 0, 0)
}
val N = 1024 * 4
val n = 2
val mat1 = makeRandomSquareBlockMatrix(N, n)
val mat2 = makeRandomSquareBlockMatrix(N, n)
val mat3 = mat1.multiply(mat2)
mat3.blocks.persist.count
println("Processing complete!")
Étape suivante
- Découvrez comment créer une instance Compute Engine avec des GPU associés.
- En savoir plus sur les types de machines GPU