Questa storia fornisce una guida su come costruire un sistema multi-GPU per il deep learning e, si spera, farti risparmiare tempo di ricerca e sperimentazione.
Costruisci un sistema multi-GPU per l’addestramento di modelli di visione artificiale e LLM senza spendere una fortuna! 🏦
Cominciamo con la parte divertente (e costosa 💸💸💸)!
Le principali considerazioni quando si acquista una GPU sono:
- memoria (VRAM)
- prestazioni (core tensoriali, velocità di clock)
- larghezza della fessura
- potenza (TDP)
Memoria
Per le attività di deep learning al giorno d’oggi abbiamo bisogno di moltissima memoria. Gli LLM sono enormi anche per la messa a punto e le attività di visione artificiale possono richiedere un uso intensivo della memoria, soprattutto con le reti 3D. Naturalmente l’aspetto più importante da cercare è la GPU VRAM. Per i LLM consiglio almeno 24 GB di memoria e per le attività di visione artificiale non scenderei sotto i 12 GB.
Prestazione
Il secondo criterio è la prestazione che può essere stimata con FLOPS (Operazioni in virgola mobile al secondo):
Il numero cruciale in passato era il numero di core CUDA nel circuito. Tuttavia, con l’emergere del deep learning, NVIDIA ha introdotto soluzioni specializzate nuclei tensoriali che può eseguire molte più operazioni FMA (Fused Multiply-Add) per clock. Questi sono già supportati dai principali framework di deep learning e sono ciò che dovresti cercare nel 2023.
Di seguito puoi trovare un grafico delle prestazioni grezze delle GPU raggruppate per memoria che ho compilato dopo un bel po’ di lavoro manuale:
Tieni presente che devi esserlo molto attento quando si confrontano le prestazioni di diverse GPU. I nuclei tensoriali di diverse generazioni/architetture non sono paragonabili. Ad esempio, l’A100 esegue 256 operazioni FMA/clock FP16 mentre il V100 “solo” 64. Inoltre, le architetture più vecchie (Turing, Volta) non supportano le operazioni tensore a 32 bit. Ciò che rende il confronto più difficile è che NVIDIA non sempre riporta l’FMA, nemmeno nei white paper, e GPU della stessa architettura possono avere FMA diversi. Continuavo a sbattere la testa Questo 😵💫. Si noti inoltre che NVIDIA spesso pubblicizza i FLOPS tensoriali con sparsità, che è una funzionalità utilizzabile solo in fase di inferenza.
Per identificare la migliore GPU rispetto al prezzo, ho raccolto i prezzi di eBay utilizzando l’API di eBay e ho calcolato le relative prestazioni per dollaro (USD) per le nuove schede:
Ho fatto lo stesso per le carte usate ma visto che la classifica non cambia molto tralascio la trama.
Per selezionare la migliore GPU per il tuo budget, puoi scegliere una delle migliori GPU per la memoria più grande che ti puoi permettere. La mia raccomandazione sarebbe:
Se vuoi approfondire aspetti più tecnici ti consiglio di leggere l’ottima guida di Tim Dettmers su Quali GPU acquistare per il deep learning.
Larghezza della fessura
Quando costruiamo un sistema multi-GPU, dobbiamo pianificare come inserire fisicamente le GPU nel case del PC. Poiché le GPU diventano sempre più grandi, soprattutto nelle serie gaming, questo diventa sempre più un problema. Le schede madri consumer hanno fino a 7 slot PCIe e i case dei PC sono costruiti attorno a questa configurazione. Un 4090 può facilmente occupare 4 slot a seconda del produttore, quindi puoi capire perché questo diventa un problema. Inoltre dovremmo lasciare almeno 1 slot tra le GPU che non sono in stile ventilatore o raffreddate ad acqua per evitare il surriscaldamento. Abbiamo le seguenti opzioni:
Raffreddamento ad acqua
Le varianti raffreddate ad acqua occupano fino a 2 slot ma sono più costose. In alternativa puoi convertire una GPU raffreddata ad aria, ma ciò annullerà la garanzia. Se non disponi di soluzioni All-in-One (AIO), dovrai creare un circuito di raffreddamento ad acqua personalizzato. Questo vale anche se desideri montare più GPU raffreddate ad acqua poiché i radiatori AIO potrebbero non adattarsi al case. Costruire il proprio circuito è rischioso e personalmente non lo farei con carte costose. Comprerei solo soluzioni AIO direttamente dai produttori (avverso al rischio 🙈).
Schede slot 2-3 raffreddate ad aria e riser PCIe
In questo scenario si interlacciano le schede sugli slot PCIe e le schede collegate con cavi montanti PCIe. Le schede riser PCIe possono essere posizionate da qualche parte all’interno del case del PC o all’aperto. In entrambi i casi dovresti assicurarti che le GPU siano protette (vedi anche la sezione sui case del PC).
Potenza (TDP)
Le GPU moderne sono sempre più assetate di energia. Ad esempio, un A 4090 richiede 450 W mentre un H100 può arrivare fino a 700 W. A parte la bolletta elettrica, il montaggio di tre o più GPU diventa un problema. Ciò è particolarmente vero negli Stati Uniti dove le prese di corrente possono fornire fino a circa 1800 W.
Una soluzione a questo problema se ti stai avvicinando alla potenza massima che puoi assorbire dal tuo alimentatore/presa di alimentazione è la limitazione della potenza. Tutto ciò che serve per ridurre la potenza massima che una GPU può assorbire è:
sudo nvidia-smi -i <GPU_index> -pl <power_limit>where:
GPU_index: the index (number) of the card as it shown with nvidia-smi
power_limit: the power in W you want to use
È stato dimostrato che la limitazione della potenza del 10-20% riduce le prestazioni di meno del 5% e mantiene le schede più fresche (esperimento di Puget Systems). La limitazione della potenza di quattro 3090, ad esempio, del 20% ne ridurrà il consumo a 1120 W e potrà facilmente essere inserita in un alimentatore da 1600 W/1800 W (assumendo 400 W per il resto dei componenti).
Fonte: towardsdatascience.com