Dataproc offre la possibilità di collegare le GPU (Graphics Processing Unit) 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 ulteriori informazioni su cosa puoi fare con le GPU e sui tipi di hardware GPU disponibili, leggi l'articolo GPU su Compute Engine.
Prima di iniziare
- Le GPU richiedono driver e software speciali. Questi elementi non sono sono preinstallate sui cluster Dataproc.
- Consulta i prezzi delle GPU su Compute Engine per comprendere i costi per l'utilizzo delle GPU nelle tue istanze.
- Consulta le limitazioni per le istanze con GPU per scoprire come funzionano in modo diverso queste istanze rispetto alle istanze non GPU.
- Controlla la pagina delle quote per il tuo progetto per assicurarti di disporre di una quota GPU sufficiente (
NVIDIA_T4_GPUS
,NVIDIA_P100_GPUS
oNVIDIA_V100_GPUS
) nel progetto. Se le GPU non sono elencate nella pagina delle quote o hai bisogno di una quota GPU aggiuntiva, richiedi un aumento della quota.
Tipi di GPU
I nodi Dataproc supportano i seguenti tipi di GPU. Devi specificare Tipo di GPU durante il collegamento di GPU 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
Collegamento di GPU ai cluster
gcloud
Collega le GPU ai nodi worker principali e secondari in un cluster Dataproc quando
per creare il cluster utilizzando
‑‑master-accelerator
,
‑‑worker-accelerator
e
‑‑secondary-worker-accelerator
. Questi flag prendono
due valori seguenti:
- il tipo di GPU da collegare a un nodo
- il numero di GPU da collegare al nodo.
Il tipo di GPU è obbligatorio e 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 GPU nel cluster, devi installare i driver per GPU.
API REST
Collega le GPU ai nodi worker principali e secondari in un cluster Dataproc
compilando il
InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri
e acceleratorCount
nell'ambito
cluster.create
richiesta API.
Console
Fai clic su PIATTAFORMA CPU E GPU→GPU→AGGIUNGI GPU nelle sezioni master e nodi worker di Configura il riquadro Nodi in Crea un cluster nella console Google Cloud per specificare il numero di GPU e il tipo di GPU per i nodi.
Installazione dei driver per GPU
I driver GPU sono necessari per utilizzare le GPU collegate ai nodi Dataproc. Puoi installare i driver GPU seguendo le istruzioni per questa azione di inizializzazione riportate di seguito.
Verifica dell'installazione del driver GPU in corso...
Dopo aver installato il driver GPU sui nodi Dataproc, puoi verificare che il conducente stia funzionando correttamente. Accedi tramite SSH al nodo master del tuo cluster Dataproc ed esegui questo comando:
nvidia-smi
Se il driver funziona correttamente, nell'output verranno visualizzate le statistiche sulla versione del driver e sulla GPU (vedi Verifica dell'installazione del driver GPU).
Configurazione Spark
Quando invii un job a Spark,
puoi utilizzare la configurazione Spark spark.executorEnv
proprietà dell'ambiente di runtime
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
Job GPU di esempio
Puoi testare le GPU su Dataproc eseguendo uno dei job seguenti, che offrono vantaggi quando viene eseguita con le GPU:
- Esegui uno degli esempi di Spark ML.
- Esegui l'esempio seguente con
spark-shell
per eseguire il 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!")