Cómo aceleramos la inferencia del transformador 100 veces para los clientes de la API de 🤗

Aceleramos la inferencia del transformador en 100 veces para los clientes de la API de 🤗.

🤗 Transformers se ha convertido en la biblioteca predeterminada para científicos de datos de todo el mundo para explorar modelos de procesamiento del lenguaje natural (NLP) de última generación y construir nuevas características de NLP. Con más de 5,000 modelos pre-entrenados y ajustados disponibles, en más de 250 idiomas, es un parque de juegos rico y de fácil acceso, independientemente del marco de trabajo en el que estés trabajando.

Aunque experimentar con modelos en 🤗 Transformers es fácil, desplegar estos grandes modelos en producción con un rendimiento máximo y gestionarlos en una arquitectura que se escala con el uso es un desafío de ingeniería difícil para cualquier ingeniero de aprendizaje automático.

Esta ganancia de rendimiento de 100 veces y la escalabilidad incorporada es la razón por la cual los suscriptores de nuestra API de Inferencia Acelerada eligen construir sus características de NLP sobre ella. Para alcanzar el último aumento de rendimiento de 10 veces, las optimizaciones deben ser de bajo nivel, específicas para el modelo y para el hardware objetivo.

Esta publicación comparte algunos de nuestros enfoques para exprimir hasta la última gota de poder de cómputo para nuestros clientes. 🍋

Alcanzando el primer aumento de velocidad de 10 veces

La primera etapa del viaje de optimización es la más accesible, se trata de utilizar la mejor combinación de técnicas ofrecidas por las bibliotecas de Hugging Face, independientemente del hardware objetivo.

Utilizamos los métodos más eficientes incorporados en las tuberías de modelos de Hugging Face para reducir la cantidad de cálculos durante cada paso adelante. Estos métodos son específicos de la arquitectura del modelo y de la tarea objetivo, por ejemplo, para una tarea de generación de texto en una arquitectura GPT, reducimos la dimensionalidad de los cálculos de las matrices de atención al centrarnos en la nueva atención del último token en cada paso:

La tokenización a menudo es un cuello de botella para la eficiencia durante la inferencia. Utilizamos los métodos más eficientes de la biblioteca 🤗 Tokenizers, aprovechando la implementación de Rust del tokenizador del modelo en combinación con el almacenamiento en caché inteligente para obtener hasta 10 veces más velocidad para la latencia general.

Aprovechando las últimas características de las bibliotecas de Hugging Face, logramos una mejora confiable de 10 veces en comparación con una implementación estándar para un par modelo/hardware dado. Dado que las nuevas versiones de Transformers y Tokenizers generalmente se lanzan cada mes, nuestros clientes de API no necesitan adaptarse constantemente a nuevas oportunidades de optimización, sus modelos simplemente se ejecutan más rápido.

Compilación FTW: los difíciles 10x

Ahora es cuando se vuelve realmente complicado. Para obtener el mejor rendimiento posible, deberemos modificar el modelo y compilarlo para que se ajuste al hardware específico para la inferencia. La elección del hardware en sí dependerá tanto del modelo (tamaño en memoria) como del perfil de demanda (agrupación de solicitudes). Incluso al servir predicciones desde el mismo modelo, algunos clientes de API pueden beneficiarse más de la inferencia de CPU acelerada, y otros de la inferencia de GPU acelerada, cada uno con diferentes técnicas de optimización y bibliotecas aplicadas.

Una vez que se haya seleccionado la plataforma de cómputo para el caso de uso, podemos ponernos a trabajar. Aquí hay algunas técnicas específicas de CPU que se pueden aplicar con un gráfico estático:

  • Optimizar el gráfico (eliminar flujo no utilizado)
  • Fusionar capas (con instrucciones específicas de la CPU)
  • Cuantizar las operaciones

El uso de funciones estándar de bibliotecas de código abierto (por ejemplo, 🤗 Transformers con ONNX Runtime) no producirá los mejores resultados, o podría resultar en una pérdida significativa de precisión, especialmente durante la cuantización. No hay una solución fácil, y el mejor enfoque es diferente para cada arquitectura de modelo. Pero al adentrarse en el código de Transformers y en la documentación de ONNX Runtime, las estrellas pueden alinearse para lograr otro aumento de velocidad de 10 veces.

Ventaja injusta

La arquitectura Transformer fue un punto de inflexión decisivo para el rendimiento del aprendizaje automático, comenzando con el procesamiento del lenguaje natural, y en los últimos 3 años, la tasa de mejora en la comprensión y generación del lenguaje natural ha sido pronunciada y acelerada. Otro métrica que ha acelerado en consecuencia es el tamaño promedio de los modelos, desde los 110 millones de parámetros de BERT hasta los actuales 175 mil millones de GPT-3.

Esta tendencia ha presentado desafíos desalentadores para los ingenieros de aprendizaje automático al implementar los últimos modelos en producción. Si bien alcanzar una mejora de rendimiento de 100 veces es un objetivo ambicioso, eso es lo que se necesita para servir predicciones con una latencia aceptable en aplicaciones de consumo en tiempo real.

Para alcanzar ese objetivo, como ingenieros de aprendizaje automático en Hugging Face, ciertamente tenemos una ventaja injusta al trabajar en las mismas oficinas (virtuales) que los mantenedores de 🤗 Transformers y 🤗 Tokenizers 😬. También somos extremadamente afortunados por las valiosas asociaciones que hemos desarrollado a través de colaboraciones de código abierto con proveedores de hardware y nube como Intel, NVIDIA, Qualcomm, Amazon y Microsoft, que nos permiten ajustar nuestros modelos a la infraestructura con las últimas técnicas de optimización de hardware.

Si quieres sentir la velocidad en nuestra infraestructura, comienza una prueba gratuita y nos pondremos en contacto contigo. Si deseas beneficiarte de nuestra experiencia en la optimización de la inferencia en tu propia infraestructura, participa en nuestro Programa de Aceleración de Expertos de 🤗.

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

Descubriendo el impacto de la IA generativa en la narración de datos y el análisis

Introducción En el amplio campo de la analítica de datos, uno de los desarrollos más profundos que cambia el juego es...

Inteligencia Artificial

Barry Diller vs. IA Generativa Batalla Legal de Derechos de Autor

El magnate de los medios de comunicación Barry Diller y un grupo de destacados editores se están preparando para una ...

Inteligencia Artificial

Empaqueta e implementa fácilmente modelos de ML clásicos y LLMs con Amazon SageMaker, parte 2 Experiencias interactivas para usuarios en SageMaker Studio

Amazon SageMaker es un servicio completamente administrado que permite a los desarrolladores y científicos de datos c...

Inteligencia Artificial

Optimizando los costos computacionales con AutoMix Un enfoque estratégico de IA para aprovechar modelos de lenguaje grandes desde la nube

AutoMix es un enfoque innovador que optimiza la asignación de consultas a modelos de lenguaje de mayor tamaño (LLM) e...

Inteligencia Artificial

Investigadores descubren miles de nudos transformables

Investigadores descubrieron miles de nuevos nudos transformables a través de un proceso computacional que combina mue...