paint-brush
Esta biblioteca de código abierto acelera la inferencia de IA entre 5 y 20 veces en unas pocas líneas de códigopor@emilec
821 lecturas
821 lecturas

Esta biblioteca de código abierto acelera la inferencia de IA entre 5 y 20 veces en unas pocas líneas de código

por Nebuly7m2022/04/11
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

La biblioteca nebullvm es una herramienta de código abierto para acelerar la computación de IA. Toma su modelo de IA como entrada y genera una versión optimizada que se ejecuta de 5 a 20 veces más rápido en su hardware. Nebullvm se está volviendo popular rápidamente, con más de 250 estrellas de GitHub el día del lanzamiento. La biblioteca pretende ser: agnóstica del modelo de aprendizaje profundo. Se necesitan unas pocas líneas de código para instalar la biblioteca y optimizar sus modelos. Es fácil de usar. Se ejecuta localmente en su máquina. Todo funciona localmente.

People Mentioned

Mention Thumbnail
Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Esta biblioteca de código abierto acelera la inferencia de IA entre 5 y 20 veces en unas pocas líneas de código
Nebuly HackerNoon profile picture

¿Cómo funciona nebullvm ?

Toma su modelo de IA como entrada y genera una versión optimizada que se ejecuta de 5 a 20 veces más rápido en su hardware. En otras palabras, nebullvm prueba múltiples compiladores de aprendizaje profundo para identificar la mejor manera posible de ejecutar su modelo en su máquina específica, sin afectar la precisión de su modelo.

Y eso es. En tan solo unas pocas líneas de código.

¡Y muchas gracias a todos por apoyar este proyecto de código abierto! La biblioteca recibió más de 250 estrellas de Github⭐ el día del lanzamiento, y eso es increíble 🚀

Orientación Mapa

Aprendamos más sobre nebullvm y la optimización de IA. ¿Por dónde deberíamos empezar? De...

  • Algo de CONTEXTO sobre por qué pocos desarrolladores optimizan la IA y las consecuencias negativas relacionadas
  • Una descripción general de cómo funciona la BIBLIOTECA
  • Algunos CASOS DE USO , demostraciones de tecnología y puntos de referencia
  • Una descripción de la TECNOLOGÍA detrás de la biblioteca

O saltemos directamente a la biblioteca → nebullvm

Contexto

Finalmente, la adopción de la Inteligencia Artificial (IA) está creciendo rápidamente, aunque todavía estamos lejos de explotar todo el potencial de esta tecnología.

De hecho, lo que suele suceder es que los desarrolladores de IA dedican la mayor parte de su tiempo al análisis de datos, la limpieza de datos y la prueba/capacitación de modelos con el objetivo de crear modelos de IA muy precisos.

Sin embargo... pocos modelos llegan a la producción. Si lo hacen, se dan dos situaciones:

Los modelos de IA son desarrollados por científicos de datos calificados y excelentes ingenieros de IA, que a menudo tienen una experiencia limitada con la nube, los compiladores, el hardware y todos los asuntos de bajo nivel. Cuando sus modelos están listos para implementarse, seleccionan la primera GPU o CPU que se les ocurre en la nube o en el servidor de su empresa/universidad, sin darse cuenta del grave impacto en el rendimiento del modelo (es decir, una computación mucho más lenta y costosa) causado por la falta de información. selección de hardware, mala configuración de la infraestructura de la nube y falta de optimización posterior al entrenamiento del modelo/hardware.

Otras empresas han desarrollado modelos de IA internos que funcionan de manera sólida. La inferencia de IA es fundamental para estas empresas, por lo que a menudo crean un equipo de ingenieros de hardware/nube que pasan horas buscando métodos listos para usar para optimizar la implementación del modelo.

¿Perteneces a uno de estos dos grupos? Entonces podría estar interesado en la biblioteca nebullvm, y a continuación le explicamos por qué.

Biblioteca

¿Cómo funciona nebullvm?

Importa la biblioteca, nebullvm hace algo de magia y su modelo de IA se ejecutará de 5 a 20 veces más rápido.

Y eso es. En tan solo unas pocas líneas de código.

El objetivo de la biblioteca nebullvm es permitir que cualquier desarrollador se beneficie de los compiladores de aprendizaje profundo sin tener que perder toneladas de horas entendiendo, instalando, probando y depurando esta poderosa tecnología.

Nebullvm se está volviendo popular rápidamente, con más de 250 estrellas de GitHub el día del lanzamiento y cientos de usuarios activos tanto de nuevas empresas como de grandes empresas tecnológicas. La biblioteca pretende ser:

💻 Modelo de aprendizaje profundo agnóstico. nebullvm es compatible con todas las arquitecturas más populares, como transformadores, LSTM, CNN y FCN.

🤖 Hardware agnóstico . La biblioteca ahora funciona en la mayoría de las CPU y GPU y pronto admitirá TPU y otros ASIC específicos de aprendizaje profundo.

🔥 Marco agnóstico . nebullvm admite los marcos más utilizados (PyTorch, TensorFlow y Hugging Face) y pronto admitirá muchos más.

🔑 Seguro. Todo se ejecuta localmente en su máquina.

☘️ Fácil de usar . Se necesitan unas pocas líneas de código para instalar la biblioteca y optimizar sus modelos.

Aprovechando los mejores compiladores de aprendizaje profundo . Hay toneladas de compiladores DL que optimizan la forma en que sus modelos de IA se ejecutan en su hardware. Un desarrollador tardaría toneladas de horas en instalarlos y probarlos en cada implementación de modelo. ¡La biblioteca lo hace por ti!

casos de uso

¿Por qué es tan valioso acelerar la computación de 5 a 20 veces?

Para ahorrar tiempo → Acelere sus servicios de IA y hágalos en tiempo real.

Para ahorrar dinero → Reducir los costos de computación en la nube.

Para ahorrar energía → Reduzca el consumo de electricidad y la huella de carbono de sus servicios de IA.

Probablemente pueda comprender fácilmente cómo la computación acelerada puede beneficiar su caso de uso específico. También le proporcionaremos algunos casos de uso sobre cómo nebullvm está ayudando a muchos miembros de la comunidad en diferentes sectores:

La informática rápida hace que los motores de búsqueda y recomendación sean más rápidos, lo que conduce a una experiencia de usuario más agradable en sitios web y plataformas. Además, la IA casi en tiempo real es un requisito estricto para muchas empresas de tecnología de la salud y para la conducción autónoma, cuando un tiempo de respuesta lento puede poner en peligro la vida de las personas. El metaverso y la industria de los juegos también requieren una latencia cercana a cero para permitir que las personas interactúen sin problemas. La velocidad también puede proporcionar una ventaja en sectores como el comercio criptográfico/NFT/rápido.

Reducir los costos con el mínimo esfuerzo nunca le hace daño a nadie. Hay poco que explicar sobre esto.

Green AI es un tema que se está volviendo más popular con el tiempo. Todo el mundo es muy consciente de los riesgos y las implicaciones del cambio climático y es importante reducir el consumo de energía en la medida de lo posible. La conciencia generalizada sobre el problema se refleja en cómo el comportamiento de compra en todos los sectores se está moviendo hacia una mayor sostenibilidad. Además, el bajo consumo de energía es un requisito del sistema en algunos casos, especialmente en dispositivos IoT/edge que pueden no estar conectados a fuentes de energía continua.

Demostración de tecnología

Sugerimos probar la biblioteca en su modelo de IA de inmediato siguiendo las instrucciones de instalación en Github . Si, en cambio, desea obtener una idea práctica de las capacidades de la biblioteca, consulte los cuadernos en este enlace donde puede probar nebullvm en modelos populares de aprendizaje profundo. Tenga en cuenta que las computadoras portátiles aún requerirán que instale la biblioteca, ya que probará nebullvm en sus modelos, lo que llevará varios minutos. Una vez instalado, nebullvm optimizará sus modelos en poco tiempo.

Puntos de referencia

También hemos probado nebullvm en modelos populares de IA y hardware de proveedores líderes.

  • Hardware: M1 Pro, NVIDIA T4, Intel Xeon, AMD EPYC
  • Modelos de IA: EfficientNet, Resnet, SqueezeNet, Bert, GPT2

A primera vista, podemos observar que la aceleración varía mucho entre los acoplamientos de modelo de hardware. En general, la biblioteca brinda excelentes resultados positivos, la mayoría de los cuales van de 2 a 30 veces más acelerados.

A modo de resumen, los resultados son:

Nebullvm proporciona una aceleración positiva a los modelos de IA no optimizados

  • Los primeros resultados muestran un rendimiento más pobre (aunque positivo) en los modelos Hugging Face. Se acaba de lanzar el soporte para Hugging Face y se implementarán mejoras en futuras versiones.
  • Nebullvm proporciona un impulso ~2-3x en el hardware de Intel. Es muy probable que estos resultados estén relacionados con una implementación ya altamente optimizada de PyTorch para dispositivos Intel
  • Rendimiento extremadamente bueno en máquinas NVIDIA
  • La biblioteca ofrece un gran rendimiento también en los chips Apple M1
  • Y en todos los escenarios, nebullvm es muy útil por su facilidad de uso, lo que le permite aprovechar los compiladores de aprendizaje profundo sin tener que pasar horas estudiando, probando y depurando esta tecnología.

La siguiente tabla muestra el tiempo de respuesta en milisegundos (ms) del modelo no optimizado y el modelo optimizado para los diversos acoplamientos modelo-hardware como valor promedio de 100 experimentos. También muestra la aceleración proporcionada por nebullvm, donde la aceleración se define como el tiempo de respuesta del modelo optimizado sobre el tiempo de respuesta del modelo no optimizado.

El hardware utilizado para el experimento es el siguiente:

  • M1 Pro → Apple M1 Pro 16 GB de RAM
  • Intel Xeon → Instancia EC2 en AWS - t2.large
  • AMD EPYC → Instancia EC2 en AWS - t4a.large
  • Nvidia T4 → Instancia EC2 en AWS - g4dn.xlarge

Tecnología

Nebullvm aprovecha los mejores compiladores de aprendizaje profundo para acelerar los modelos de IA en la inferencia.

Entonces, ¿qué son exactamente los compiladores de aprendizaje profundo?

Un compilador de aprendizaje profundo toma su modelo como entrada y produce una versión eficiente del mismo que ejecuta el gráfico de cálculo del modelo más rápido en un hardware específico.

¿Cómo?

Existen varios métodos que, en principio, intentan reorganizar los cálculos de las redes neuronales para hacer un mejor uso del diseño de la memoria del hardware y optimizar la utilización del hardware.

En términos muy simples, la optimización del aprendizaje profundo se puede lograr mediante la optimización de todo el gráfico de cálculo de extremo a extremo, así como mediante la reestructuración de operadores (principalmente para bucles relacionados con multiplicaciones de matrices) dentro del gráfico [ 1 , 2 ]. Estos son algunos ejemplos de técnicas de optimización:

  • Fusión de operadores . Se refiere al proceso en el que primero se identifica una secuencia de operadores elegibles para la fusión y luego se reemplaza con una implementación escrita a mano correspondiente. La fusión de operadores permite compartir mejor los cálculos, eliminar las asignaciones intermedias y facilita una mayor optimización mediante la combinación de nidos de bucles. [ 3 ]
  • cuantización . Se refiere a técnicas para realizar cálculos y almacenar tensores en anchos de bits más bajos que la precisión de coma flotante. Un modelo cuantizado ejecuta algunas o todas las operaciones en tensores con números enteros en lugar de valores de punto flotante. [ 4, 5 ]
  • Poda de gráficos . La poda se refiere a eliminar ciertos parámetros en la red neuronal porque son redundantes y no contribuyen significativamente a la salida, lo que da como resultado una red más pequeña y más rápida. [ 6 ]

La optimización del aprendizaje profundo depende en gran medida del acoplamiento específico de hardware y software, y los compiladores específicos funcionan mejor en acoplamientos específicos. Por lo tanto, es difícil saber a priori el rendimiento de los muchos compiladores de aprendizaje profundo en el mercado para cada caso de uso específico y es necesario realizar pruebas. Esto es exactamente lo que hace nebullvm , ahorrando a los programadores incontables horas.

Agradecimientos

El equipo detrás de nebullvm es un grupo de antiguos miembros del MIT, ETH y EPFL que se unieron y lanzaron Nebuly . Desarrollaron esta biblioteca de código abierto junto con muchas otras excelentes tecnologías para hacer que la IA sea más eficiente. Puede obtener más información sobre Nebuly en su sitio web , LinkedIn , Twitter o Instagram .

Muchas felicitaciones para Diego Fiori , el principal colaborador de la biblioteca. Diego es una persona curiosa y siempre sedienta de conocimiento, que le gusta consumir tanto como la buena mesa y el buen vino. Es un programador versátil, muy celoso de su código y nunca deja que su código parezca menos que magnífico. En definitiva, Diego es el CTO de Nebuly .

Muchas gracias también a la comunidad de código abierto que ha desarrollado numerosos compiladores DL que permiten acelerar los modelos de IA.

Y finalmente, muchas gracias a todos aquellos que están apoyando a la comunidad de código abierto de nebullvm , encontrando errores y corrigiéndolos, y permitiendo la creación de este acelerador de IA superpoderoso de última generación.

Referencias

Documentos y artículos sobre compiladores de aprendizaje profundo.

  • [1] Una introducción amigable a los compiladores y optimizadores de aprendizaje automático por Chip Huyen
  • [2] El compilador de aprendizaje profundo: una encuesta completa de Mingzhen Li & Al
  • [3] Optimización basada en principios de redes neuronales dinámicas por Jared Roesch
  • [4] Una encuesta de métodos de cuantificación para la inferencia eficiente de redes neuronales por Amir Gholami & Al.
  • [5] Cuantización para redes neuronales por Lei Mao
  • [6] Poda de redes neuronales 101 por Hugo Tessier

Documentación de compiladores de aprendizaje profundo utilizados por nebullvm.