Per il nostro lavoro addestriamo costantemente modelli linguistici. Il nostro team utilizza decine di schede video diverse, scelte per compiti diversi: in alcuni casi abbiamo bisogno di una potente stazione DGX, mentre in altri è sufficiente una vecchia scheda da gioco come RTX 2080Ti. La scelta della configurazione ottimale della GPU consente di risparmiare non solo tempo di formazione, ma anche denaro.
L'aspetto interessante è che su Internet ci sono pochi articoli con test sulle GPU specifici per la velocità di addestramento dei modelli linguistici. Per lo più si trovano solo test di inferenza. Quando è stato rilasciato il nuovo chip H100, il rapporto di NVidia affermava che era fino a nove volte più veloce dell'A100 nell'addestramento, ma per i nostri compiti, la nuova scheda era solo il 90% più veloce della vecchia. A titolo di confronto, i nostri cloud provider avevano una differenza di prezzo di due volte tra queste GPU, quindi non aveva senso passare alla nuova H100 per risparmiare.
Inoltre, abbiamo testato una stazione DGX, che consiste in 8 schede grafiche A100 da 80 GB e costa 10.000 dollari al mese. Dopo il test, è emerso chiaramente che il rapporto prezzo/prestazioni di questa stazione non ci soddisfa affatto e per questa cifra possiamo prendere 66 x RTX 3090, che in totale saranno molto più utili.
I nostri modelli linguistici di traduzione hanno fino a 500 milioni di parametri (da 100 a 300 milioni in media). È possibile che se aumentiamo il numero di parametri in modo significativo, il rapporto prezzo/prestazioni di DGX sarà migliore. Attualmente non addestriamo modelli linguistici di grandi dimensioni in grado di tradurre tra tutte le lingue in tutte le varianti contemporaneamente, ma utilizziamo modelli linguistici separati per ogni coppia di lingue, ad esempio inglese-tedesco. Ciascuno di questi modelli richiede da 120 a 300 Mb.
Vale la pena notare che le diverse lingue hanno quantità diverse di dati su Internet, e mentre, ad esempio, per lo spagnolo si possono trovare 500 milioni di frasi con traduzioni, per il tibetano non se ne trovano più di un milione. Per questo motivo, i modelli per le diverse lingue vengono addestrati con un numero diverso di parametri e il risultato ha una qualità di traduzione diversa. Per creare un modello di traduzione dall'inglese allo spagnolo, utilizziamo un server con 4 RTX 4500 e 256 GB di RAM. Allo stesso tempo, la lingua tibetana può essere addestrata su RTX 2080 Ti con 16 GB di RAM, in quanto non ha senso aumentare la complessità della rete neurale e, di conseguenza, prendere un server più potente con una piccola quantità di dati.

Selezione di processori grafici e figure teoriche
L'addestramento del modello linguistico è avvenuto sulla nostra piattaforma interna Data Studio utilizzando il framework OpenNMT-tf. Questa fase comprendeva la preparazione dei dati, l'addestramento del modello e il confronto del modello con una traduzione di riferimento. L'uso di FP16 invece di FP32 durante l'addestramento ci ha permesso di ridurre significativamente il tempo di addestramento dei modelli linguistici senza degradare la qualità della traduzione, ma non tutte le nostre GPU lo supportano.
Quando si sceglie un processore grafico, è normale considerare parametri quali la potenza di elaborazione (TFLOPS), la memoria video (VRAM), il supporto di librerie e framework, il budget e altri fattori (dimensioni e fattore di forma della scheda grafica, requisiti di alimentazione, raffreddamento e compatibilità con il sistema). Quando si addestrano i modelli di generazione del testo, bisogna anche tenere presente che lingue diverse consumano quantità diverse di risorse. Ad esempio, 1 byte viene utilizzato per codificare un carattere per le lingue latine, 2 byte per le lingue cirilliche e 3 byte per le lingue contenenti geroglifici. La comprensione delle caratteristiche della scheda grafica ha un impatto significativo sulla velocità del processo di apprendimento.
Per la formazione dei modelli in termini di GPU utilizzate, le schede video sono state divise in due gruppi in base al periodo di utilizzo: le prime schede video, che sono state utilizzate per effettuare le prime misurazioni della velocità di apprendimento, e le schede attualmente in uso. Le caratteristiche principali di queste schede grafiche sono riportate nella Tabella 1 e nella Tabella 2, di seguito riportate.
Table 1 - Processori grafici utilizzati in precedenza e relativi parametri tecnici
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
Note
1. Con CUDA superiore a 7.0, l'uso di FP16 darà una spinta alla velocità di addestramento, a seconda della versione di CUDA e delle caratteristiche della scheda grafica stessa.
2. Se le specifiche della scheda grafica indicano che il rapporto tra prestazioni FP16 e FP32 è superiore a 1 a 1, l'uso della precisione mista garantisce un aumento della velocità di addestramento pari a quello indicato nelle specifiche. Ad esempio, per Quadro RTX 6000 il valore FP16 TFLOPS di 32,62 (2:1) accelera l'allenamento di almeno due volte (2,4 volte in pratica).
Table 2 - Modelli di GPU attualmente utilizzati e loro caratteristiche principali
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - i valori per FP16,TFLOPS e FP32,TFLOPS sono ricavati dalle specifiche per GPU
Processo di addestramento e test su GPU
I modelli sono stati addestrati utilizzando un set di 18 GPU. Nel processo di addestramento della rete neurale, abbiamo utilizzato numerose coppie linguistiche (più di cento lingue). Durante l'addestramento delle nostre coppie linguistiche, sono stati presi come base i seguenti parametri della rete neurale:
- dimensione del vocabolario = 30 000
- numero di unità = 768
- strati = 6
- teste = 16
- dimensione interna = 4 096
In primo luogo, caratterizziamo le GPU che appartengono al primo gruppo in base alla Tabella 1. Il tempo in minuti e secondi impiegato per l'addestramento del modello a una velocità approssimativa di 1.000 passi e a una dimensione del batch multipla di 100.000 unità sarà preso come base per il confronto degli indicatori.
Sottolineiamo che per il primo gruppo le misure di velocità sono state effettuate con l'uso del meccanismo di allineamento e solo con FP32. Senza l'uso di questo meccanismo, la velocità di apprendimento su alcuni server può essere molto più veloce.
Il meccanismo di allineamento permette di far corrispondere le sottostringhe nel testo di base e in quello tradotto. È necessario per tradurre testi formattati, come le pagine web, quando una sottostringa in una frase può essere evidenziata in un carattere diverso e deve essere tradotta con l'evidenziazione.
Tenendo conto dei suddetti parametri della rete neurale, il miglior tempo della prima tabella è stato mostrato dalla GPU Nvidia H100 con un tempo di apprendimento di 22 minuti, mentre il tempo intermedio è stato mostrato dalla GPU della stessa marca GeForce RTX 4060 Ti con un tempo di apprendimento di 72 minuti e l'ultimo posto è stato occupato dalla GPU Tesla V100-SXM 2 con un tempo di apprendimento di 140 minuti.
There were also eight Nvidia A10 cards in the GPU test with a learning curve of 20 minutes and 28 seconds, two Nvidia A40 cards with a time of 56 minutes, and two Tesla V100-SXM cards that clocked in at 86 minutes. Simultaneous application of multiple cards of the same series of GPU can speed up the training process of the models and show almost the same time with GPUs that have higher capacities, but such a technique may not be financially and procedurally rational enough. The results of learning speed measurements can be observed in Table number 3.
Table 3 - Misure del tempo di addestramento sulle mappe grafiche precedentemente utilizzate
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
Quindi, effettuiamo un'analisi comparativa dei processori grafici attualmente in uso (Tabella 2). Per questo gruppo di processori grafici, le misure di velocità sono state eseguite utilizzando il meccanismo di allineamento, nonché FP16 e FP32. Le misure di velocità che includono questo meccanismo e la precisione mista saranno presentate di seguito nelle Tabelle 4 e 5 rispettivamente.
Quindi, avendo misurato la velocità delle GPU da questa tabella, possiamo dire che il primo posto è stato conquistato dalla GPU della serie RTX A4500 con un tempo di addestramento di 31 minuti, ma va sottolineato che una tale velocità di addestramento dei modelli è stata ottenuta aumentando il numero di unità della GPU utilizzata fino a 4. Senza tener conto di questo fatto, la velocità di addestramento della suddetta GPU sarà molto più elevata, il che la collocherà al penultimo posto nella tabella finale.
La GPU Quadro RTX 6000, con un tempo di apprendimento di 47 minuti, si trova al secondo posto. Va notato che tale velocità di apprendimento è inversamente condizionata dal numero di unità del processore utilizzato, che è pari a quattro. L'utilizzo di una sola di queste GPU comporterebbe una perdita di velocità di circa 3,2 volte e di conseguenza un tempo di apprendimento di circa 153 minuti, collocandosi all'ultimo posto.
La terza posizione è stata occupata dalla GPU TITAN RTX con un tempo di 75 minuti e 85 secondi. Questo punteggio di velocità di apprendimento è dovuto all'uso di 2 processori, che hanno ridotto il tempo di addestramento del modello.
Il leader indiscusso in termini di velocità di addestramento nel numero di unità è sicuramente la GPU GeForce RTX 3090 con un tempo di 78 minuti e 26 secondi. Aumentando il numero di unità di questa GPU si accelera la velocità di addestramento del modello, che supererà nettamente tutti i modelli di GPU sopra citati. I dati relativi alle misurazioni dei tempi di addestramento del modello sono riportati nella Tabella 4.
Table 4 - Analisi comparativa della velocità di addestramento dei modelli linguistici sulle GPU precedentemente utilizzate
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
Le seguenti misurazioni della velocità di addestramento sono state eseguite utilizzando FP16. Rispetto a FP32, la semiprecisione consente di ridurre la quantità di memoria consumata durante l'addestramento del modello e di accelerare il calcolo sulla GPU. L'accuratezza della rappresentazione sarà inferiore rispetto all'uso di FP32.
Misurando il tempo di addestramento dei modelli utilizzando FP32 dalla tabella precedente, possiamo dire che il tempo di addestramento della rete neurale è stato ridotto di quasi due volte. Sulla base dei risultati della misurazione delle prestazioni, possiamo osservare che le posizioni delle GPU nella Tabella 4 sono rimaste invariate. La scheda Quadro RTX 6000 è passata dalla quinta alla sesta posizione, battendo la GPU GeForce RTX 3090 di 96 secondi. I numeri finali sono riportati nella Tabella 5.
Table 5 - Analisi comparativa della velocità di addestramento del modello linguistico sulle GPU utilizzate in precedenza
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |