Inferencia rápida en modelos de lenguaje grandes BLOOMZ en el acelerador Habana Gaudi2

'Inferencia rápida en modelos BLOOMZ en Gaudi2'

Este artículo te mostrará cómo implementar fácilmente modelos de lenguaje grandes con cientos de miles de millones de parámetros como BLOOM en Habana® Gaudi®2 utilizando 🤗 Optimum Habana, que es el puente entre Gaudi2 y la biblioteca de 🤗 Transformers. Como se demuestra en la referencia presentada en esta publicación, esto te permitirá ejecutar inferencias más rápidas que cualquier GPU actualmente disponible en el mercado.

A medida que los modelos se vuelven más grandes, desplegarlos en producción para ejecutar inferencias se ha vuelto cada vez más desafiante. Tanto el hardware como el software han visto muchas innovaciones para abordar estos desafíos, así que sumerjámonos para ver cómo superarlos eficientemente.

BLOOMZ

BLOOM es un modelo autoregresivo de 176 mil millones de parámetros que fue entrenado para completar secuencias de texto. Puede manejar 46 idiomas diferentes y 13 lenguajes de programación. Diseñado y entrenado como parte de la iniciativa BigScience, BLOOM es un proyecto de ciencia abierta que involucró a un gran número de investigadores e ingenieros de todo el mundo. Más recientemente, se lanzó otro modelo con la misma arquitectura exacta: BLOOMZ, que es una versión afinada de BLOOM en varias tareas que lleva a una mejor generalización y capacidades de cero disparo[^1].

Estos modelos grandes plantean nuevos desafíos en términos de memoria y velocidad tanto para el entrenamiento como para la inferencia. ¡Incluso en precisión de 16 bits, ¡¡una instancia requiere 352 GB para encajar! Probablemente luches por encontrar cualquier dispositivo con tanta memoria en este momento, pero el hardware de última generación como Habana Gaudi2 sí permite realizar inferencias en los modelos BLOOM y BLOOMZ con baja latencia.

Habana Gaudi2

Gaudi2 es el acelerador de hardware de inteligencia artificial de segunda generación diseñado por Habana Labs. Un solo servidor contiene 8 dispositivos aceleradores (llamados Unidades de Procesamiento Habana, o HPUs) con 96 GB de memoria cada uno, lo que permite que los modelos muy grandes encajen. Sin embargo, alojar el modelo no es muy interesante si el cálculo es lento. Afortunadamente, Gaudi2 brilla en ese aspecto: a diferencia de las GPU, su arquitectura permite que el acelerador realice multiplicación de matrices generales (GeMM) y otras operaciones en paralelo, lo que acelera los flujos de trabajo de aprendizaje profundo. Estas características hacen de Gaudi2 un excelente candidato para el entrenamiento e inferencia de LLM.

El SDK de Habana, SynapseAI™, admite PyTorch y DeepSpeed para acelerar el entrenamiento e inferencia de LLM. El compilador de gráficos SynapseAI optimizará la ejecución de las operaciones acumuladas en el gráfico (por ejemplo, fusión de operadores, gestión de diseño de datos, paralelización, canalización y gestión de memoria, y optimizaciones a nivel de gráfico).

Además, el soporte para gráficos HPU e inferencia de DeepSpeed se ha introducido recientemente en SynapseAI, y estos son adecuados para aplicaciones sensibles a la latencia, como se muestra en nuestro punto de referencia a continuación.

Todas estas características están integradas en la biblioteca 🤗 Optimum Habana para que sea muy sencillo implementar tu modelo en Gaudi. Echa un vistazo a la página de inicio rápida aquí.

Si quieres acceder a Gaudi2, ve al Intel Developer Cloud y sigue esta guía.

Puntos de referencia

En esta sección, vamos a proporcionar un punto de referencia temprano de BLOOMZ en Gaudi2, Gaudi de primera generación y Nvidia A100 80GB. Aunque estos dispositivos tienen bastante memoria, el modelo es tan grande que un solo dispositivo no es suficiente para contener una sola instancia de BLOOMZ. Para resolver este problema, vamos a utilizar DeepSpeed, que es una biblioteca de optimización de aprendizaje profundo que permite muchas mejoras de memoria y velocidad para acelerar el modelo y hacer que se ajuste al dispositivo. En particular, aquí confiamos en DeepSpeed-inference: introduce varias características como el paralelismo de modelo (o de canalización) para aprovechar al máximo los dispositivos disponibles. Para Gaudi2, utilizamos la bifurcación de DeepSpeed de Habana que agrega soporte para HPUs.

Latencia

Medimos las latencias (lote de una muestra) para dos tamaños diferentes de BLOOMZ, ambos con miles de millones de parámetros:

  • 176 mil millones de parámetros
  • 7 mil millones de parámetros

Las ejecuciones se realizaron con DeepSpeed-inference en precisión de 16 bits con 8 dispositivos y utilizando una caché de clave-valor. Ten en cuenta que, aunque actualmente los gráficos CUDA no son compatibles con el paralelismo de modelos en DeepSpeed (DeepSpeed v0.8.2, consulta aquí), los gráficos HPU son compatibles en la bifurcación de DeepSpeed de Habana. Todos los puntos de referencia realizan la generación codiciosa de 100 tokens de salida. El inicio de entrada es:

“DeepSpeed es un marco de aprendizaje automático”

que consta de 7 tokens con el tokenizador de BLOOM.

Los resultados de la latencia de inferencia se muestran en la siguiente tabla (la unidad es segundos).

Actualización: los números anteriores fueron actualizados con los lanzamientos de Optimum Habana 1.6 y SynapseAI 1.10, lo que resultó en una aceleración de x 1.42 en BLOOMZ con Gaudi2 en comparación con A100.

El equipo de Habana recientemente introdujo soporte para inferencia de DeepSpeed en SynapseAI 1.8, y de esta manera habilitó rápidamente la inferencia para modelos de más de 100 mil millones de parámetros. Para el punto de control de 176 mil millones de parámetros, Gaudi2 es 1.42 veces más rápido que A100 80GB. Los puntos de control más pequeños también presentan resultados interesantes. ¡Gaudi2 es 2.89 veces más rápido que A100 para BLOOMZ-7B! También es interesante destacar que logra beneficiarse del paralelismo del modelo, mientras que A100 es más rápido en un solo dispositivo.

También ejecutamos estos modelos en Gaudi de primera generación. Si bien es más lento que Gaudi2, resulta interesante desde una perspectiva de precio, ya que una instancia DL1 en AWS cuesta aproximadamente 13$ por hora. La latencia para BLOOMZ-7B en Gaudi de primera generación es de 2.387 segundos. Por lo tanto, Gaudi de primera generación ofrece una mejor relación precio-rendimiento para el punto de control de 7 mil millones que A100, que cuesta más de 30$ por hora.

Esperamos que el equipo de Habana optimice el rendimiento de estos modelos en las próximas versiones de SynapseAI. Por ejemplo, en nuestra última prueba de referencia, observamos que Gaudi2 realiza inferencia de Difusión Estable 2.2 veces más rápido que A100, y esto se ha mejorado aún más a 2.37 veces con las últimas optimizaciones proporcionadas por Habana. Actualizaremos estos números a medida que se publiquen nuevas versiones de SynapseAI e se integren en Optimum Habana.

Ejecución de inferencia en un conjunto de datos completo

El script que escribimos permite utilizar su modelo para completar oraciones en todo un conjunto de datos. Esto es útil para probar la inferencia de BLOOMZ en Gaudi2 con sus propios datos.

Aquí hay un ejemplo con el conjunto de datos tldr_news. Contiene tanto el titular como el contenido de varios artículos (se puede visualizar en el Hugging Face Hub). Solo conservamos la columna de contenido y truncamos cada muestra a los primeros 16 tokens para que el modelo genere el resto de la secuencia con 50 nuevos tokens. Las primeras cinco muestras se ven así:

Lote n°1
Entrada: ['Facebook ha publicado un informe que muestra qué contenido fue el más visto por los estadounidenses entre']
Salida: ['Facebook ha publicado un informe que muestra qué contenido fue el más visto por los estadounidenses entre enero y junio de este año. El informe, que se basa en datos de la plataforma de publicidad móvil de la compañía, muestra que el contenido más popular en Facebook fue noticias, seguido de deportes, entretenimiento y política. El informe también muestra que el más']
--------------------------------------------------------------------------------------------------
Lote n°2
Entrada: ['Un efecto cuántico llamado superabsorción permite que una colección de moléculas absorba luz de manera más']
Salida: ['Un efecto cuántico llamado superabsorción permite que una colección de moléculas absorba luz de manera más intensa que la suma de las absorciones individuales de las moléculas. Este efecto se debe a la interacción coherente de las moléculas con el campo electromagnético. El efecto de superabsorción se ha observado en varios sistemas, incluidos los cristales líquidos, los cristales líquidos en']
--------------------------------------------------------------------------------------------------
Lote n°3
Entrada: ['Un prototipo de cohete Starship de SpaceX ha explotado durante una prueba de presión. Fue']
Salida: ['Un prototipo de cohete Starship de SpaceX ha explotado durante una prueba de presión. Fue la primera vez que se probó un prototipo de Starship en el aire. La explosión ocurrió en las instalaciones de SpaceX en Boca Chica, Texas. Se estaba probando la capacidad del prototipo de Starship para resistir la presión del vuelo. La explosión ocurrió en']
--------------------------------------------------------------------------------------------------
Lote n°4
Entrada: ['Scalene es un perfilador de CPU y memoria de alto rendimiento para Python.']
Salida: ['Scalene es un perfilador de CPU y memoria de alto rendimiento para Python. Está diseñado para ser un perfilador liviano, portátil y fácil de usar. Scalene es un paquete de Python que se puede instalar en cualquier plataforma que admita Python. Scalene es un perfilador liviano, portátil y fácil de usar']
--------------------------------------------------------------------------------------------------
Lote n°5
Entrada: ['Con el aumento de los pequeños y económicos "Cube Satellites", las startups ahora pueden']
Salida: ['Con el aumento de los pequeños y económicos "Cube Satellites", las startups ahora pueden lanzar sus propios satélites por una fracción del costo de un lanzamiento tradicional. Esto ha llevado a una proliferación de pequeños satélites, que ahora se utilizan para una amplia gama de aplicaciones. El uso más común de los pequeños satélites es para las comunicaciones,']

En la siguiente sección, explicamos cómo usar el script que escribimos para realizar esta prueba de referencia o aplicarla a cualquier conjunto de datos que desee del Hugging Face Hub!

¿Cómo reproducir estos resultados?

El script utilizado para la prueba de referencia de BLOOMZ en Gaudi2 y Gaudi de primera generación está disponible aquí . Antes de ejecutarlo, asegúrese de tener instaladas las últimas versiones de SynapseAI y los controladores de Gaudi siguiendo las instrucciones proporcionadas por Habana .

Luego, ejecute lo siguiente:

git clone https://github.com/huggingface/optimum-habana.git
cd optimum-habana && pip install . && cd examples/text-generation
pip install git+https://github.com/HabanaAI/[email protected]

Finalmente, puede ejecutar el script de la siguiente manera:

python ../gaudi_spawn.py --use_deepspeed --world_size 8 run_generation.py --model_name_or_path bigscience/bloomz --use_hpu_graphs --use_kv_cache --max_new_tokens 100

Para inferencias multi-nodo, puede seguir esta guía de la documentación de Optimum Habana.

También puede cargar cualquier conjunto de datos del Hugging Face Hub para obtener indicaciones que se utilizarán para la generación utilizando el argumento --dataset_name my_dataset_name .

Esta prueba de referencia se realizó con Transformers v4.28.1, SynapseAI v1.9.0 y Optimum Habana v1.5.0.

Para las GPU, aquí está el script que condujo a los resultados que se presentaron anteriormente en esta publicación de blog (y aquí están las instrucciones para usarlo). Para usar los gráficos CUDA, se necesitan formas estáticas y esto no es compatible en 🤗 Transformers. Puede usar este repositorio escrito por el equipo de Habana para habilitarlos.

Conclusión

Vemos en este artículo que Habana Gaudi2 realiza inferencias de BLOOMZ más rápido que Nvidia A100 80GB . Y no es necesario escribir un script complicado, ya que 🤗 Optimum Habana proporciona herramientas fáciles de usar para ejecutar inferencias con modelos de varios miles de millones de parámetros en HPUs. Se espera que las futuras versiones del SDK SynapseAI de Habana mejoren el rendimiento, por lo que actualizaremos esta prueba de referencia regularmente a medida que las optimizaciones de inferencia de LLM en SynapseAI continúen avanzando. También esperamos los beneficios de rendimiento que vendrán con la inferencia FP8 en Gaudi2.

También presentamos los resultados obtenidos con Gaudi de primera generación. Para modelos más pequeños, puede tener un rendimiento similar o incluso mejor que A100 por casi un tercio de su precio. Es una buena opción alternativa para usar GPU para ejecutar inferencias con un modelo tan grande como BLOOMZ.

Si está interesado en acelerar sus flujos de trabajo de entrenamiento e inferencia de aprendizaje automático utilizando los últimos aceleradores de hardware de IA y bibliotecas de software, consulte nuestro Programa de Aceleración de Expertos . Para obtener más información sobre las soluciones de Habana, lea sobre nuestra asociación y contáctelos aquí . Para obtener más información sobre los esfuerzos de Hugging Face para facilitar el uso de aceleradores de hardware de IA, consulte nuestro Programa de Socios de Hardware .

  • Entrenamiento e inferencia más rápidos: Habana Gaudi-2 vs Nvidia A100 80GB
  • Aproveche DeepSpeed para entrenar modelos de transformadores a gran escala más rápido y más barato con Hugging Face y Habana Labs Gaudi

¡Gracias por leer! Si tiene alguna pregunta, no dude en ponerse en contacto conmigo, ya sea a través de Github o en el foro . También puede conectarse conmigo en LinkedIn .

[^1]: “Zero-shot” se refiere a la capacidad de un modelo para completar una tarea en datos de entrada nuevos o no vistos, es decir, sin haber recibido ejemplos de entrenamiento de este tipo de datos. Proporcionamos al modelo una indicación y una secuencia de texto que describe lo que queremos que nuestro modelo haga, en lenguaje natural. La clasificación sin disparos excluye cualquier ejemplo de la tarea deseada que se haya completado. Esto difiere de la clasificación de uno o pocos disparos, ya que estas tareas incluyen un solo o unos pocos ejemplos de la tarea seleccionada.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce LMSYS-Chat-1M Un conjunto de datos a gran escala que contiene un millón de conversaciones del mundo real con 25 LLM de última generación.

Los grandes modelos de lenguaje (LLMs) se han vuelto fundamentales para diversas aplicaciones de IA, desde asistentes...

Aprendizaje Automático

Escribir canciones con GPT-4 Parte 3, Melodías

Cómo usar ChatGPT con GPT-4 de OpenAI para escribir melodías para nuevas canciones utilizando tablaturas de guitarra ...

Inteligencia Artificial

Obteniendo audio de imágenes estáticas, videos silenciosos

Una herramienta de aprendizaje automático desarrollada en la Universidad Northeastern puede obtener audio de imágenes...

Inteligencia Artificial

Escala el entrenamiento y la inferencia de miles de modelos de aprendizaje automático con Amazon SageMaker

Entrenar y servir miles de modelos requiere una infraestructura robusta y escalable, y ahí es donde Amazon SageMaker ...

Inteligencia Artificial

Investigadores de Google y del MIT presentan StableRep Revolucionando el entrenamiento de IA con imágenes sintéticas para un aprendizaje automático mejorado

Los investigadores han explorado el potencial de utilizar imágenes sintéticas generadas por modelos de texto a imagen...