Dataproc consente di collegare le unità di elaborazione grafica (GPU) ai nodi master e worker di Compute Engine in un cluster Dataproc. Puoi utilizzare queste GPU per accelerare carichi di lavoro specifici sulle tue istanze, come machine learning ed elaborazione di dati.
Per saperne di più su cosa puoi fare con le GPU e quali tipi di hardware GPU sono disponibili, leggi GPU su Compute Engine.
Prima di iniziare
- Le GPU richiedono driver e software speciali. Questi elementi non sono preinstallati sui cluster Dataproc.
- Leggi informazioni sui prezzi delle GPU su Compute Engine per comprendere il costo dell'utilizzo delle GPU nelle istanze.
- Leggi le limitazioni per le istanze con GPU per scoprire in che modo queste istanze funzionano in modo diverso rispetto alle istanze non GPU.
- Controlla la pagina Quote del tuo progetto per assicurarti di disporre di una quota GPU sufficiente (
NVIDIA_T4_GPUS
,NVIDIA_P100_GPUS
oNVIDIA_V100_GPUS
) disponibile nel progetto. Se le GPU non sono elencate nella pagina delle quote o se hai bisogno di una quota di GPU aggiuntiva, richiedi un aumento della quota.
Tipi di GPU
I nodi Dataproc supportano i seguenti tipi di GPU. Devi specificare il tipo di GPU quando le colleghi al 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
- Workstation virtuali NVIDIA® Tesla® P100nvidia-tesla-p4-vws
- Workstation virtuali NVIDIA® Tesla® P4nvidia-tesla-t4-vws
- Workstation virtuali NVIDIA® Tesla® T4
Collega le GPU ai cluster
gcloud
Collega le GPU ai nodi master e worker principali e secondari in un cluster Dataproc quando crei il cluster utilizzando i flag ‑‑master-accelerator
, ‑‑worker-accelerator
e ‑‑secondary-worker-accelerator
. Questi flag accettano
i seguenti due valori:
- il tipo di GPU da collegare a un nodo e
- il numero di GPU da collegare al nodo.
Il tipo di GPU è obbligatorio, mentre il numero di GPU è facoltativo (il valore predefinito è 1 GPU).
Esempio:
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
Per utilizzare le GPU nel cluster, devi installare i driver GPU.
API REST
Collega le GPU ai nodi master e worker principali e secondari in un cluster Dataproc
compilando i campi
InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri
e acceleratorCount
nell'ambito della richiesta API
cluster.create.
Console
Fai clic su PIATTAFORMA CPU E GPU→GPU→AGGIUNGI GPU nelle sezioni dei nodi master e worker del pannello Configura nodi nella pagina Crea un cluster della console Google Cloud per specificare il numero di GPU e il tipo di GPU per i nodi.
Installa i driver della GPU
I driver GPU sono necessari per utilizzare le GPU collegate ai nodi Dataproc. Per installare i driver della GPU, segui queste istruzioni:
Verifica l'installazione del driver della GPU
Dopo aver terminato l'installazione del driver della GPU sui nodi Dataproc, puoi verificare che il driver funzioni correttamente. Connettiti tramite SSH al nodo master del cluster Dataproc ed esegui questo comando:
nvidia-smi
Se il driver funziona correttamente, l'output mostrerà la versione del driver e le statistiche della GPU (vedi Verifica l'installazione del driver della GPU).
Configurazione Spark
Quando invii un job a Spark,
puoi utilizzare la proprietà ambiente di runtime
della configurazione Spark spark.executorEnv
con la variabile di ambiente LD_PRELOAD
per precaricare le librerie necessarie.
Esempio:
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
Esempio di job GPU
Puoi testare le GPU su Dataproc eseguendo uno dei seguenti job, che traggono vantaggio dall'esecuzione con le GPU:
- Esegui uno degli esempi di Spark ML.
- Esegui il seguente esempio con
spark-shell
per eseguire un calcolo matriciale:
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!")
Passaggi successivi
- Scopri come creare un'istanza Compute Engine con GPU collegate.
- Scopri di più sui tipi di macchina GPU.