Dataproc offre la possibilità 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 il machine learning e l'elaborazione di dati.
Per saperne di più su cosa puoi fare con le GPU e quali tipi di hardware GPU sono disponibili, consulta GPU su Compute Engine.
Prima di iniziare
- Le GPU richiedono driver e software speciali. Questi elementi sono
preinstallati nelle immagini
-mldi Dataproc (è consigliabile utilizzare le immagini-ml) e possono essere installati manualmente quando e se necessario. - Leggi i 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 come queste istanze funzionano in modo diverso dalle istanze non GPU.
- Controlla la pagina delle quote per il tuo progetto per assicurarti di avere una quota di GPU sufficiente (
NVIDIA_T4_GPUS,NVIDIA_P100_GPUS, oNVIDIA_V100_GPUS) disponibile nel tuo 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 colleghi le 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-rtx-pro-6000- NVIDIA® RTX® PRO 6000nvidia-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 a un cluster
Per collegare le GPU a un cluster Dataproc, quando crei il cluster
devi specificare un'immagine -ml (consigliata) o utilizzare
un'azione di inizializzazione per installare i driver GPU.
Gli esempi seguenti specificano l'immagine
2.3-ml-ubuntu durante la creazione di un cluster.
Google Cloud CLI
Per collegare le GPU ai nodi master e worker primari e secondari in un cluster Dataproc, crea il cluster utilizzando i gcloud dataproc clusters create
flag ‑‑master-accelerator,
‑‑worker-accelerator e
‑‑secondary-worker-accelerator. Questi flag accettano i
seguenti valori:
- 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 \ --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
Per collegare le GPU ai nodi master e worker primari e secondari in un cluster Dataproc, compila i campi
InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri e acceleratorCount come parte della richiesta API
cluster.create. Questi campi accettano i
seguenti valori:
- Il tipo di GPU da collegare a un nodo
- Il numero di GPU da collegare al nodo
Console
Per collegare le GPU ai nodi master e worker primari e secondari in un cluster Dataproc:
- Apri la pagina Dataproc Crea un cluster Dataproc su Compute Engine.
- Seleziona il riquadro Configura nodi.
- Nelle sezioni Nodo gestore, Nodi worker e Nodi worker secondari, in Piattaforma CPU e GPU > GPU, specifica 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.
In alternativa all'utilizzo dei driver GPU installati nelle immagini
-ml di Dataproc, puoi utilizzare le seguenti azioni di inizializzazione per installare i driver GPU
quando crei un cluster:
Verifica l'installazione dei driver GPU
Puoi verificare l'installazione dei driver GPU su un cluster con nettendoti utilizzando SSH al nodo master del cluster ed eseguendo il seguente comando:
nvidia-smi
Se il driver funziona correttamente, l'output visualizzerà la versione del driver e le statistiche della GPU (vedi Verifica l'installazione del driver della GPU).
Configurazione di Spark
Quando invii un job a Spark,
puoi utilizzare la configurazione di Spark spark.executorEnv
proprietà dell'ambiente di runtime
proprietà 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-shellper 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.