Se dio a conocer hace poco la noticia de que un grupo de investigadores de la Universidad de Stanford, la Universidad de California en Berkeley, ETH Zurich, la Escuela Superior de Economía, la Universidad Carnegie Mellon, así como Yandex y Meta, han publicado el código fuente de un motor para ejecutar grandes modelos de lenguaje en sistemas con recursos limitados.
Con nombre clave «FlexGen», es un proyecto que tiene como objetivo reducir significativamente los requisitos de recursos para las operaciones de inferencia LLM. Publicado en GitHub , FlexGen solo requiere Python y PyTorch pero sobre todo se puede usar con una sola GPU como NVIDIA Tesla T4 o GeForce RTX 3090.
Por ejemplo, el motor brinda la capacidad de crear una funcionalidad que recuerda a ChatGPT y Copilot al ejecutar un modelo OPT-175B preentrenado que cubre 175 mil millones de parámetros en una computadora normal con una tarjeta gráfica para juegos NVIDIA RTX3090 equipada con 24 GB de memoria de video.
Se menciona que los modelos de (LLM) respaldan el funcionamiento de herramientas como ChatGPT y Copilot. Estos son modelos extensos que usan miles de millones de parámetros y están entrenados en grandes cantidades de datos.
Los altos requisitos computacionales y de memoria para las tareas de inferencia de LLM generalmente requieren el uso de aceleradores de alta gama.
Estamos contentos de que el público esté realmente entusiasmado con FlexGen. Sin embargo, nuestro trabajo aún está en preparación y aún no está listo para su lanzamiento/anuncio público. Gracias a los primeros comentarios sobre este proyecto, nos dimos cuenta de que las primeras versiones de este LÉAME y nuestro documento no tenían claro el propósito de FlexGen. Este es un esfuerzo preliminar para reducir los requisitos de recursos de los LLM, pero también tiene muchas limitaciones y no pretende reemplazar los casos de uso cuando hay suficientes recursos disponibles.
La inferencia LLM es un proceso en el que se utiliza un modelo de lenguaje para generar predicciones sobre el texto de entrada: implica el uso de un modelo de lenguaje, como un modelo generativo como un GPT ( Transformador preentrenado generativo ), para hacer predicciones sobre lo que es más probable que ocurra. proporcionarse como respuesta después de un texto capturado de entrada específico.
Sobre FlexGen
El paquete incluye un script de ejemplo para crear bots que le permite al usuario descargar uno de los modelos de lenguaje disponibles públicamente y comenzar a chatear de inmediato.
Como base, se propone utilizar un gran modelo de lenguaje publicado por Facebook, entrenado en las colecciones BookCorpus (10 mil libros), CC-Stories, Pile (OpenSubtitles, Wikipedia, DM Mathematics, HackerNews, etc.), Pushshift.io (basado en datos de Reddit)) y CCNewsV2 (archivo de noticias).
El modelo cubre alrededor de 180 mil millones de tokens (800 GB de datos). Se necesitaron 33 días de funcionamiento del clúster con 992 GPU NVIDIA A100 de 80 GB para entrenar el modelo.
Al ejecutar OPT-175B en un sistema con una sola GPU NVIDIA T4 (16 GB), el motor FlexGen demostró un rendimiento hasta 100 veces más rápido que las soluciones ofrecidas anteriormente, lo que hace que el uso de modelos de lenguaje grande sea más asequible y les permite ejecutarse en sistemas sin aceleradores especializados.
Al mismo tiempo, FlexGen puede escalar para paralelizar los cálculos en presencia de varias GPU. Para reducir el tamaño del modelo, se utilizan un esquema de compresión de parámetros adicional y un mecanismo de almacenamiento en caché del modelo.
Actualmente, FlexGen solo admite modelos de lenguaje OPT, pero en el futuro, los desarrolladores también prometen agregar soporte para BLOOM (176 mil millones de parámetros, admite 46 idiomas y 13 lenguajes de programación), CodeGen (puede generar código en 22 lenguajes de programación) y GLM.
Finalmente cabe mencionar que el código está escrito en Python, utiliza el marco PyTorch y se distribuye bajo la licencia Apache 2.0.
Para los interesados en poder conocer más al respecto, pueden consultar los detalles en el siguiente enlace.