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 ne sont pas pré-installés sur les clusters Dataproc.
- 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_GPUS
ouNVIDIA_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 aux clusters
gcloud
Associez des GPU aux nœuds maîtres, principaux et secondaires dans un cluster Dataproc au moment de la création du cluster à l'aide des options ‑‑master-accelerator
, ‑‑worker-accelerator
et ‑‑secondary-worker-accelerator
. Ces indicateurs comprennent les deux valeurs suivantes :
- Le type de GPU à associer à un nœud
- Le 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 \ --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
Pour utiliser des GPU dans votre cluster, vous devez installer des pilotes de GPU.
API REST
Associez des GPU aux nœuds maîtres, principaux et aux nœuds de calcul secondaires d'un cluster Dataproc en remplissant les champs InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri
et acceleratorCount
dans la requête API cluster.create.
Console
Pour spécifier le nombre de GPU et le type de GPU des nœuds, cliquez sur "PLATE-FORME PROCESSEUR", puis "GPU→GPU→AJOUTER UN GPU" dans les sections "Maîtres et nœuds de calcul" du panneau "Configurer les nœuds" dans la page Créer un cluster de la console Google Cloud.
Installer des pilotes de GPU
Pour utiliser les GPU associés aux nœuds Dataproc, vous avez besoin de pilotes de GPU. Vous pouvez installer des pilotes GPU en suivant les instructions pour cette action d'initialisation.
Vérifier l'installation du pilote de GPU
Une fois que vous avez terminé d'installer le pilote GPU sur vos nœuds Dataproc, vous pouvez vérifier qu'il fonctionne correctement. Connectez-vous en SSH au nœud maître de votre cluster Dataproc, puis exécutez 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é propriété d'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-shell
pour 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!")