La persona que puede construir fácilmente GPT-5 durante el fin de semana, sorprendentemente dedica tiempo a probar las capacidades del código abierto Llama 2. La búsqueda de ejecutar LLM en una sola computadora llevó a Andrej Karpathy de OpenAI, conocido por sus contribuciones al campo del aprendizaje profundo, a embarcarse en un proyecto de fin de semana para crear una versión simplificada del modelo Llama 2, ¡y aquí está!
Para esto, «tomé nanoGPT, lo ajusté para implementar la arquitectura Llama 2 en lugar de GPT-2, y la clave fue escribir el motor de inferencia C en run.c», explicó Karpathy en el repositorio Llama2.c GitHub. Su objetivo era implementar nanoGPT en la arquitectura Llama 2, en lugar de GPT dentro del lenguaje de programación C. El repositorio ya tiene 2.2K estrellas.
El éxito de Karpathy acercarse radica en su capacidad para lograr tasas altamente interactivas, incluso con modelos de tamaño razonable que contienen unos pocos millones de parámetros y entrenados en un modelo de 15 millones de parámetros del conjunto de datos TinyStories. Informa que en su M1 MacBook Air, el modelo Llama 2 con ~15 millones de parámetros puede inferir alrededor de 100 tokens por segundo en fp32, todo a través del código C que desarrolló. Este resultado es sorprendente, ya que demuestra la viabilidad de ejecutar modelos complejos en dispositivos con recursos limitados con una implementación sencilla.
Además, en una discusión en HackerNews, Karpathy explica cómo se sorprendió de que la compilación en MacBook Air M1 fuera mucho más rápida de lo previsto con una velocidad de 100 tokens por segundo. Alentado por este resultado, Karpathy ha estado actualizando activamente el repositorio y también comenzó a realizar pruebas en un modelo de 44 millones de parámetros, que es 3 veces más grande. Sorprendentemente, pudo entrenar 200 000 iteraciones con un tamaño de lote de 32 en 4 GPU A100 en aproximadamente 8 horas.
“Con este progreso, parece que lograr el modelo 7B Llama podría estar al alcance de la mano”, dijo Karpathy. Ha sido conocido por varios cursos, como la creación de GPT desde cero. La gente felicitó a OpenAI por contratar a Karpathy de Tesla.
¿Qué es el enfoque Baby-Llama?
Karpathy dijo que este enfoque se inspiró en gran medida en el proyecto de Georgi Gerganov: llama.cpp, que era casi el mismo proyecto de usar la primera versión de LLaMA en una MacBook usando C y C++.
El enfoque de Karpathy consiste en entrenar la arquitectura LLM de Llama 2 desde cero utilizando PyTorch. Después del entrenamiento, guarda los pesos del modelo en un archivo binario sin procesar. La parte interesante viene a continuación: escribe un archivo C de 500 líneas, llamado «run.c», que carga el modelo guardado y realiza inferencias utilizando cálculos de punto flotante de precisión simple (fp32). Este enfoque minimalista garantiza una huella de memoria baja y no requiere bibliotecas externas, lo que permite una ejecución eficiente en una sola computadora portátil M1 sin necesidad de GPU.
Mi divertido truco de fin de semana: llama2.c 🦙🤠https://t.co/CUoF0l07oX
Le permite entrenar un modelo bebé Llama 2 en PyTorch, luego inferirlo con un archivo de 500 líneas sin dependencias, en C puro. Mi modelo preentrenado (en TinyStories) muestra historias en fp32 a 18 tok/s en mi CPU MacBook Air M1. pic.twitter.com/aBvKCf1t2u— Andrej Karpatía (@karpatía) 23 de julio de 2023
Karpathy también explora varias técnicas para mejorar el rendimiento del código C, incluidos diferentes indicadores de compilación como -O3, -Ofast, -march=native y más. Estos indicadores optimizan el código al permitir la vectorización, el desenrollado de bucles y otros ajustes específicos del hardware. Al experimentar con estas banderas, los usuarios pueden lograr inferencias aún más rápidas en sus sistemas específicos.
Para probar el modelo Baby Llama 2 en su propio dispositivo, puede descargar el punto de control del modelo preentrenado del repositorio de Karpathy. El código proporcionado le permitirá compilar y ejecutar el código C en su sistema, ofreciendo un vistazo a la magia de ejecutar un modelo de aprendizaje profundo en un entorno minimalista.
Es crucial tener en cuenta que el proyecto de Karpathy es un experimento de fin de semana y no está destinado a una implementación de nivel de producción, lo cual reconoce. El enfoque principal de este esfuerzo fue demostrar la viabilidad de ejecutar los modelos Llama 2 en dispositivos de bajo consumo utilizando código C puro, un lenguaje que durante mucho tiempo no se consideró útil para el aprendizaje automático, ya que no involucra GPU.
El auge de los pequeños LLM
La principal razón por la que los modelos se han ido haciendo más pequeños todo este tiempo es para entrenarlos e integrarlos en dispositivos locales más pequeños. Además de no requerir una GPU, el enfoque de Karpathy sienta un precedente de lo que se puede lograr en dispositivos individuales. Es posible que a través de la asociación de Meta, Microsoft lance un montón de pequeños LLM basados en Llama 2.
De manera similar, el lanzamiento de Meta de Llama 2 también vino con una asociación asombrosa con Qualcomm, un fabricante de chips. Esta asociación es para hacer que Llama 2 se ejecute en hardware local. Apple también tiene un ecosistema de desarrolladores masivo, para lo cual, la compañía lanzó recientemente la arquitectura Transformers que está optimizada para Apple Silicon. Karpathy ya ha demostrado que se pueden hacer muchas cosas.