Entrenamiento e inferencia más rápidos Habana Gaudi®2 vs Nvidia A100 80GB
'Entrenamiento e inferencia más rápidos Habana Gaudi®2 vs Nvidia A100 80GB'
En este artículo, aprenderás cómo utilizar Habana® Gaudi®2 para acelerar el entrenamiento y la inferencia de modelos, y entrenar modelos más grandes con 🤗 Optimum Habana. Luego, presentamos varias pruebas de rendimiento, incluyendo el pre-entrenamiento de BERT, la inferencia de Difusión Estable y el ajuste fino de T5-3B, para evaluar las diferencias de rendimiento entre Gaudi de primera generación, Gaudi2 y Nvidia A100 80GB. ¡Spoiler alerta – Gaudi2 es aproximadamente el doble de rápido que Nvidia A100 80GB tanto para el entrenamiento como para la inferencia!
Gaudi2 es el acelerador de hardware de inteligencia artificial de segunda generación diseñado por Habana Labs. Un servidor único contiene 8 dispositivos aceleradores con 96GB de memoria cada uno (en comparación con los 32GB en Gaudi de primera generación y los 80GB en A100 80GB). El SDK de Habana, SynapseAI, es común tanto para Gaudi de primera generación como para Gaudi2. Eso significa que 🤗 Optimum Habana, que ofrece una interfaz muy fácil de usar entre las bibliotecas de 🤗 Transformers y 🤗 Diffusers y SynapseAI, ¡funciona de la misma manera exacta en Gaudi2 que en Gaudi de primera generación! Por lo tanto, si ya tienes flujos de trabajo de entrenamiento o inferencia listos para usar en Gaudi de primera generación, te animamos a probarlos en Gaudi2, ya que funcionarán sin ningún cambio.
Cómo obtener acceso a Gaudi2?
Una de las formas fáciles y rentables en las que Intel y Habana han puesto a disposición Gaudi2 es a través de la Nube de Desarrolladores de Intel. Para comenzar a utilizar Gaudi2 allí, debes seguir los siguientes pasos:
-
Ve a la página principal de la Nube de Desarrolladores de Intel e inicia sesión en tu cuenta o regístrate si no tienes una.
-
Ve a la consola de gestión de la Nube de Desarrolladores de Intel.
-
Selecciona el Servidor de Aprendizaje Profundo Habana Gaudi2 que cuenta con ocho tarjetas HL-225H Gaudi2 y los últimos procesadores Intel® Xeon® y haz clic en “Iniciar Instancia” en la esquina inferior derecha como se muestra a continuación.
-
Luego puedes solicitar una instancia:
-
Una vez que tu solicitud sea validada, repite el paso 3 y haz clic en “Agregar Clave Pública OpenSSH” para agregar un método de pago (tarjeta de crédito o código de promoción) y una clave pública SSH que puedes generar con
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
. Es posible que te redirijan al paso 3 cada vez que agregues un método de pago o una clave pública SSH. -
Repite el paso 3 y luego haz clic en “Iniciar Instancia”. Deberás aceptar las condiciones generales propuestas para lanzar realmente la instancia.
-
Ve a la consola de gestión de la Nube de Desarrolladores de Intel y haz clic en la pestaña llamada “Ver Instancias”.
-
¡Puedes copiar el comando SSH para acceder a tu instancia de Gaudi2 de forma remota!
Si terminas la instancia y deseas utilizar Gaudi2 nuevamente, deberás repetir todo el proceso.
Puedes encontrar más información sobre este proceso aquí.
Pruebas de rendimiento
Se realizaron varias pruebas de rendimiento para evaluar las capacidades de Gaudi de primera generación, Gaudi2 y A100 80GB tanto para el entrenamiento como para la inferencia, y para modelos de varios tamaños.
Pre-entrenamiento de BERT
Hace unos meses, Philipp Schmid, líder técnico de Hugging Face, presentó cómo pre-entrenar BERT en Gaudi con 🤗 Optimum Habana. Se realizaron 65k pasos de entrenamiento con un tamaño de lote de 32 muestras por dispositivo (por lo tanto, 8*32=256 en total) para un tiempo total de entrenamiento de 8 horas y 53 minutos (puedes ver los registros de TensorBoard de esta ejecución aquí).
Repetimos el mismo script con los mismos hiperparámetros en Gaudi2 y obtuvimos un tiempo total de entrenamiento de 2 horas y 55 minutos (ver los registros aquí). Eso representa una aceleración de x3.04 en Gaudi2 sin cambiar nada.
Dado que Gaudi2 tiene aproximadamente 3 veces más memoria por dispositivo en comparación con Gaudi de primera generación, es posible aprovechar esta mayor capacidad para tener lotes más grandes. Esto dará más trabajo a los HPUs y también permitirá a los desarrolladores probar una variedad de valores de hiperparámetros que no eran alcanzables con Gaudi de primera generación. Con un tamaño de lote de 64 muestras por dispositivo (512 en total), obtuvimos con 20k pasos una convergencia de pérdida similar a los 65k pasos de las ejecuciones anteriores. Eso representa un tiempo total de entrenamiento de 1 hora y 33 minutos (ver los registros aquí). El rendimiento es un 1.16 veces mayor con esta configuración, mientras que este nuevo tamaño de lote acelera fuertemente la convergencia. En general, con Gaudi2, el tiempo total de entrenamiento se reduce en un factor de 5.75 y el rendimiento es 3.53 veces mayor en comparación con Gaudi de primera generación.
Gaudi2 también ofrece una mejora de velocidad sobre A100: 1580.2 muestras/s frente a 981.6 para un tamaño de lote de 32 y 1835.8 muestras/s frente a 1082.6 para un tamaño de lote de 64, lo cual es consistente con la mejora de velocidad x1.8 anunciada por Habana en la fase 1 del pre-entrenamiento de BERT con un tamaño de lote de 64.
La siguiente tabla muestra las velocidades que obtuvimos para las GPUs Gaudi de primera generación, Gaudi2 y Nvidia A100 80GB:
BS es el tamaño de lote por dispositivo. Las ejecuciones en Gaudi se realizaron en precisión mixta (bf16/fp32) y las ejecuciones en A100 en fp16. Todas las ejecuciones fueron ejecuciones distribuidas en 8 dispositivos.
Generación de Imágenes a partir de Texto con Difusión Estable
Una de las principales características nuevas de la versión 1.3 de 🤗 Optimum Habana es el soporte para Difusión Estable. Ahora es muy fácil generar imágenes a partir de texto en Gaudi. A diferencia de 🤗 Diffusers en las GPUs, las imágenes se generan por lotes. Debido a los tiempos de compilación del modelo, los dos primeros lotes serán más lentos que las iteraciones siguientes. En esta prueba de referencia, se descartaron estas dos primeras iteraciones para calcular las velocidades para Gaudi de primera generación y Gaudi2.
Este script se ejecutó con un tamaño de lote de 8 muestras. Utiliza la configuración de Gaudi Habana/stable-diffusion
.
Los resultados que obtuvimos, que son consistentes con los números publicados por Habana aquí, se muestran en la siguiente tabla. Gaudi2 muestra latencias que son x3.51 más rápidas que Gaudi de primera generación (3.25s frente a 0.925s) y x2.84 más rápidas que Nvidia A100 (2.63s frente a 0.925s). También puede admitir tamaños de lote más grandes.
Actualización: las cifras anteriores se actualizaron ya que SynapseAI 1.10 y Optimum Habana 1.6 brindan una mejora de velocidad adicional en Gaudi de primera generación y Gaudi2.
BS es el tamaño de lote. Las ejecuciones en Gaudi se realizaron en precisión bfloat16 y las ejecuciones en A100 en precisión fp16 (más información aquí). Todas las ejecuciones fueron ejecuciones en un solo dispositivo.
Ajuste fino de T5-3B
Con 96 GB de memoria por dispositivo, Gaudi2 permite ejecutar modelos mucho más grandes. Por ejemplo, logramos ajustar finamente T5-3B (que contiene 3 mil millones de parámetros) con el uso de verificación de gradiente como la única optimización de memoria aplicada. Esto no es posible en Gaudi de primera generación. Aquí están los registros de esta ejecución, donde el modelo se ajustó finamente con el conjunto de datos CNN DailyMail para resumir textos utilizando este script.
Los resultados que logramos se presentan en la siguiente tabla. Gaudi2 es x2.44 más rápido que A100 80GB. Observamos que no podemos ajustar un tamaño de lote mayor que 1 en Gaudi2 aquí. Esto se debe al espacio de memoria ocupado por el gráfico donde se acumulan las operaciones durante la primera iteración de la ejecución. Habana está trabajando en optimizar la ocupación de memoria en futuras versiones de SynapseAI. Esperamos ampliar esta prueba de referencia utilizando versiones más nuevas del SDK de Habana y también utilizando DeepSpeed para ver si se mantiene la misma tendencia.
BS es el tamaño de lote por dispositivo. Las ejecuciones en Gaudi2 y A100 se realizaron en fp32 con verificación de gradiente habilitada. Todas las ejecuciones fueron ejecuciones distribuidas en 8 dispositivos.
Conclusión
En este artículo, discutimos nuestra primera experiencia con Gaudi2. La transición de Gaudi de primera generación a Gaudi2 es completamente fluida ya que SynapseAI, el SDK de Habana, es totalmente compatible con ambos. Esto significa que las nuevas optimizaciones propuestas por futuras versiones beneficiarán a ambos.
Has visto que Habana Gaudi2 mejora significativamente el rendimiento en comparación con Gaudi de primera generación y ofrece aproximadamente el doble de velocidad de procesamiento que Nvidia A100 80GB tanto para entrenamiento como para inferencia.
También ahora sabes cómo configurar una instancia de Gaudi2 a través de la Zona de Desarrollo de Intel. Echa un vistazo a los ejemplos que puedes ejecutar fácilmente en ella con 🤗 Optimum Habana.
Si estás interesado en acelerar tus flujos de trabajo de entrenamiento e inferencia de aprendizaje automático utilizando los últimos aceleradores de hardware y bibliotecas de software de IA, echa un vistazo a nuestro Programa de Aceleración de Expertos. Para obtener más información sobre las soluciones de Habana, lee sobre nuestra asociación aquí y ponte en contacto con ellos. Para obtener más información sobre los esfuerzos de Hugging Face para hacer que los aceleradores de hardware de IA sean fáciles de usar, consulta nuestro Programa de Asociación de Hardware.
Temas relacionados
- Empezando con Transformers con Habana Gaudi
- Acelerar el entrenamiento del modelo Transformer con Hugging Face y Habana Labs
¡Gracias por leer! Si tienes alguna pregunta, no dudes en contactarme, ya sea a través de Github o en el foro. También puedes conectarte conmigo en LinkedIn.