Nous entraînons constamment des modèles de langue pour notre travail. Notre équipe utilise des dizaines de cartes graphiques différentes choisies pour différentes tâches : parfois, nous avons besoin d'une station DGX puissante, et parfois, une vieille carte de jeu comme la RTX 2080Ti suffit. Le choix d'une configuration GPU optimale vous permettra non seulement d'économiser du temps d'entraînement, mais aussi de l'argent.
Ce qui est intéressant, c’est qu’il y a très peu d’articles sur Internet qui testent les GPU spécifiquement pour la vitesse d’entraînement des modèles de langue. La plupart des tests concernent uniquement l’inférence. Lors de la sortie de la nouvelle puce H100, le rapport de Nvidia indiquait qu'elle était jusqu'à neuf fois plus rapide que l'A100 en termes d'entraînement, mais pour nos tâches, la nouvelle carte n'était que 90 % plus rapide que l'ancienne. En comparaison, nos fournisseurs de cloud avaient une différence de prix de 2x entre ces GPU, il n'y avait donc aucun intérêt à passer à la nouvelle H100 pour économiser de l'argent.
En plus de cela, nous avons testé une station DGX composée de 8 cartes graphiques A100 80GB, coûtant 10 000 dollars par mois. Après le test, il est apparu clairement que le rapport qualité/prix de cette station ne nous convenait pas du tout et que pour cette somme, nous pourrions acquérir 66 cartes RTX 3090, qui au total seraient beaucoup plus utiles.
Nos modèles de traduction de langues ont jusqu'à 500 millions de paramètres (entre 100 et 300 millions en moyenne). Il est possible que si nous augmentions significativement le nombre de paramètres, le rapport qualité/prix de la DGX soit meilleur. Actuellement, nous n'entraînons pas de grands modèles linguistiques capables de traduire entre toutes les langues et leurs variantes simultanément, mais utilisons des modèles linguistiques séparés pour chaque paire de langues, par exemple anglais-allemand. Chacun de ces modèles pèse entre 120 et 300 Mo.
Il convient de noter que différentes langues ont des quantités de données variées disponibles sur Internet et que, par exemple, pour l'espagnol, vous pouvez trouver 500 millions de phrases traduites, tandis que pour le tibétain, il n'y a pas plus d'un million. De ce fait, les modèles pour différentes langues sont entraînés avec un nombre de paramètres différent et le résultat présente des variations dans la qualité de traduction. Pour créer un modèle de traduction de l'anglais vers l'espagnol, nous utilisons un serveur avec 4 RTX 4500 et 256 Go de RAM. Pendant ce temps, le tibétain peut être entraîné sur une RTX 2080 Ti avec 16 Go de RAM, car il est inutile d’augmenter la complexité du réseau neuronal et, par conséquent, d’utiliser un serveur plus puissant avec une petite quantité de données.

Sélection des processeurs graphiques et chiffres théoriques
L'entraînement des modèles linguistiques a été effectué sur notre plateforme interne Data Studio en utilisant le framework OpenNMT-tf. Cette phase comprenait la préparation des données, l’entraînement du modèle, et la comparaison du modèle avec une traduction de référence. L’utilisation du FP16 au lieu du FP32 pendant l'entraînement nous a permis de réduire considérablement le temps d’entraînement des modèles linguistiques sans dégradation de la qualité de traduction, mais tous nos GPU ne supportaient pas cette option.
Lors du choix d'un processeur graphique, il est habituel de considérer des indicateurs tels que la puissance de traitement (TFLOPS), la mémoire vidéo (VRAM), le support des bibliothèques et des frameworks, le budget, et d'autres facteurs (taille de la carte graphique et facteur de forme, exigences d’alimentation, refroidissement, et compatibilité avec votre système). Lors de l'entraînement de modèles de génération de texte, il convient également de garder à l'esprit que différentes langues consommeront différentes quantités de ressources. Par exemple, un caractère pour les langues latines utilise 1 octet, 2 octets pour les langues cyrilliques, et 3 octets pour les langues contenant des idéogrammes. Comprendre les caractéristiques de votre carte graphique a un impact significatif sur la vitesse du processus d'apprentissage.
Lors de l'entraînement des modèles en fonction des GPU utilisés, les cartes vidéo ont été divisées en deux groupes selon la période d'utilisation : les premières cartes vidéo, qui ont été utilisées pour les premières mesures de la vitesse d'apprentissage, et les cartes actuellement en usage. Les principales caractéristiques de ces cartes graphiques peuvent être trouvées dans le tableau 1 et le tableau 2, respectivement.
Tableau 1 - Processeurs graphiques précédemment utilisés et leurs paramètres techniques
Nombre de GPU | GPU | VRAM (Go) | 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 |
Notes
1. Avec CUDA supérieur à 7.0, l'utilisation du FP16 donnera un gain de vitesse d'entraînement, en fonction de la version de CUDA et des caractéristiques propres à la carte graphique.
2. Si la spécification de la carte graphique indique que le rapport de performance FP16 à FP32 est supérieur à 1 pour 1, alors l'utilisation de la précision mixte augmentera la vitesse d'entraînement du pourcentage indiqué dans la spécification. Par exemple, pour la Quadro RTX 6000 avec une valeur FP16 TFLOPS de 32.62 (2:1), l'entraînement sera au moins deux fois plus rapide (2,4 fois en pratique).
Tableau 2 - Modèles de GPU actuellement utilisés et leurs principales caractéristiques
Nombre de GPU en utilisation | GPU | VRAM (Go) | 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 |
* - les valeurs pour FP16 TFLOPS et FP32 TFLOPS sont tirées des spécifications par GPU
Processus d'entraînement et de test des GPU
Les modèles ont été entraînés avec un ensemble de 18 GPU. Au cours de l'entraînement des réseaux neuronaux, nous avons utilisé de nombreuses paires de langues (plus d'une centaine de langues). Pendant l'entraînement de nos paires de langues, les paramètres suivants du réseau neuronal ont été pris comme base :
- taille du vocabulaire = 30 000
- nombre d'unités = 768
- couches = 6
- têtes = 16
- dimension interne = 4 096
Tout d'abord, nous allons caractériser les GPU appartenant au premier groupe en nous basant sur le tableau 1. Le temps en minutes et secondes passé à entraîner le modèle à une vitesse approximative de 1 000 étapes et une taille de lot multiple de 100 000 unités sera pris comme base pour comparer les indicateurs.
Nous soulignons que pour le premier groupe, les mesures de vitesse ont été effectuées en utilisant le mécanisme d'alignement et uniquement avec FP32. Sans l'utilisation de ce mécanisme, la vitesse d'apprentissage sur certains serveurs peut être beaucoup plus rapide.
Le mécanisme d'alignement permet de faire correspondre les sous-chaînes dans le texte de base et le texte traduit. Il est nécessaire pour traduire des textes formatés, tels que des pages web, lorsqu'une sous-chaîne dans une phrase peut être mise en évidence avec une police différente et doit être traduite avec cette mise en évidence.
Compte tenu des paramètres susmentionnés du réseau neuronal, le meilleur temps du premier tableau a été obtenu par le GPU Nvidia H100 avec un temps d'apprentissage de 22 minutes, le temps intermédiaire a été obtenu par le GPU de la même marque GeForce RTX 4060 Ti avec un temps d'apprentissage de 72 minutes, et la dernière place a été occupée par le GPU Tesla V100-SXM 2 avec un temps d'apprentissage de 140 minutes.
Compte tenu des paramètres susmentionnés du réseau neuronal, le meilleur temps du premier tableau a été obtenu par le GPU Nvidia H100 avec un temps d'apprentissage de 22 minutes, le temps intermédiaire a été obtenu par le GPU de la même marque GeForce RTX 4060 Ti avec un temps d'apprentissage de 72 minutes, et la dernière place a été occupée par le GPU Tesla V100-SXM 2 avec un temps d'apprentissage de 140 minutes.
Tableau 3 - Mesures du temps d'entraînement sur les cartes graphiques précédemment utilisée
Mécanisme d'alignement utilisé | |||
---|---|---|---|
Taille de lot effective = 100 000 | |||
FP 32 | |||
Nombre de GPU en utilisation | GPU | Vitesse approximative (min. sec), 1,000 étapes | Taille de lot utilisée |
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 |
Ensuite, réalisons une analyse comparative des accélérateurs graphiques actuellement en usage (Tableau 2). Pour ce groupe de processeurs graphiques, les mesures de vitesse ont été effectuées en utilisant le mécanisme d'alignement, ainsi qu'en utilisant FP16 et FP32. Les mesures de vitesse incluant ce mécanisme et la précision mixte seront présentées ci-dessous dans les tableaux 4 et 5 respectivement.
Ainsi, après avoir mesuré la vitesse des GPU de ce tableau, nous pouvons dire que la première place a été prise par le GPU de la série RTX A4500 avec un temps d'apprentissage de 31 minutes, mais il convient de souligner qu'une telle vitesse d'apprentissage des modèles a été obtenue en augmentant le nombre d'unités du GPU utilisé à 4. Si l'on ne tient pas compte de ce fait, la vitesse d'apprentissage du GPU susmentionné serait beaucoup plus élevée, ce qui le placerait en avant-dernière place dans le tableau final.
Le GPU de la série Quadro RTX 6000 avec un temps d'apprentissage de 47 minutes est en deuxième place. Il est à noter qu'une telle vitesse d'apprentissage est inversement conditionnée par le nombre d'unités du processeur utilisé, qui est égal à quatre. L'utilisation d'un seul de ces GPU entraînerait une perte de vitesse d'environ 3,2 fois, et le temps serait alors d'environ 153 minutes, le plaçant en dernière position.
La troisième place a été occupée par le GPU de la série TITAN RTX avec un temps de 75 minutes et 85 secondes. Ce score de vitesse d'apprentissage est dû à l'utilisation de 2 processeurs, ce qui a réduit le temps d'apprentissage du modèle.
Le leader incontestable en termes de vitesse d'apprentissage pour une seule unité est sans aucun doute le GPU de la série GeForce RTX 3090 avec un temps de 78 minutes et 26 secondes. L'augmentation du nombre d'unités de ce GPU accélérera la vitesse d'apprentissage du modèle, ce qui dépassera clairement tous les modèles de GPU mentionnés ci-dessus. Les données sur les mesures du temps d'apprentissage des modèles peuvent être observées dans le tableau 4.
Tableau 4 - Analyse comparative de la vitesse d'apprentissage des modèles de langue sur les GPU précédemment utilisés
Mécanisme d'alignement utilisé | |||
---|---|---|---|
Taille de lot effective = 100 000 | |||
FP 32 | |||
Nombre de GPU en utilisation | GPU | Vitesse approximative (min. sec), 1,000 étapes | Taille de lot utilisée |
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 |
Les mesures suivantes de la vitesse d'apprentissage ont été effectuées en utilisant le FP16. Par rapport au FP32, la précision réduite permet de diminuer la quantité de mémoire consommée lors de l'apprentissage du modèle et d'accélérer les calculs sur le GPU. La précision de la représentation sera plus faible qu'avec l'utilisation du FP32.
En mesurant le temps d'entraînement des modèles en utilisant le FP32 à partir du tableau précédent, nous pouvons dire que le temps d'entraînement du réseau neuronal a été réduit de près de deux fois. Sur la base des résultats des mesures de performance, nous pouvons observer que les positions des GPU dans le tableau 4 n'ont pas beaucoup changé. La carte de la série Quadro RTX 6000 est passée de la cinquième position à la sixième, dépassant le GPU GeForce RTX 3090 de 96 secondes. Les chiffres finaux sont présentés dans le tableau 5.
Tableau 5 - Analyse comparative de la vitesse d'apprentissage des modèles de langue sur les GPU précédemment utilisés
Mécanisme d'alignement utilisé | |||
---|---|---|---|
Taille de lot effective = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Vitesse approximative (min. sec), 1,000 étapes | Taille de lot utilisée |
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 |