- Un modelo de lenguaje gigantesco compuesto por aprox. 1.8 billones de parámetros y 120 capas, con una escala más de 10 veces mayor que GPT-3
- Estructura de Mixture of Experts (MoE) con 16 expertos; en cada forward pass solo se activan 2 expertos para reducir costos
- Fue entrenado con aprox. 13 billones de tokens, aplicando 2 epochs para texto y 4 epochs para código
- Estructura multimodal con un codificador de visión separado; tras el preentrenamiento en texto, recibió ajuste fino adicional con unos 2 billones de tokens
- Entrenado durante 90~100 días con unas 25,000 A100, con un costo de entrenamiento estimado de unos 63 millones de dólares
Cantidad de parámetros y escala del modelo
- Se estima que GPT-4 es más de 10 veces más grande que GPT-3, con un total de aprox. 1.8 billones de parámetros distribuidos en 120 capas
- En cada forward pass (generación de 1 token) solo se usan aprox. 280B parámetros y unas 560 TFLOPs
- En contraste, si fuera un modelo dense puro habría requerido aprox. 1.8 billones de parámetros y unas 3,700 TFLOP
- Los parámetros compartidos para attention estarían en torno a 55B
Estructura Mixture of Experts (MoE)
- OpenAI mantiene los costos en un nivel razonable mediante el uso de un modelo MoE
- Utiliza 16 expertos dentro del modelo, y cada experto tiene aprox. 111B parámetros tomando como referencia el MLP
- En cada forward pass se enruta hacia 2 expertos
-
Enrutamiento MoE
- Aunque en la academia se discuten mucho algoritmos avanzados de enrutamiento para elegir expertos por token, se dice que el enrutamiento actual de GPT-4 es bastante simple
-
Trade-off al elegir la cantidad de expertos
- Como no todas las partes de un MoE se usan para generar cada token, la inferencia es muy difícil de manejar
- Algunas áreas quedan inactivas, lo que reduce la utilización al servir a usuarios
- En investigación, 64~128 expertos logran menor loss que 16 expertos, pero eso corresponde a un contexto puramente de investigación
- Si aumenta el número de expertos, resulta más difícil generalizar a distintas tareas y también converger
- Por estas razones, OpenAI habría elegido de forma conservadora 16 expertos
- Como no todas las partes de un MoE se usan para generar cada token, la inferencia es muy difícil de manejar
Dataset
- GPT-4 fue entrenado con aprox. 13 billones de tokens, una cifra que no representa tokens únicos sino el total acumulado contando repeticiones por epoch
- Se aplicaron 2 epochs a los datos de texto y 4 epochs a los datos de código
- Incluye millones de filas de datos de ajuste fino de instrucciones obtenidos por ScaleAI y de forma interna
-
Composición de la mezcla del dataset
- De los 13 billones de tokens, CommonCrawl y RefinedWeb aportarían 5 billones cada uno
- Si se eliminan las repeticiones por epoch, quedaría un conjunto de datos secreto de "origen desconocido"
- Existen rumores de que parte provino de twitter, reddit y youtube
- Como fuentes estimadas se mencionan LibGen (4 millones+ de libros), Sci-Hub (80 millones+ de papers) y todo GitHub
- También se plantea que los datos faltantes serían un dataset de libros de texto universitarios recopilado manualmente
- Tras convertirlos a txt, sería fácil transformarlos en formato de instrucciones con self-instruct
- Esto habría contribuido a la impresión de que GPT-4 es "inteligente" incluso fuera de su especialidad
- También existen papers que intentan identificar los datos de entrenamiento forzando la extracción de algunos libros memorizados por GPT-4
- Algunos libros los conoce extremadamente bien, lo que confirma que fueron parte del entrenamiento, e incluso recuerda IDs únicos de problemas de Project Euler
Contexto de 32K en GPT-4
- En la etapa de preentrenamiento se usó una longitud de contexto de 8k (seqlen)
- La versión con seqlen de 32k sería el resultado de afinar el modelo de 8k después del preentrenamiento
Tamaño de batch
- En el clúster, el tamaño de batch se fue aumentando gradualmente durante varios días hasta llegar finalmente a un batch size de 60 millones
- Como no todos los expertos ven todos los tokens, por experto serían unos 7.5 millones de tokens
- El batch size real solo puede calcularse dividiendo esa cifra entre el seq len
Estrategia de paralelización
- Para paralelizar en todas las GPU A100 se usó paralelización tensorial de 8 vías (por el límite de NVLink)
- Más allá de eso, se aplicó paralelización por pipeline de 15 vías
- Es posible que se haya usado ZeRO Stage 1, y también existe la posibilidad de FSDP a nivel de bloque
-
Razón para no usar FSDP
- Parte de la infraestructura de hardware disponible podría ser de generaciones anteriores
- En clústeres de cómputo locales es común actualizar la infraestructura en varias "etapas" para evitar interrupciones operativas
- Parte de la infraestructura de hardware disponible podría ser de generaciones anteriores
Costo de entrenamiento
- Los FLOPS de entrenamiento de GPT-4 serían aprox. 2.15e25, ejecutados durante 90~100 días en unas 25,000 A100, con un MFU de aprox. 32~36%
- La utilización tan baja se debería a una cantidad excesiva de fallas que provocaron reinicios desde checkpoints
- Asumiendo aprox. $1 por hora de A100, se estima que solo este entrenamiento costó unos 63 millones de dólares
- A valores actuales, el preentrenamiento podría hacerse con unas 8,192 H100 en aprox. 55 días, y con $2 por hora de H100 costaría unos 21.5 millones de dólares
Costo de inferencia de GPT-4
- GPT-4 cuesta 3 veces más que Davinci de 175B parámetros
- Esto se debe a que requiere un clúster más grande y tiene una utilización mucho menor
- Estimación de costos: al hacer inferencia de GPT-4 con seqlen de 8k en 128 A100, costaría $0.0049 centavos por cada 1k tokens; con 128 H100, $0.0021 centavos
- Asumiendo una utilización suficientemente alta y el mantenimiento de batch sizes grandes
Multi-Query Attention (MQA)
- OpenAI también usa MQA, igual que otros
- Solo requiere 1 head, lo que reduce mucho la memoria necesaria para el caché KV
- Aun así, GPT-4 con seqlen de 32k no puede ejecutarse en una A100 de 40GB, y la versión de 8k tiene limitaciones en el batch size máximo
Continuous Batching
- OpenAI implementó tanto tamaño de batch variable como continuous batching
- Con ello logra al mismo tiempo tolerar cierto nivel de latencia máxima y optimizar el costo de inferencia
Visión multimodal
- Un codificador de visión separado del codificador de texto está conectado mediante cross-attention, con una arquitectura similar a Flamingo
- Añade parámetros adicionales sobre los 1.8 billones de parámetros
- Tras el preentrenamiento solo en texto, recibió ajuste fino adicional con unos 2 billones de tokens
- Se intentó entrenar el modelo de visión desde cero, pero como la madurez era insuficiente, se empezó por texto para reducir riesgos
- El objetivo principal de la capacidad visual es implementar agentes autónomos que lean páginas web y transcriban contenido de imágenes y video
- Entre los datos de entrenamiento se incluyen datos combinados de LaTeX renderizado/texto, capturas de pantalla de páginas web, muestreo de frames de videos de YouTube y transcripciones basadas en Whisper
Speculative Decoding
- Existe la posibilidad de que GPT-4 use speculative decoding en inferencia (no es 100% seguro)
- Un modelo más pequeño y rápido decodifica varios tokens por adelantado y luego los envía en un solo batch a un modelo oracle más grande
- Si la predicción del modelo pequeño es correcta, el modelo grande la acepta y decodifica varios tokens en un solo batch
- Si el modelo grande la rechaza, el resto del batch se descarta y se continúa con el modelo grande
- Las recientes teorías conspirativas sobre una caída en la calidad de GPT-4 podrían deberse a que el modelo oracle está aceptando secuencias de baja probabilidad del modelo de speculative decoding
Arquitectura de inferencia
- La inferencia corre en un clúster de 128 GPU, y existirían múltiples clústeres en varios centros de datos
- Se ejecuta con paralelización tensorial de 8 vías y paralelización por pipeline de 16 vías
- Cada nodo de 8 GPU tendría aprox. 130B parámetros
- Como el modelo tiene 120 capas, estaría cargado de forma distribuida en 15 nodos
- Es posible que el primer nodo, que también debe calcular embeddings, tenga menos capas
- Según estas cifras, si hubiera seguido el valor óptimo de Chinchilla, habría necesitado entrenarse con el doble de tokens, lo que sugiere la dificultad de conseguir datos de alta calidad
1 comentarios
Opiniones de Hacker News
Ya se había publicado antes aquí https://news.ycombinator.com/item?id=36671588 y aquí https://news.ycombinator.com/item?id=36674905
La fuente original es https://www.semianalysis.com/p/gpt-4-architecture-infrastruc..., y el hilo de Twitter parece ser casi una paráfrasis del artículo real del blog. Por eso parece que se eliminó el tuit
Lo de usar mezcla de expertos (MoE) era novedoso y muy interesante, y quisiera saber más sobre cómo lograron que funcionara. Las variantes de implementación también podrían explicar las fluctuaciones en la calidad de salida que la gente ha observado. Del modelo de visión mencionado aquí tampoco se sabe mucho, aparte de algunas demos de hace unos meses, así que estoy esperando su lanzamiento
En el contexto de la inteligencia artificial, “MoE” normalmente significa “Mixture of Experts”, y sería una técnica de aprendizaje automático que divide un problema en subproblemas, hace que “expertos” (modelos) especializados resuelvan cada subproblema y luego combina las salidas
Si era nuevo que GPT-4 usa MoE, eso podría darle algo de credibilidad a esa afirmación
Esto muestra que los grandes modelos de lenguaje no tienen nada que ver con la inteligencia artificial general. Ponerles una calculadora es solo un parche; puede ser un parche útil, pero no creo que los haga capaces de hacer ciencia
Esta publicación, al menos por ahora, se puede ver gratis
Si esto es cierto, el entrenamiento costó 21 yottaFLOPs. No sé cuándo fue la última vez que vi el prefijo yotta-
Y el costo de entrenar GPT-4 cayó a un tercio de lo que era hace un año. La velocidad a la que bajan los precios de entrenamiento de los grandes modelos de lenguaje es realmente asombrosa, y es una buena noticia para el código abierto. El memo de Google tenía razón al decir que no hay foso defensivo
Aunque el precio mayorista del arroz fuera de 0.001 dólares por kg, si yo tengo 1 millón de dólares y tú tienes 1000 dólares, seguiré pudiendo comprar 1000 veces más arroz que tú
Además, para muchos usos, cuanto más inteligente, mejor. Si puedes comprar una respuesta más precisa por unos centavos, siempre vale la pena pagar esos centavos. Mientras puedan entrenar modelos más grandes y mejores con más hardware y más datos, eso es un foso defensivo
La tecnología me maravilla, pero esta vez me cuesta imaginar qué significará para el futuro, y me da miedo. Probablemente esto mate la web abierta, y se aprueben leyes relacionadas que terminen enterrándola
La frase “la teoría conspirativa de que la calidad del nuevo GPT-4 empeoró podría deberse a que el modelo oráculo aceptó secuencias de menor probabilidad del modelo de decodificación especulativa” básicamente reconoce que la especulación podría haber sido correcta e incluso propone un mecanismo específico, pero aun así insulta a quienes plantearon el problema y sigue haciéndoles gaslighting
Como no está demostrado, es una teoría; y como la gente cree que OpenAI degradó deliberadamente su propio servicio, es una teoría conspirativa
Esta persona parece no saber de qué habla. Sigue publicando este tipo de tonterías en Twitter. En general es copiar y pegar con un poco de condimento agregado
Por ejemplo, dejando de lado lo de MoE, lo de 16 expertos de 111 mil millones de parámetros no tiene sentido. GPT-3 ya tenía 175 mil millones de parámetros, y no parece que vayan a reducir el tamaño del modelo base en adelante. Una cifra más plausible sería alrededor de 220 mil millones de parámetros por modelo y 8 modelos expertos, con el mismo costo total de inferencia
La cifra de 13 billones de tokens de datos de entrenamiento también parece sacada de la nada
Google ha estado investigando la mezcla de expertos para escalar grandes modelos de lenguaje. Su modelo GLaM, presentado en 2022, tiene 1.7 billones de parámetros y 64 expertos
https://icml.cc/media/icml-2022/Slides/17378.pdf
“Sam Altman no te va a decir que GPT-4 tiene 220 mil millones de parámetros y usa 8 conjuntos de pesos en un modelo de mezcla de 16 vías”, dijo George Hotz recientemente en una entrevista con Lex Fridman
Por la reacción de Lex, parecía que él también sabía que eso era cierto
Esto no tiene suficientes fundamentos. Las únicas personas que saben exactamente cómo funciona GPT-4 son los empleados de OpenAI; el resto solo puede especular.
Pero la salsa secreta y el foso están en los datos. Alguna vez escuché el rumor de que OpenAI les pagó a participantes de programación competitiva para que escribieran y comentaran código con información como la complejidad.
Me preguntaba cómo servicios premium gratuitos como Thread Reader siguen operando, pese a que Twitter cobra tarifas excesivas por el acceso a la API y toma medidas contra el scraping.
El plan de API más barato con permisos de lectura cuesta 100 dólares al mes y permite leer 10.000 tuits, así que con eso solo se podrían generar unas 500 páginas de este tipo bajo demanda.
const puppeteer = require('puppeteer');.Este artículo tiene partes raras para alguien que afirma “conocer todos los números”.
Dice que “hoy el preentrenamiento puede hacerse con unos 8192 H100 durante unos 55 días, a 2 dólares por hora de H100, por 21,5 millones de dólares”, pero no entiendo por qué ajusta tanto el tamaño del sistema como el tiempo de entrenamiento con números arbitrarios.
También dice que, como en MoE no se usan todas las partes del modelo para generar cada token, es difícil de manejar en inferencia, y que algunas partes quedan ociosas mientras otras se usan, lo que perjudica la utilización al servir a usuarios; pero no queda claro la utilización de qué. ¿Memoria? Si preocupa tanto la utilización en inferencia, ¿no bastaría con ejecutar un modelo no MoE?
Sobre MQA también dice que “por eso solo se necesita 1 cabeza y se puede reducir mucho la memoria del caché KV”, lo cual está cerca, pero es incorrecto. Solo se necesita una cabeza de Key y Value, pero el número de cabezas de Query se mantiene igual.
Mi conjetura es que alguien con conocimientos relativamente buenos usó la fórmula de un paper de escalamiento de 2020 para crear un sistema imaginario cuyas matemáticas cierran. Yo también podría inventar un texto parecido y hacerlo sonar convincente, pero como está fuera de mi nivel, seguramente sería igual de cercano pero claramente equivocado. Por eso me parece muy sospechoso.
La clave de MQA es que, gracias a esa compartición, el caché KV se vuelve más pequeño que en el caso típico por un factor igual al número de cabezas. Aunque haya varias cabezas de Query, no afectan el tamaño del caché; tanto en capacidad de memoria como en ancho de banda, el factor limitante en la decodificación MHA es el caché.