Estamos constantemente entrenando modelos lingüísticos para nuestro trabajo. Nuestro equipo utiliza docenas de tarjetas de vídeo diferentes elegidas para diferentes tareas: en algún caso, necesitamos una potente estación DGX, y en otro, una tarjeta de juegos antigua como RTX 2080Ti es suficiente. Elegir la configuración de GPU óptima le ahorrará no solo tiempo de entrenamiento, sino también dinero.
Lo interesante es que hay muy pocos artículos en Internet con pruebas de GPU específicas para la velocidad de entrenamiento de modelos lingüísticos. En su mayoría, sólo se encuentran pruebas de inferencia. Cuando se lanzó el nuevo chip H100, el informe de NVidia afirmaba que era hasta nueve veces más rápido que el A100 en el entrenamiento, pero para nuestras tareas, la nueva tarjeta sólo era un 90% más rápida que la antigua. En comparación, nuestros proveedores de la nube tenían una diferencia de precio 2x entre estas GPUs, así que no tenía sentido cambiar a la nueva H100 para ahorrar dinero.
Además de eso, tomamos para una prueba una estación DGX, que consta de 8 tarjetas gráficas A100 80GB y cuesta 10 mil dólares al mes. Después de la prueba, se hizo evidente que la relación precio/rendimiento de esta estación no nos conviene en absoluto y por este dinero, podemos tomar 66 x RTX 3090, que en total será mucho más útil.
Nuestros modelos lingüísticos de traducción tienen hasta 500 millones de parámetros (entre 100 y 300 millones de media). Es posible que si aumentamos significativamente el número de parámetros, la relación precio/rendimiento de DGX sea mejor. Actualmente, no entrenamos grandes modelos lingüísticos que puedan traducir entre todos los idiomas en todas las variantes a la vez, sino que utilizamos modelos lingüísticos independientes para cada par de idiomas, por ejemplo inglés-alemán. Cada uno de estos modelos ocupa entre 120 y 300 Mb.
Hay que tener en cuenta que cada lengua tiene una cantidad diferente de datos en Internet, y mientras que, por ejemplo, para el español se pueden encontrar 500 millones de frases con traducción, para el tibetano no hay más de un millón. Por eso, los modelos para distintos idiomas se entrenan con un número diferente de parámetros y el resultado tiene una calidad de traducción distinta. Para crear un modelo de traducción del inglés al español, utilizamos un servidor con 4 x RTX 4500 y 256 GB de RAM. Al mismo tiempo, el idioma tibetano se puede entrenar en una RTX 2080 Ti con 16 GB de RAM, ya que no tiene sentido aumentar la complejidad de la red neuronal y, en consecuencia, ocupar un servidor más potente con una cantidad de datos pequeña.
Selección de procesadores gráficos y cifras teóricas
La formación del modelo lingüístico se llevó a cabo en nuestra plataforma interna Data Studio utilizando el marco OpenNMT-tf. Esta fase incluyó la preparación de los datos, el entrenamiento del modelo y la comparación del modelo con una traducción de referencia. El uso de FP16 en lugar de FP32 durante el entrenamiento nos permitió reducir considerablemente el tiempo de entrenamiento de los modelos lingüísticos sin degradar la calidad de la traducción, pero no todas nuestras GPU lo admitían.
Lo interesante es que hay muy pocos artículos en Internet con pruebas de GPU específicas para la velocidad de entrenamiento de modelos lingüísticos. En su mayoría, sólo se encuentran pruebas de inferencia. Cuando se lanzó el nuevo chip H100, el informe de NVidia afirmaba que era hasta nueve veces más rápido que el A100 en el entrenamiento, pero para nuestras tareas, la nueva tarjeta sólo era un 90% más rápida que la antigua. En comparación, nuestros proveedores de la nube tenían una diferencia de precio 2x entre estas GPUs, así que no tenía sentido cambiar a la nueva H100 para ahorrar dinero.
A la hora de elegir un procesador gráfico, lo normal es tener en cuenta parámetros como la potencia de procesamiento (TFLOPS), la memoria de vídeo (VRAM), la compatibilidad con bibliotecas y marcos de trabajo, el presupuesto y otros factores (tamaño y factor de forma de la tarjeta gráfica, requisitos de potencia, refrigeración y compatibilidad con el sistema). A la hora de entrenar los modelos de generación de texto, también hay que tener en cuenta que cada idioma consume una cantidad diferente de recursos. Por ejemplo, en las lenguas latinas se utiliza 1 byte para codificar un carácter, 2 bytes en las cirílicas y 3 bytes en las que contienen jeroglíficos. Saber qué características tendrá su tarjeta gráfica influye mucho en la velocidad del proceso de aprendizaje.
A la hora de entrenar los modelos en función de las GPU utilizadas, las tarjetas de vídeo se dividieron en dos grupos según el periodo de uso: las primeras tarjetas de vídeo, que se utilizaron para realizar las primeras mediciones de la velocidad de aprendizaje, y las tarjetas actualmente en uso. Las principales características de estas tarjetas gráficas pueden consultarse en la Tabla 1 y la Tabla 2, respectivamente.
Table 1 - Procesadores gráficos utilizados anteriormente y sus parámetros técnicos
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 |
Notas
1. Con CUDA superior a 7.0, el uso de FP16 supondrá un aumento de la velocidad de entrenamiento, dependiendo de la versión de CUDA y de las características de la propia tarjeta gráfica.
2. Si la especificación de la tarjeta gráfica indica que la relación de rendimiento entre FP16 y FP32 es superior a 1:1, se garantizará que el uso de la precisión mixta aumente la velocidad de entrenamiento en la cantidad especificada en la especificación. Por ejemplo, para Quadro RTX 6000 el valor FP16 TFLOPS de 32,62 (2:1) acelerará el entrenamiento al menos dos veces (2,4 veces en la práctica).
Table 2 - Modelos de GPU utilizados actualmente y sus principales características
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 |
* - los valores para FP16,TFLOPS y FP32,TFLOPS se han tomado de las especificaciones por GPU
Proceso de formación y prueba de la GPU
Los modelos se entrenaron utilizando un conjunto de 18 GPU. En el proceso de entrenamiento de las redes neuronales, utilizamos numerosos pares de idiomas (más de cien idiomas). Durante el entrenamiento de nuestros pares de idiomas, se tomaron como base los siguientes parámetros de red neuronal:;
- tamaño del vocabulario = 30 000
- número de unidades = 768
- capas = 6
- cabezas = 16
- dimensión interior = 4 096
En primer lugar, vamos a caracterizar las GPU pertenecientes al primer grupo basándonos en la Tabla 1. El tiempo en minutos y segundos empleado en entrenar el modelo a una velocidad aproximada de 1.000 pasos y un tamaño de lote múltiplo de 100.000 unidades se tomará como base para comparar los indicadores.
Destacamos que para el primer grupo, las mediciones de velocidad se realizaron con el uso del mecanismo de alineación y sólo utilizando FP32. Sin utilizar este mecanismo, la velocidad de aprendizaje en algunos servidores puede ser mucho mayor.
El mecanismo de alineación permite hacer coincidir las subcadenas del texto base y del traducido. Es necesario para traducir texto formateado, como páginas web, cuando una subcadena de una frase puede estar resaltada en un tipo de letra diferente y debe traducirse con el resaltado.
Teniendo en cuenta los parámetros mencionados de la red neuronal, el mejor tiempo de la primera tabla lo mostró la GPU Nvidia H100 con un tiempo de aprendizaje de 22 minutos, el tiempo intermedio lo mostró la GPU de la misma marca GeForce RTX 4060 Ti con un tiempo de aprendizaje de 72 minutos y el último lugar lo ocupó la GPU Tesla V100-SXM 2 con un tiempo de aprendizaje de 140 minutos.
También hubo ocho tarjetas Nvidia A10 en la prueba de GPU con una curva de aprendizaje de 20 minutos y 28 segundos, dos tarjetas Nvidia A40 con un tiempo de 56 minutos y dos tarjetas Tesla V100-SXM que registraron un tiempo de 86 minutos. La aplicación simultánea de varias tarjetas de la misma serie de GPU puede acelerar el proceso de entrenamiento de los modelos y mostrar casi el mismo tiempo con GPU de mayor capacidad, pero esta técnica puede no ser lo suficientemente racional desde el punto de vista financiero y de procedimiento. Los resultados de las mediciones de la velocidad de aprendizaje pueden observarse en la Tabla número 3.
Table 3 - Mediciones del tiempo de formación en los mapas gráficos utilizados anteriormente
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 |
A continuación, vamos a realizar un análisis comparativo de los aceleradores gráficos actualmente en uso (Tabla 2). Para este grupo de procesadores gráficos, se realizaron mediciones de velocidad utilizando el mecanismo de alineación, así como utilizando FP16 y FP32. Las mediciones de velocidad incluyendo este mecanismo y la precisión mixta se presentarán a continuación en las Tablas 4 y 5 respectivamente.
Así, habiendo medido la velocidad de las GPUs a partir de esta tabla, podemos decir que el primer puesto se lo ha llevado la GPU de la serie RTX A4500 con un tiempo de entrenamiento de 31 minutos, pero hay que destacar que tal velocidad de entrenamiento de modelos se ha obtenido aumentando hasta 4 el número de unidades de la GPU utilizada. Sin tener en cuenta este hecho, la velocidad de entrenamiento de la GPU mencionada será mucho mayor, lo que la situará en el penúltimo lugar de la tabla final.
La GPU de la serie Quadro RTX 6000, con un tiempo de aprendizaje de 47 minutos, ocupa el segundo lugar. Cabe señalar que dicha velocidad de entrenamiento está inversamente condicionada por el número de unidades del procesador utilizado, que es igual a cuatro. El uso de una sola GPU de este tipo daría una pérdida de velocidad de unas 3,2 veces y, en consecuencia, sería de aproximadamente 153 minutos y la situaría en último lugar.
La tercera línea la ocupó la GPU de la serie TITAN RTX con un tiempo de 75 minutos y 85 segundos. Esta puntuación de velocidad de aprendizaje se debe al uso de 2 procesadores, lo que redujo el tiempo de entrenamiento del modelo.
El líder indiscutible en términos de velocidad de entrenamiento en el número de una unidad será sin duda la GPU GeForce RTX serie 3090, con un tiempo de 78 minutos y 26 segundos. El aumento del número de unidades de esta GPU acelerará la velocidad de entrenamiento del modelo, que superará claramente a todas las GPU mencionadas anteriormente. Los datos sobre las mediciones del tiempo de entrenamiento del modelo pueden verse en la Tabla 4.
Table 4 - Análisis comparativo de la velocidad de entrenamiento de modelos lingüísticos en GPU utilizadas anteriormente
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 |
Las siguientes mediciones de velocidad de entrenamiento se realizaron utilizando FP16. En comparación con FP32, la semiprecisión permite reducir la cantidad de memoria consumida durante el entrenamiento del modelo y acelerar el cálculo en la GPU. La precisión de la representación será menor que con el uso de FP32.
Midiendo el tiempo de entrenamiento de los modelos utilizando FP32 de la tabla anterior, podemos decir que el tiempo de entrenamiento de la red neuronal se redujo casi dos veces. Basándonos en los resultados de la medición del rendimiento, podemos observar que las posiciones de las GPU en la Tabla 4 se mantuvieron sin grandes cambios. La tarjeta de la serie Quadro RTX 6000 pasó de la quinta posición a la sexta, superando a la GPU GeForce RTX 3090 en 96 segundos. Los números finales se muestran en la Tabla 5.
Table 5 - Análisis comparativo de la velocidad de entrenamiento de modelos lingüísticos en GPU utilizadas anteriormente
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 |