Volver a las novedades para desarrolladores

El verano del código abierto: creación de IA más eficaz con PyTorch

20 de sep. de 2022DeSuraj Subramanian

Nota: Nuestro agradecimiento especial a Less Wright, ingeniero asociado, Meta AI, por revisar la publicación y ofrecer información adicional.

Esta publicación sobre la creación de inteligencia artificial (IA) eficaz es la segunda de la serie “El verano del código abierto”. El objetivo de esta serie es proporcionar contenido formativo y recursos útiles en áreas en las que los proyectos de código abierto están teniendo repercusión en Meta y otras plataformas. Acompáñanos mientras exploramos otras áreas en las que Meta Open Source impulsa el sector compartiendo herramientas innovadoras y escalables.

PyTorch: de la tecnología fundacional a las bases

Desde su lanzamiento inicial en 2016, PyTorch se ha usado ampliamente en la comunidad de aprendizaje profundo y, actualmente, sus raíces en investigación se están expandiendo continuamente para su uso en situaciones de producción. En una época fascinante para el aprendizaje automático (AA) y la inteligencia artificial (IA) en la que los innovadores métodos y casos de uso de los modelos de IA siguen desarrollándose, PyTorch inauguró el siguiente capítulo de su historia a través de PyTorch Foundation, una entidad independiente, recientemente creada en el marco de Linux Foundation. La fundación consta de una junta directiva variada que cuenta con representantes de AMD, Amazon Web Services, Google Cloud, Microsoft Azure y Nvidia, y que tiene previsto ampliarse con el tiempo. Algunos objetivos de esta misión son impulsar la adopción de herramientas de IA mediante proyectos neutrales respecto de los proveedores y hacer que las herramientas, bibliotecas y otros componentes de código abierto sean accesibles para todos. La fundación también posibilitará que PyTorch y su comunidad de código abierto sigan acelerando el camino desde la creación de prototipos de IA y AA hasta su implementación en producción.

Optimizar los procesos de IA con Meta Open Source

PyTorch es un magnífico ejemplo del potencial del código abierto. Como uno de los primeros marcos de aprendizaje profundo de código abierto, PyTorch ha hecho posible que personas de distintas disciplinas experimenten con el aprendizaje profundo y apliquen su trabajo en campos de diversa índole. PyTorch admite desde experimentos en aplicaciones de búsqueda hastadesarrollo para vehículos autónomos y georradares, y estas son solo algunas de sus aplicaciones más recientes. Al combinar una biblioteca versátil de herramientas de IA con la comunidad de código abierto, la tecnología se puede iterar y adaptar a escala rápidamente para muchos usos diferentes.

A medida que la IA se implementa de manera más amplia, el tamaño de los modelos va creciendo para abordar problemas más complejos, pero esto también implica que los recursos necesarios para entrenar estos modelos han aumentado considerablemente. Afortunadamente, muchas personas de la comunidad de desarrolladores han reconocido que los modelos deben usar menos recursos, tanto desde un punto de vista práctico como ambiental. En esta publicación, exploraremos por qué la cuantificación y otros tipos de compresión de modelos pueden ser un catalizador para conseguir una IA eficaz.

Establecer un punto de partida para usar PyTorch

En la mayor parte de esta publicación, se exploran algunas funciones de PyTorch de nivel intermedio y avanzado. Si no tienes experiencia y quieres empezar, o si eres experto y actualmente usas otra biblioteca, lo más fácil es comenzar con los aspectos fundamentales. Consulta la guía para principiantes de PyTorch, que ofrece una introducción a un flujo de trabajo de AA completo usando el conjunto de datos Fashion MNIST.

A continuación, encontrarás algunos recursos más que te podrían interesar si estás empezando con PyTorch:

  • Historias de la comunidad de PyTorch: descubre cómo PyTorch tiene un impacto en los diferentes sectores, como la agricultura, la educación y el turismo, entre otros.
  • Serie de PyTorch para principiantes: explora una lista de reproducción con vídeos sobre las técnicas básicas, que incluyen primeros pasos con tensores, creación de modelos, entrenamiento e inferencia en PyTorch.

Cuantificación: aplicar técnicas probadas a la IA

Hay muchas maneras de lograr que la IA sea más eficaz. Codiseñar hardware y software para optimizar la IA puede resultar muy eficaz, pero desarrollar soluciones de hardware y software a medida requiere una cantidad de tiempo y recursos considerable. Crear arquitecturas más rápidas y reducidas es otra forma para alcanzar la eficacia, pero muchas de estas arquitecturas pierden precisión en comparación con modelos más grandes, al menos de momento. Un enfoque más sencillo consiste en buscar maneras de reducir los recursos necesarios para entrenar y mostrar los modelos existentes. En PyTorch, una forma de hacerlo es mediante la compresión de modelos usando cuantificación.

La cuantificación es una técnica matemática que se ha usado para crear archivos de música digital con pérdida y convertir señales analógicas en digitales. Si se realizan cálculos matemáticos con precisión reducida, la cuantificación permite aumentar considerablemente el rendimiento en muchas plataformas de hardware. Así que, ¿por qué habría que usar la cuantificación para hacer que la IA sea más eficaz? Los resultados demuestran que, en determinados casos, usar esta técnica relativamente sencilla puede aumentar la velocidad de la inferencia de modelos de manera notable (de 2 a 4 veces).

Los parámetros que conforman un modelo de aprendizaje profundo suelen ser números decimales con precisión de punto flotante (PF); cada parámetro requiere16 o 32 bits de memoria. Al usar la cuantificación, los números se suelen convertir en INT4 o INT8, que solo ocupan 4 u 8 bits. Esto reduce la cantidad de memoria que requieren los modelos. Asimismo, los fabricantes de chips incluyen una aritmética especial que hace más rápidas las operaciones cuando se usan enteros que cuando se usan decimales.

Existen tres métodos de cuantificación que se pueden usar para entrenar modelos: entrenamiento dinámico, estático y consciente de cuantificación (QAT). En la tabla siguiente se incluye una breve descripción de las ventajas y desventajas. Para aprender a implementar cada uno de estos métodos en tus flujos de trabajo de IA, lee la publicación en el blog Cuantificación práctica en PyTorch.

Método de cuantificación

Ventajas

Desventajas

Dinámico

  • Fácil de usar con solo una llamada a la API.
  • Más resistente al cambio de distribución, lo que mejora la precisión ligeramente.
  • Buen funcionamiento para modelos de memoria prolongada de corto plazo (LSTM) y de Transformer.

Se requiere una sobrecarga adicional en cada paso de avance.

Estático (también conocido como PTQ)

  • Inferencia más rápida que con la cuantificación dinámica, ya que elimina la sobrecarga.

Es posible que necesite recalibraciones periódicas para un cambio de distribución.

Entrenamiento consciente de cuantificación (QAT)

  • Mayor precisión que la cuantificación estática.
  • Inferencia más rápida que la del método dinámico.

Coste computacional elevado.

Más funciones para acelerar el flujo de trabajo de IA

La cuantificación no es la única manera para que la IA con tecnología de PyTorch sea más eficaz. Las funciones se actualizan periódicamente y, a continuación, encontrarás algunas formas más en las que PyTorch puede mejorar los flujos de trabajo de IA:

  • Modo de inferencia: este modo puede usarse para escribir código de PyTorch si solo usas el código para ejecutar inferencias. El modo de inferencia cambia algunas suposiciones al trabajar con tensores para acelerar la inferencia. Si indicas a PyTorch que no usarás tensores para determinadas aplicaciones más adelante (en este caso, autograd), PyTorch se ajusta para que el código se ejecute más rápido en estas situaciones concretas.

  • Baja precisión: la cuantificación solo funciona en el momento de la inferencia, es decir, después de entrenar al modelo. Para el proceso en sí, PyTorch usa entrenamiento AMP (de precisión mixta automática) para encontrar el mejor formato en función de los tensores que se usan (FP16, FP32 o BF16). El aprendizaje profundo de baja precisión en PyTorch tiene varias ventajas. Puede ayudar a reducir el tamaño de un modelo, la memoria necesaria para entrenar modelos y la potencia necesaria para ejecutarlos. Para obtener más información, consulta este tutorial para usar AMP con GPU compatibles con CUDA.

  • Channels last: en el campo de los modelos de visión, NHWC (también conocido como “channels-last”) es un formato de memoria de tensores más rápido en PyTorch. Almacenar los datos en el formato “channels-last” acelera las operaciones en PyTorch. Aplicar formato a los tensores de entrada como “channels-last” reduce la sobrecarga necesaria para convertir entre diferentes tipos de formato, lo que hace que la inferencia sea más rápida.

  • Optimización de la inferencia: este prototipo de TorchScript implementa optimizaciones genéricas que deberían acelerar modelos en todos los entornos y también puede preparar modelos para inferencia con configuraciones específicas de versiones. Algunos de los casos de uso principales son los modelos de visión en CPU (y GPU) en este momento. Como se trata de un prototipo, es posible que encuentres algunos problemas. Informa de los problemas que se produzcan en el repositorio GitHub de PyTorch.

Liberar nuevo potencial en PyTorch

En el blog de PyTorch se exploran periódicamente métodos innovadores para acelerar flujos de trabajo de IA. Es un excelente espacio para estar al día de técnicas como la reciente BetterTransformer, que puede multiplicar por dos la aceleración y el rendimiento de modelos de Transformer en escenarios de ejecución comunes. Si te interesa aprender a implementar funciones específicas de PyTorch, en la página de recetas puedes buscar por categorías, como optimización de modelos, entrenamiento distribuido y capacidad de interpretación. Esta publicación solo es una muestra de cómo herramientas como PyTorch hacen avanzar el código abierto y la IA.

Para estar al día de las novedades de Meta Open Source sobre inteligencia artificial y aprendizaje automático, consulta nuestro sitio de código abierto, suscríbete a nuestro canal de YouTube o síguenos en Facebook, Twitter y LinkedIn.