Emocionado por lanzar un nuevo repositorio: ¡nanochat! (es uno de los más desquiciados que he escrito). A diferencia de mi anterior repositorio similar nanoGPT que solo cubría el preentrenamiento, nanochat es una canalización de entrenamiento/inferencia mínima, desde cero, de pila completa de un clon simple de ChatGPT en una única base de código de dependencia mínima. Inicia una caja de GPU en la nube, ejecuta un solo script y en tan solo 4 horas después puede hablar con su propio LLM en una interfaz de usuario web similar a ChatGPT. Pesa ~ 8,000 líneas de código bastante limpio en mi opinión para: - Entrenar el tokenizador usando una nueva implementación de Rust - Entrenar previamente un LLM de Transformer en FineWeb, evaluar la puntuación CORE en una serie de métricas - Entrenamiento intermedio en conversaciones de usuario-asistente de SmolTalk, preguntas de opción múltiple, uso de herramientas. - SFT, evaluar el modelo de chat sobre el conocimiento mundial de opción múltiple (ARC-E / C, MMLU), matemáticas (GSM8K), código (HumanEval) - RL el modelo opcionalmente en GSM8K con "GRPO" - Inferencia eficiente del modelo en un motor con caché KV, prellenado/decodificación simple, uso de herramientas (intérprete de Python en una caja de arena liviana), hable con él a través de CLI o WebUI similar a ChatGPT. - Escriba una sola boleta de calificaciones de rebajas, resumiendo y gamificando todo. Incluso por un costo tan bajo como ~ $ 100 (~ 4 horas en un nodo 8XH100), puede entrenar un pequeño clon de ChatGPT con el que puede hablar y que puede escribir historias / poemas, responder preguntas simples. Aproximadamente ~ 12 horas supera la métrica GPT-2 CORE. A medida que avanza hacia ~ $ 1000 (~ 41.6 horas de capacitación), rápidamente se vuelve mucho más coherente y puede resolver problemas simples de matemáticas / código y tomar pruebas de opción múltiple. Por ejemplo, un modelo de profundidad 30 entrenado durante 24 horas (esto es aproximadamente igual a los FLOP de GPT-3 Small 125M y 1/1000 de GPT-3) llega a 40 en MMLU y 70 en ARC-Easy, 20 en GSM8K, etc. Mi objetivo es obtener la pila completa de "línea de base sólida" en un repositorio cohesivo, mínimo, legible, hackeable y de máxima bifurcación. nanochat será el proyecto final de LLM101n (que aún se está desarrollando). Creo que también tiene potencial para convertirse en un arnés de investigación, o un punto de referencia, similar a nanoGPT antes. De ninguna manera está terminado, ajustado u optimizado (en realidad, creo que es probable que haya bastante fruta madura), pero creo que está en un lugar donde el esqueleto general está lo suficientemente bien como para que pueda subir a GitHub, donde todas las partes se pueden mejorar. El enlace al repositorio y un tutorial detallado del speedrun de nanochat está en la respuesta.
Repositorio de GitHub: Un recorrido mucho más detallado y técnico: Ejemplo de conversación con el nanochat de 4 horas y 100 dólares en la interfaz de usuario web. Es... entretenido :) Los modelos más grandes (por ejemplo, una profundidad de 12 horas 26 o una profundidad de 24 horas 30) se vuelven rápidamente más coherentes.
Y un ejemplo de algunas de las métricas resumidas producidas por el speedrun de $ 100 en la boleta de calificaciones para comenzar. La base de código actual es un poco más de 8000 líneas, pero traté de mantenerlas limpias y bien comentadas. Ahora viene la parte divertida: la afinación y la escalada.
2.4M