Associer des GPU aux clusters

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 ou NVIDIA_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® L4
  • nvidia-tesla-a100 : NVIDIA® Tesla® A100
  • nvidia-tesla-p100 - NVIDIA® Tesla® P100
  • nvidia-tesla-v100 - NVIDIA® Tesla® V100
  • nvidia-tesla-p4 - NVIDIA® Tesla® P4
  • nvidia-tesla-t4 - NVIDIA® Tesla® T4
  • nvidia-tesla-p100-vws - NVIDIA® Tesla® P100 Virtual Workstations
  • nvidia-tesla-p4-vws - NVIDIA® Tesla® P4 Virtual Workstations
  • nvidia-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 :

  1. Le type de GPU à associer à un nœud
  2. 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 :

  1. Exécutez l'un des exemples de machine learning Spark.
  2. 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!")

Étape suivante