Este artículo está compilado a partir de la columna SemiAnalysis de Dylan Patel y Gerald Wong. No hace mucho, Dylan Patel dio la noticia sobre la carta interna de Google: No tenemos foso, y OpenAI tampoco.
GPT-4 es el resultado de una combinación profunda de ciencia e innovación en ingeniería. Hay innumerables trucos en el medio. Para el mundo exterior, si puede comprender la estructura de GPT-4, es como obtener la "receta para la alquimia". del modelo más fuerte. Este contenido brinda la arquitectura GPT-4, la infraestructura de entrenamiento e inferencia, la cantidad de parámetros, el conjunto de datos de entrenamiento, el número de token, el costo y el modelo MoE y otros parámetros y detalles de información con gran detalle.
Dylan y Gerald creen que la razón por la que OpenAI no revela la arquitectura de GPT-4 no es por las llamadas consideraciones de seguridad de la IA, sino porque esta arquitectura es fácil de copiar; George Hotz, conocido como el "hacker genio" , también expresó una opinión similar, sin embargo, George argumenta que GPT-4 consta de MoE de 8 modelos expertos, cada uno con alrededor de 1100 parámetros.
Los dos autores predicen que empresas como Google, Meta, Anthropic, Inflection, Character.ai, Tencent, ByteDance, Baidu, etc. tendrán capacidades de modelo iguales o incluso más potentes que GPT-4 a corto plazo. A pesar de que la arquitectura de GPT-4 se "copia fácilmente", en su opinión, OpenAI tiene el foso más duradero: la mayor cantidad de usuarios finales, talentos de ingeniería líderes y una ventaja de ser el primero en moverse en los cambios intergeneracionales en los modelos.
Recordatorio amistoso: los datos del artículo provienen de la investigación y la recopilación de múltiples partes del autor original, y no han sido confirmados por OpenAI. La investigación de Dylan Patel generalmente se considera altamente confiable y puede usarse como una buena referencia para GPT-4 materiales de investigación en profundidad. Además, creemos que las vistas fáciles de reproducir en el artículo pueden ser sospechosas de ser una "fiesta de titulares", porque, aparte de OpenAI y Google, los científicos que son buenos en la capacitación y el razonamiento del marco MoE complejo son actualmente escasos, y el GPT-4 actual es solo la primera generación de MoE. No es la respuesta final dada por OpenAI, y mucha experiencia en el proceso no está disponible para otros equipos, y estas experiencias definitivamente se convertirán en una ventaja única de OpenAI.
El siguiente es el índice de este artículo, y se recomienda leerlo en combinación con los puntos principales.
👇
01 Resumen
02 Estructura del modelo
03 Conjunto de datos
04 Estrategia paralela
05 Costo de entrenamiento
06 Ministerio de Educación
07 Razonamiento
08 Infra y costo de razonamiento
09 Mecanismo de atención multiconsulta
10 lotes consecutivos
11 Decodificación especulativa
12 Visión Multimodal
01.Resumen
Las capacidades de ingeniería de OpenAI y lo que han creado son asombrosas, pero eso no significa que las soluciones sean insuperables. Su solución es muy elegante, y además implica la consideración y el equilibrio de una serie de factores complejos, y la ampliación de la escala del modelo es sólo una parte de ella. **El foso más duradero de OpenAI proviene de tres aspectos: primero, tienen la mayor cantidad de usuarios del mundo real, segundo, talento de ingeniería líder y, por último, es probable que continúen manteniendo una ventaja en el desarrollo de modelos futuros. **
No solo es valioso comprender por qué GPT-4 eligió una determinada arquitectura, sino que, más recientemente, también describiremos los costos de capacitación e inferencia de GPT-4 en A100 y cómo usar H100 en la arquitectura del modelo de próxima generación.
De GPT-3 a GPT-4, OpenAI quiere aumentar el tamaño del modelo en 100. El núcleo de este proceso es, naturalmente, el problema de los costos**. Los transformadores densos son arquitecturas modelo de uso común, como OpenAI GPT-3, Google PaLM, Meta LLaMA, TII Falcon, MosaicML MPT, etc. En la actualidad, hay al menos 50 empresas que utilizan esta arquitectura para entrenar LLM, que es un buen ejemplo de arquitectura. , pero su escalabilidad es muy limitada.
AI Brick Wall discutió el costo de capacitación del modelo en este artículo, antes de que se lanzara GPT-4. Desde la perspectiva del costo de capacitación, el modelo denso (transformadores densos) está a punto de enfrentar su propia "pared de ladrillos de IA". Realice algunos esfuerzos arquitectónicos de nivel superior.
AI Brick Wall: El hardware en esta etapa ha alcanzado su límite en términos de Transformador denso, por lo que es poco práctico y costoso expandir continuamente la escala del modelo a un modelo con un billón o diez billones de parámetros. Antes de la nueva generación de hardware, se necesitan varias estrategias y técnicas para reducir los costos de capacitación, mejorar la eficiencia de la capacitación del modelo y expandir el modelo a una mayor cantidad de parámetros. El autor cree que esta serie de tecnologías se realizará alrededor de 2023, y las empresas que pueden participar incluyen OpenAI, Google, DeepMind, Microsoft y Nvidia. Muchas de estas estrategias se presentaron en la conferencia NeurIPS y es probable que tengan un gran impacto en las aplicaciones de IA.
Pero durante los últimos 6 meses, nos dimos cuenta de que el costo de la capacitación podría no ser un problema. Aunque gastar millones o incluso cientos de millones de dólares para entrenar modelos parece una locura, en realidad es trivial para los gigantes tecnológicos. Un modelo grande es un proyecto de inversión de capital (elemento de línea de Capex), y cuanto más grande sea el modelo, mejor será el resultado. El único factor limitante es si los seres humanos tienen suficiente capacidad y tiempo para proporcionar comentarios y modificar la arquitectura del modelo mientras se expande el modelo. escala.
Meta invierte más de $ 16 mil millones en el "Metaverso" cada año, Google gasta alrededor de $ 10 mil millones en nuevos proyectos, Amazon gasta más de $ 50 mil millones en Alexa y la criptomoneda gasta en "cosas sin valor". Más de $ 100 mil millones desperdiciados. La sociedad en su conjunto gastará más de 100.000 millones de dólares para crear supercomputadoras capaces de entrenar modelos a gran escala que se puedan producir de varias maneras. Múltiples países y empresas repetirán el esfuerzo de capacitación** en modelos grandes, que son la nueva "carrera armamentista en el espacio"**. En comparación con el "desperdicio de recursos" anterior, el valor real se obtendrá a corto plazo debido a la aparición de asistentes humanos y agentes autónomos.
Pero en los próximos años, Google, Meta y OpenAI, Microsoft y otras compañías gastarán más de 100 mil millones de dólares estadounidenses para construir una supercomputadora para entrenar el modelo.
La cuestión más importante de expandir el tamaño del modelo, la verdadera "pared de ladrillos de IA", radica en el enlace de inferencia. El objetivo aquí es desacoplar el poder de cómputo de entrenamiento del poder de cómputo de inferencia, por lo que para cualquier modelo que se implemente, tiene sentido entrenar más allá del Chinchilla-óptimo de DeepMind. (Nota de selección: aumentar la cantidad de datos de entrenamiento para que el modelo aprenda demasiado es una estrategia para aumentar la capacidad de los modelos pequeños y reducir el costo del razonamiento). Esta es la razón por la que se usa una arquitectura de modelo disperso (arquitectura de modelo disperso). El razonamiento bajo esta arquitectura no requiere que todos los parámetros estén activos.
Óptimo de Chinchilla: del artículo de Deepmind Training Compute-Optimal Large Language Models, indica qué tamaño de modelo y tamaño de datos se deben usar para obtener la pérdida más baja cuando hay un número total fijo de FLOPS.
Actualmente, Chinchilla-optimal es la estrategia óptima en el lado del entrenamiento, y entrenar con más tokens para superar el efecto de Chinchilla-optimal es la estrategia óptima en el lado de la inferencia. Y debido a que el costo del razonamiento representa la "cabeza grande", la mayoría de las empresas elegirán una estrategia que supere a la óptima de Chinchilla.
La esencia del problema en el enlace de inferencia es que el costo de implementar el modelo para los usuarios y los agentes es demasiado alto. El costo de la inferencia es varias veces mayor que el costo de la capacitación, y resolver este problema es el objetivo de OpenAI en términos de infraestructura y arquitectura del modelo.
Cuando se trata de inferencias con modelos grandes, especialmente modelos densos, el tamaño del modelo puede convertirse en un problema de múltiples variables. En el dispositivo AI- espada de doble filo Este artículo ha discutido la situación en el contexto de la computación de borde. En pocas palabras, los dispositivos terminales nunca pueden tener el rendimiento y el ancho de banda de memoria suficiente necesarios para cumplir con la implementación de grandes modelos de lenguaje Incluso si el ancho de banda es suficiente, la eficiencia de los dispositivos de borde en la utilización de recursos informáticos de hardware es muy baja. Los centros de datos enfrentan problemas similares.
La utilización de los recursos informáticos es muy importante para los centros de datos y las nubes. (Nota: en la actualidad, el límite superior de uso de GPU/TPU en la industria es de alrededor del 50 %). también se actualiza constantemente Una generación de software que impulsa una mayor utilización de FLOPS al permitir un movimiento de datos más inteligente alrededor de los chips, entre chips y entre memorias.
FLOPS: Operaciones de punto flotante por segundo, es una unidad utilizada para medir la velocidad de las operaciones de la computadora. Cuanto mayor sea el FLOPS, mejor podrá manejar el problema la computadora. El poder de cómputo de la GPU proviene principalmente de los FLOPS que puede proporcionar. Cuanto mayor sea el FLOPS proporcionado por la GPU, mayor será su poder de cómputo.
En esta etapa, los casos de uso para la inferencia LLM son en su mayoría "asistentes en vivo", lo que significa que debe lograr un rendimiento lo suficientemente alto para ser realmente útil para los usuarios. Tomando a los humanos como una analogía, la velocidad de lectura promedio de los humanos es de aproximadamente 250 palabras por minuto, y algunas personas pueden alcanzar aproximadamente 1,000 palabras por minuto.En correspondencia con el modelo, significa generar al menos 8.33 tokens por segundo, preferiblemente 33.33 tokens por segundo token, es posible satisfacer todas las necesidades humanas.
Sin embargo, debido a la limitación del ancho de banda de la memoria, incluso en el servidor GPU NVIDA H100 más reciente, el modelo denso (modelo denso) con billones de parámetros no puede lograr este rendimiento matemáticamente. Cada vez que se genera un token, debe cargarse desde la memoria al chip, y luego este token se envía nuevamente para generar el siguiente token. Además, la caché KV (KV Cache) para implementar el mecanismo de atención también requiere ancho de banda adicional.
Caché KV (KV Cache): Durante el proceso de muestreo, el modelo Transformer realizará una operación de autoatención (Self-Atention), para lo cual es necesario extraer un valor clave para cada elemento de la secuencia actual (si es /context o un token generado) (clave-valor, KV) vector. Estos vectores se almacenan en una matriz, a menudo denominada caché KV o caché pasada.
La función de la caché KV es evitar volver a calcular el vector clave-valor cada vez que se muestrea el token. El uso de valores K y V precalculados puede ahorrar mucho tiempo de cálculo, aunque ocupará algo de espacio de almacenamiento. La caché KV juega un papel muy importante en el modelo Transformer y puede ayudar a mejorar en gran medida la eficiencia y el rendimiento del modelo.
Este diagrama supone que no fusionar cada operación es ineficiente y que los mecanismos de atención requieren un ancho de banda de memoria y una sobrecarga de hardware comparables a medida que se leen los parámetros. En realidad, incluso con bibliotecas "optimizadas" como NVIDIA FasterTransformer, la sobrecarga general será mayor.
La figura anterior muestra el ancho de banda de memoria requerido para servir a un LLM de un solo usuario con un rendimiento suficientemente alto. De esta imagen se puede ver que:
• Incluso un ancho de banda 8 veces mayor que el de H100 no puede servir a un modelo denso con una escala de 1 billón de parámetros a una velocidad de 33,33 tokens por segundo;
• Además, la utilización de FLOPS de 8x H100 todavía está por debajo del 5 % a 20 tokens por segundo, lo que da como resultado un costo de inferencia extremadamente alto.
De hecho, para el sistema H100 paralelizado con tensor de 8 vías actual, la restricción de inferencia es de unos 300 000 millones de parámetros de avance.
Sin embargo, OpenAI está alcanzando la velocidad de lectura humana con el A100 y modelos con más de 1 billón de parámetros, ampliamente disponibles a un bajo precio de $0,06 por 1000 tokens, y esto es posible precisamente debido a su arquitectura escasa.
A continuación, analizaremos la arquitectura del modelo GPT-4, la infraestructura para el entrenamiento y el razonamiento, la cantidad de parámetros, la composición del conjunto de datos de entrenamiento, la cantidad de tokens, la cantidad de capas, estrategias paralelas, codificadores visuales multimodales, etc. detrás de una serie de diferentes diseños de ingeniería Consideraciones, técnicas de implementación y cómo OpenAI aborda los cuellos de botella en la inferencia de modelos grandes.
02. Estructura del modelo
La escala de GPT-4 es más de 10 veces mayor que la de GPT-3, estimamos que tiene alrededor de 1,8 billones de parámetros, y estos parámetros se distribuyen en 120 capas de transformador. A modo de comparación, los parámetros de GPT-3 son alrededor de 1750 mil millones. (Nota: GPT-3 tiene solo 12 capas de transformador y el número de capas es 1/10 de GPT-4).
Para controlar los costos, OpenAI optó por utilizar el modelo MoE. OpenAI utiliza 16 expertos de tipo MLP.2 en el modelo, cada uno con alrededor de 111 mil millones de parámetros. Dos de estos modelos expertos son llamados en cada pase hacia adelante.
• Mezcla de expertos (MoE): el modelo MoE es una arquitectura de aprendizaje profundo, que generalmente consta de múltiples expertos (Expertos), cada experto es responsable de procesar diferentes aspectos de los datos de entrada y tiene su propio conjunto de parámetros (hay también algunos parámetros, como el embebido, que pueden ser compartidos por todos los expertos, es decir, parámetros compartidos). En el proceso de razonamiento del modelo, de acuerdo con las diferentes características de los datos de entrada, el modelo enrutará la entrada a diferentes expertos. Cada experto procesa la entrada asignada correspondiente de acuerdo con su conjunto de parámetros y completa la salida. La salida final es el integración de la salida de cada experto.
• MLP: Perceptrón multicapa (Multi-Layer Perceptron). MLP es una red neuronal artificial que incluye múltiples capas ocultas. Generalmente hay múltiples expertos independientes de MLP en el modelo MoE.
Hay mucha literatura discutiendo cómo enrutar (asignar) cada token pendiente a un modelo experto, pero se dice que el conjunto de algoritmos que usa OpenAI es bastante simple, al menos GPT-4 es así.
Además, en el mecanismo de atención se utilizan alrededor de 55 mil millones de parámetros compartidos.
Cada inferencia directa (que genera un token) solo utiliza alrededor de 280 mil millones de parámetros y 560 TFLOP, en comparación con aproximadamente 1,8 billones de parámetros y 3700 TFLOP necesarios para cada inferencia directa si el modelo denso se usa puramente.
03. Conjunto de datos
GPT-4 se entrenó en alrededor de 13 billones de tokens, lo cual es razonable considerando que CommonCrawl RefinedWeb contiene alrededor de 5 billones de tokens de alta calidad. Como referencia, los modelos Chinchilla de Deepmind y PaLM de Google se entrenaron con alrededor de 1,4 billones de tokens y alrededor de 0,78 billones de tokens, respectivamente, y se dice que PaLM2 está entrenado con alrededor de 5 billones de tokens.
CommonCrawl Web refinada:
CommonCrawl es un proyecto sin fines de lucro que tiene como objetivo crear y mantener un conjunto de datos de Internet abierto y accesible que utiliza tecnología de rastreo web para escanear regularmente páginas web en Internet y organizar las páginas web y los metadatos y archivos relacionados. CommonCrawl RefinedWeb es una biblioteca de textos de alta calidad que CommonCrawl ha seleccionado a partir de datos recopilados sin procesar después de una revisión algorítmica y humana.
El conjunto de datos utilizado por OpenAI para entrenar GPT-4 no es de 13 billones de tokens únicos. Por el contrario, debido a la falta de tokens de alta calidad, este conjunto de datos contiene varias épocas. Hay 2 épocas para datos basados en texto y 4 épocas para datos basados en código. (Nota: Esto se refiere a algunos textos y códigos de alta calidad que el modelo ha aprendido muchas veces). Esto está lejos de lograr el nivel óptimo de Chinchilla (el modelo debe entrenarse con el doble de tokens), lo que también muestra que la red sea fácil de obtener token no es suficiente. Los tokens de texto de alta calidad que realmente existen en la red deberían ser 1000 veces mayores que los disponibles en la actualidad, y los tokens de audio y video son incluso más, pero la recopilación de estos tokens no se puede lograr simplemente mediante el web scraping. Desafortunadamente, no hemos encontrado mucha información sobre los datos de RLHF de OpenAI.
Una época se refiere al proceso de usar todas las muestras en el conjunto de entrenamiento completo (conjunto de entrenamiento) para entrenar el modelo una vez. Específicamente, una época incluye múltiples pasos de entrenamiento (pasos de entrenamiento), cada paso de entrenamiento es ingresar un pequeño lote de muestras en el modelo para entrenamiento y actualizar los parámetros del modelo para minimizar la función de pérdida (función de pérdida).
Si la época es demasiado pequeña, es posible que el modelo no pueda hacer un uso completo de la información en el conjunto de entrenamiento, lo que resulta en un ajuste insuficiente, es decir, el modelo no puede ajustarse bien a los datos de entrenamiento, lo que resulta en un rendimiento deficiente en el conjunto de prueba . Por el contrario, si una época es demasiado grande, el modelo puede estar sobreajustado, aprendiendo demasiado ruido y características locales en el conjunto de entrenamiento, mientras ignora las características globales.
En la etapa de pre-entrenamiento, la longitud del contexto (seqlen) es de 8k. La versión de contexto de 32k de GPT-4 se implementa además del ajuste fino de 8k después del entrenamiento previo.
El tamaño del lote se incrementó gradualmente en el clúster durante varios días, pero al final, OpenAI usó un tamaño de lote de hasta 60 millones. Por supuesto, dado que no todos los parámetros ven todos los parámetros, este es solo un tamaño de lote de 7,5 millones por experto.
El tamaño del lote se refiere al número de muestras de entrenamiento para cada iteración (iteración) o paso adelante (paso adelante). Durante el entrenamiento del modelo, los datos se dividen en lotes para el entrenamiento y el tamaño del lote indica la cantidad de muestras en cada lote. La ventaja del entrenamiento por lotes es que puede evitar limitaciones de memoria y ahorrar recursos informáticos para el cálculo repetido de resultados intermedios.
El tamaño del tamaño del lote tiene un gran impacto en el efecto de entrenamiento y la velocidad del modelo. Cuanto mayor sea el tamaño del lote, mayor será el cálculo de los parámetros de actualización cada vez, pero el proceso de entrenamiento será más estable, porque las muestras en cada lote pueden promediar el ruido y la incertidumbre. Por otro lado, si el tamaño del lote es demasiado pequeño, el proceso de entrenamiento puede volverse inestable y requerir más pasos de entrenamiento para converger a la solución óptima. Además, el tamaño del lote también estará limitado por los recursos de hardware. Por lo tanto, en aplicaciones prácticas, es muy importante elegir un tamaño de lote adecuado.
04. Estrategia paralela
El procesamiento paralelo en todas las GPU A100 es muy importante.
OpenAI utiliza paralelismo de tensor de escala de 8 vías (8 vías) (paralelismo de tensor), la razón es de 8 vías (8 vías) porque este es el límite de NVLink. Además, también escuchamos que OpenAI está utilizando una estrategia de paralelismo de tubería de 15 vías (15 vías). Teóricamente, 15 vías es demasiado considerando la comunicación de datos y el tiempo de computación, pero también es razonable si están limitados por la capacidad de la memoria.
Hay varios paradigmas paralelos distribuidos clásicos en el entrenamiento de modelos grandes, a saber, Pipeline Parallelism, Data Parallelism y Tensor Parallelism. FastSpeed, el marco de capacitación distribuido de código abierto de Microsoft, combina estos tres paradigmas paralelos.
Si solo usa el paralelismo de canalización y el paralelismo de tensor, los parámetros en cada GPU necesitan alrededor de 30 GB en FP16, y una vez que se tienen en cuenta el caché de KV y la sobrecarga de KV, si la mayoría de las GPU utilizadas por OpenAI son A100 de 40 GB, esta arquitectura de It es también razonable en teoría. OpenAI puede usar ZeRo etapa 1, FSDP a nivel de bloque o paralelismo híbrido de datos compartidos.
• Sobrecarga de KV (KV overhead): se refiere a la carga causada por la sobrecarga adicional en el sistema de almacenamiento de KV. Estos gastos generales pueden incluir metadatos para almacenar y administrar pares clave-valor, estructuras de índice, replicación y sincronización de datos, comunicación de red y más. Un aumento en la sobrecarga de KV puede provocar una degradación del rendimiento, mayores requisitos de almacenamiento y una mayor complejidad del sistema.
• ZeRo Etapa 1: ZeRO (Zero Redundancy Optimizer) significa que cada tarjeta almacena un estado de optimización completo. Si cada tarjeta almacena solo una parte del estado del optimizador, los estados del optimizador de todas las tarjetas juntos forman un estado completo, es decir, Pos (Partition Optimizer States), que se denomina ZeRO-stage1.
• FSDP a nivel de bloque: se refiere a la tecnología de cuantización dinámica de precisión completa (Full Precision Dynamic Quantization) basada en bloques. Se puede conservar una mayor precisión del modelo durante el entrenamiento y el razonamiento, lo que reduce el costo de la inferencia del modelo.
La razón por la que no se usa el modelo completo FSDP puede ser el alto costo de comunicación. Si bien OpenAI tiene una red de alta velocidad entre la mayoría de los nodos, probablemente no todos, creemos que hay al menos algunos clústeres con un ancho de banda de conexión mucho menor que otros.
No está claro cómo OpenAI evita burbujas enormes con un paralelismo de tubería tan alto. Lo más probable es que solo hayan pagado el costo.
Burbuja: El retraso o tiempo de espera en cada lote debido al alto grado de paralelismo de la tubería. Significa que en el proceso de computación altamente paralela, debido a las diferentes velocidades de cálculo de las diferentes partes, es posible que algunas partes deban esperar a que otras partes completen el cálculo, lo que genera demoras o tiempo de inactividad. En este caso, "burbuja" se refiere a estos intervalos inactivos o de espera. Esta oración significa que pueden simplemente aceptar que hay algún tiempo de inactividad o retraso en el proceso de cálculo.
05. Coste de la formación
OpenAI usó alrededor de 2,15e25 FLOPS en el entrenamiento de GPT-4, en alrededor de 25 000 GPU A100 durante 90 a 100 días de entrenamiento, donde la utilización máxima de la potencia de cómputo fue de alrededor del 32 % al 36 %. **
Esta utilización extremadamente baja se debe en parte a la gran cantidad de fallas que requieren reiniciar los puntos de control, y las burbujas mencionadas anteriormente consumen una gran cantidad de costos.
Otra razón es que la reducción total en tantas GPU es muy costosa. Especialmente si sospechamos que el clúster en realidad está formado por muchos clústeres más pequeños con conexiones de red relativamente débiles, como conexiones sin bloqueo de 800G/1,6T entre diferentes partes del clúster, pero algunos solo pueden conectarse a una velocidad de 200G/400G.
all-reduce es una operación de comunicación en computación paralela, que se utiliza para realizar una reducción global de datos en computación distribuida. En el aprendizaje profundo distribuido, all-reduce es una operación de comunicación común para compartir y agregar información de gradiente entre múltiples nodos informáticos, a fin de actualizar los parámetros del modelo durante el entrenamiento.
Si su costo en la nube es de aproximadamente $ 1 por hora por A100, eso equivale a ~ $ 63 millones solo para esta sesión de capacitación **. Esto no incluye todos los ensayos, intentos fallidos y otros costos de recopilación de datos, RLHF, personal, etc. Cuando se tienen en cuenta estos factores, el costo real es mucho mayor. Además, también debe tener en cuenta que necesita tener un equipo para completar la configuración del chip, el equipo de red y el centro de datos, asumir la inversión de capital (Capex) y alquilárselos.
Actualmente, el preentrenamiento se puede realizar en aproximadamente 55 días con aproximadamente 8192 H100 a un costo total de $21,5 millones, cada GPU H100 cuesta $2/hora.
Esperamos que nueve empresas tengan más GPU H100 para finales de año. Tal vez no todos estos H100 se utilicen para el entrenamiento de modelos, pero estas empresas definitivamente adoptarán modelos grandes y se convertirán en jugadores importantes. Meta espera tener más de 100 000 H100 para fin de año, una parte significativa de los cuales se implementará en sus propios centros de datos para inferencia, aunque su clúster individual más grande tendrá más de 25 000 GPU H100. (Nota: los recursos informáticos de Meta harán que la capacidad de LLaMA para evolucionar se convierta en una variable importante para el código abierto y la implementación privada). Muchas empresas entrenarán un modelo con la misma capacidad que GPT-4 antes de finales de este año.
06.MoE
MoE es una forma efectiva de reducir la cantidad de parámetros durante la inferencia, mientras que también aumenta la cantidad de parámetros, lo que ayuda a codificar más información por token de entrenamiento. Debido a que es muy difícil obtener suficientes tokens de alta calidad, es necesario elegir la arquitectura MoE. Porque si OpenAI realmente quiere implementar Chinchilla-Optimal, ahora deben entrenar el doble de tokens.
Dicho esto, OpenAI hace varias concesiones. Por ejemplo, lidiar con MoE durante la inferencia es muy difícil porque no todas las partes del modelo se usan al generar cada token. Esto significa que algunas partes pueden estar inactivas mientras se utilizan otras partes. Esto puede afectar seriamente la utilización cuando se presta servicio a los usuarios.
Los investigadores demostraron que el uso de 64 a 128 expertos produjo mejores resultados de pérdida que el uso de 16 expertos, pero esto es solo una investigación. Hay varias razones para reducir el número de expertos. Una de las razones por las que OpenAI eligió a 16 expertos es que tener más expertos hace que sea más difícil generalizar y lograr la convergencia. Dada una carrera de entrenamiento tan grande, OpenAI optó por ser más conservador en la cantidad de expertos.
Además, usar menos expertos es útil para las arquitecturas de inferencia. Hay varias compensaciones complejas al pasar a una arquitectura de inferencia MoE. Comencemos con las compensaciones de inferencia básicas de LLM y luego exploremos los problemas que enfrentó OpenAI y las elecciones que tomaron.
07. Razonamiento
En esta parte, primero queremos señalar que todas las empresas LLM que contactamos piensan que la biblioteca de inferencia FasterTransformer de NVIDIA es bastante mala y que TensorRT es aún peor. Sin la capacidad de usar las plantillas de Nvidia y modificarlas, lo que significa crear su propia solución desde cero, NVIDIA necesita resolver este problema lo antes posible para adaptarse a las necesidades de la inferencia LLM, de lo contrario, se convertirá en una herramienta abierta de hecho. para agregar soporte de hardware de terceros. Están llegando más y más modelos grandes, y si NVIDIA no puede proporcionar una ventaja de software en la inferencia, y los núcleos aún deben escribirse a mano, entonces el MI300 de AMD y otro hardware tendrán un mercado mucho más grande.
Hay 3 factores clave en el enlace de inferencia de LLM, que están relacionados principalmente con la cantidad de chips utilizados.
1. Latencia
El modelo debe responder en un plazo razonable. La gente no quiere esperar unos segundos antes de comenzar a recibir resultados en una aplicación de chat. Los tiempos de procesamiento de los tokens de entrada y salida pueden fluctuar.
2. Rendimiento
El modelo debe generar una cierta cantidad de tokens por segundo. El uso humano es de aproximadamente 30 tokens por segundo, y el rendimiento puede ser mayor o menor para otros casos de uso.
3. Utilización
El hardware que ejecuta el modelo debe lograr una alta utilización o el costo será prohibitivo. Si bien es posible lograr una mayor utilización agrupando más solicitudes de usuarios con mayor latencia y menor rendimiento, esto aumenta la dificultad.
La inferencia LLM es principalmente para equilibrar dos factores principales, el ancho de banda de la memoria y la computación.
En términos simples, cada parámetro debe leerse con dos FLOP asociados. Por lo tanto, la relación de la mayoría de los chips (por ejemplo, H100 SXM tiene solo 3 TB/s de ancho de banda de memoria, pero tiene 2000 TFLOP/s FP8) está completamente desequilibrada en la inferencia con el tamaño de lote 1. Si solo se atiende a un usuario, es decir, con un tamaño de lote de 1, el ancho de banda de memoria requerido para transmitir cada parámetro para cada generación de token domina el tiempo de inferencia y el tiempo de cálculo es casi insignificante.
Para poder escalar modelos grandes a varios usuarios, el tamaño del lote debe ser mayor que 1 y varios usuarios comparten el costo de lectura de parámetros. Por ejemplo, con un tamaño de lote de 256 o 512, cada byte de memoria leído corresponde a 512 FLOP/s o 1024 FLOP/s. Esta relación está más cerca de la relación de ancho de banda de memoria a FLOPS del H100. Ayuda a lograr una mayor utilización, pero tiene la desventaja de una mayor latencia.
Muchas personas piensan que la capacidad de la memoria es el principal cuello de botella para la inferencia LLM, ya que el tamaño del modelo puede caber en varios chips, pero esta vista puede ser problemática. Aunque la inferencia de modelos grandes requiere múltiples chips, y una mayor capacidad de memoria conduce a menos chips adaptados, en realidad es mejor usar más chips de los necesarios para reducir la latencia, aumentar el rendimiento y se pueden usar lotes más grandes para aumentar continuamente la utilización.
Google también mencionó el tratamiento de los tres problemas anteriores en el artículo de inferencia de PaLM. Vale la pena señalar que **esto es para un modelo denso como PaLM, no para un modelo disperso como GPT4. **
Si una aplicación requiere la latencia más baja posible, necesitamos más chips y dividir el modelo de tantas formas como sea posible para que sea económico. Los tamaños de lote más pequeños permiten una latencia más baja, pero los tamaños de lote más pequeños también dan como resultado una [utilización] de MFU más pobre, lo que resulta en un costo total más alto por token (en segundos de chip o dólares) .
Si una aplicación requiere inferencia fuera de línea y la latencia no es un problema, entonces el objetivo principal es maximizar el rendimiento por chip (es decir, minimizar el costo total por token). Aumentar el tamaño del lote es más eficiente, ya que los tamaños de lote más grandes generalmente conducen a una mejor MFU [utilización], pero ciertas estrategias de partición que no son efectivas para tamaños de lote pequeños crecen a medida que el tamaño del lote crece y se vuelven efectivas.
**Más chips y tamaños de lote más grandes son más baratos porque aumentan la utilización, pero esto también introduce una tercera variable, el tiempo de conexión en red. ** El método de implementar el modelo en múltiples chips puede resolver el retraso de manera efectiva, pero a expensas de la utilización.
Tanto la parte de carga de peso del tiempo de almacenamiento como el tiempo de cálculo sin atención son proporcionales al tamaño del modelo e inversamente proporcionales al recuento de chips. Para un diseño de partición dado, el tiempo requerido para la comunicación de chip a chip disminuye menos rápidamente (o no disminuye en absoluto) con la cantidad de chips utilizados, por lo que se convierte en un problema cada vez más difícil a medida que aumenta la cantidad de chips. embotellamiento.
Nos dimos cuenta de que los requisitos de memoria de la caché KV aumentaron a medida que crecía el tamaño y el tamaño del lote.
Si una aplicación necesita generar texto con contextos de atención larga (contextos de atención larga), aumentará considerablemente el tiempo de inferencia. Para un modelo con más de 500B de atención de varios cabezales, la caché de atención de KV puede llegar a ser muy grande: para un modelo con un tamaño de lote de 512 y una longitud de contexto de 2048, la cantidad total de caché de KV es de 3 TB, que es 3 veces el tamaño del parámetro del modelo. La memoria en el chip (memoria en el chip) necesita cargar el caché KV de la memoria fuera del chip (memoria fuera del chip), que se carga cada vez que se genera un token.Durante este período, el núcleo informático del chip es básicamente inactivo.
Las longitudes de secuencia largas son particularmente problemáticas para el ancho de banda de la memoria y la capacidad de la memoria. La razón por la que GPT-3.5 turbo de OpenAI con contextos de 16k y GPT-4 con contextos de 32k son caros es que no pueden aceptar lotes más grandes debido a limitaciones de memoria.
Los lotes más pequeños dan como resultado una menor utilización del hardware. Además, la memoria caché KV se hincha a medida que aumenta la longitud de la secuencia. La caché KV no se puede compartir entre usuarios, por lo que se requieren lecturas de memoria separadas, lo que reduce aún más el ancho de banda de la memoria. Consulte a continuación para obtener más información sobre MQA.
08. Infra y costo de razonamiento
Infra
La arquitectura de MoE hace que la inferencia de GPT-4 enfrente desafíos en términos de latencia, rendimiento y utilización. Debido a que el pase directo de cada token se puede enrutar a diferentes modelos expertos, es muy difícil lograr una baja latencia, un alto rendimiento y una alta utilización en este caso, especialmente en lotes de gran tamaño.
La arquitectura GPT-4 de OpenAI contiene 16 modelos expertos y cada canal directo tiene 2 enrutadores. Esto significa que con un tamaño de lote de 8, la lectura de parámetros de cada experto solo puede ocupar "1" del tamaño del lote. Más en serio, esto también da como resultado un tamaño de lote de 8 para un experto, mientras que el tamaño de lote de otros expertos puede ser solo 4, 1 o 0.
Además, el algoritmo de enrutamiento enruta el pase de reenvío en diferentes direcciones cada vez que se genera un token, lo que da como resultado variaciones significativas en la latencia de token a token y el tamaño del lote experto. Es decir, cuando se procesan diferentes tokens, se pueden asignar diferentes expertos a diferentes tareas, y tanto la carga computacional como el tamaño del lote pueden variar en consecuencia.
La infraestructura de inferencia es una de las principales consideraciones para que OpenAI elija un pequeño número de expertos en el diseño de MoE. Si utilizan más expertos, el ancho de banda de la memoria se convierte en un cuello de botella mayor para la inferencia. OpenAI a menudo logra tamaños de lote superiores a 4k en sus propios clústeres de inferencia, lo que significa que incluso con un equilibrio de carga óptimo entre los expertos, cada experto solo puede alcanzar un tamaño de lote de aproximadamente 500. Esto requiere un uso muy grande para lograrlo.
Nuestro entendimiento es que OpenAI ejecuta la inferencia en un grupo de 128 GPU y tiene múltiples grupos de este tipo en diferentes centros de datos y regiones geográficas. La inferencia se realiza en paralelo con tensores de 8 vías y canalizaciones de 16 vías. Con 8 GPU por nodo, cada GPU tiene solo alrededor de 130 B de parámetros, o menos de 30 GB por GPU en FP16 y menos de 15 GB en FP8/int8. Esto permite ejecutar la inferencia en un A100 de 40 GB, siempre que el tamaño de caché de KV para todos los lotes no se hinche demasiado.
FP16, FP8 e int8 son diferentes representaciones de precisión numérica (precisión), que a menudo se usan en el proceso de cálculo en el aprendizaje profundo para reducir el uso de memoria y recursos informáticos, mejorando así la eficiencia del entrenamiento y el razonamiento del modelo.
FP16, FP8 e int8 se refieren respectivamente a números de punto flotante de 16 bits, números de punto flotante de 8 bits y números enteros de 8 bits. Su precisión es menor que la de los números de punto flotante de precisión simple de 32 bits (FP32 ), pero pueden reducir en gran medida la memoria y los recursos informáticos. Se utilizan para acelerar el entrenamiento de modelos y la inferencia en el aprendizaje profundo. Por ejemplo, el uso de FP16 puede reducir a más de la mitad el tiempo de cálculo sin perder demasiada precisión, mientras que el uso de int8 puede reducir el tiempo de cálculo en un factor de aproximadamente 4 sin perder demasiada precisión.
Cabe señalar que el uso de cálculos de baja precisión puede tener un cierto impacto en la precisión del modelo, por lo que se requiere un compromiso entre precisión y eficiencia, y se debe seleccionar el método de representación de precisión más apropiado de acuerdo con la tarea específica. requisitos
Para evitar que la comunicación de la red sea demasiado irregular y, al mismo tiempo, evitar el costo prohibitivo de volver a calcular la caché KV entre cada generación de tokens, las distintas capas que contienen varios expertos no se dividen en diferentes nodos para compartir la caché KV.
**Mayor dificultad para todas las futuras extensiones del modelo MoE y enrutamiento condicional. Es cómo lidiar con el límite de 120 capas de enrutamiento alrededor del caché KV. **
En el modelo MoE, la cantidad de capas de enrutamiento por rama no puede exceder las 120 capas; de lo contrario, la memoria caché KV no se puede manejar de manera efectiva. Esto se debe a que durante el proceso de inferencia del modelo, cada rama necesita calcular el caché de KV, lo que genera un aumento en el costo computacional.
Una solución simple a este problema es colocar una ruta de expansión en 15 nodos diferentes según el límite de capa de 120. De esta forma, la carga computacional se puede distribuir uniformemente en diferentes nodos, mejorando así la eficiencia y el rendimiento del modelo. Sin embargo, dado que el primer nodo necesita realizar la carga y la incorporación de datos, es importante cómo colocar menos capas en el nodo principal del clúster de inferencia.
Además, en el proceso de codificación y decodificación de los datos de entrada, puede haber algo de ruido sobre la decodificación inferencial, que analizaremos más adelante. Una cuestión más crítica es determinar si se debe creer en ese ruido. Esto también puede explicar por qué tiene sentido incluir menos capas en el nodo principal.
costo de razonamiento
En comparación con el modelo Davinchi con parámetros 175B, GPT-4 tiene 1,6 veces los parámetros de avance, pero el costo es 3 veces mayor que el de Davinchi. Esto se debe principalmente a que GPT-4 requiere un clúster más grande y logra una menor utilización.
Suponemos que usar 128 A100 para la inferencia con una longitud de contexto GPT-4 de 8k (seqlen) cuesta alrededor de $0.0049 por 1k tokens. Al usar 128 H100 para la inferencia en el contexto GPT-4 8k, el costo por 1k tokens es de aproximadamente $0.0021. (Nota: el precio actual de GPT-4-8k es 0,03/1k tokens de entrada, 0,06/1k tokens de salida. Actualmente, el uso de chips de inferencia por parte de OpenAI no será tan extravagante como especula el autor. Este cálculo se puede usar como un valor más bajo destinado a futuras reducciones de precios). Es importante tener en cuenta que **estos costos se calculan con una utilización alta y tamaño de lote. **
También es posible que nuestra suposición sea incorrecta, dado que la utilización de los clústeres de OpenAI a veces puede ser muy baja.
Nuestra hipótesis es que OpenAI apaga el clúster durante las recesiones y reutiliza esos nodos para otras tareas, como reanudar el entrenamiento de puntos de control de modelos de prueba pequeños o experimentar con varias técnicas nuevas. Hacerlo ayuda a mantener bajos los costos de inferencia; de lo contrario, la utilización de OpenAI podría ser aún menor, lo que implica más del doble del costo estimado.
Reanude el entrenamiento de puntos de control de un modelo de prueba pequeño, por lo general, cuando entrene un modelo de aprendizaje profundo, reinicie el entrenamiento de un modelo más pequeño (p. ej., un subconjunto usando solo un subconjunto de) para probar rápidamente nuevas estructuras o algoritmos del modelo en un corto período de tiempo . Este enfoque puede ayudar a los investigadores a iterar rápidamente en el diseño del modelo y encontrar estructuras y parámetros de modelo óptimos.
09. Mecanismo de atención multiconsulta
El uso de Atención de Consultas Múltiples es bastante común, pero queremos enfatizar que OpenAI hace lo mismo. En general, solo se necesita 1 cabeza de atención y la capacidad de la memoria se puede reducir significativamente para el almacenamiento en caché de KV. Aun así, GPT-4 con contextos de 32k ciertamente no puede ejecutarse en el A100 de 40GB, y el tamaño máximo de lote de 8k ya está limitado. Si no hay MQA, el tamaño máximo de lote de 8k se verá muy limitado y los beneficios económicos se reducirán considerablemente.
• Atención de consultas múltiples (MQA): decodificación de transformador rápido: todo lo que necesita es un cabezal de escritura
En el mecanismo de atención tradicional, una consulta (query) se empareja con un conjunto de pares clave-valor para obtener una representación ponderada para cada clave. Mientras que en la atención de múltiples consultas, hay múltiples consultas, y cada consulta se compara con pares clave-valor para obtener una representación ponderada diferente para cada clave. Este proceso puede verse como la codificación de la entrada bajo múltiples "vistas" diferentes, lo que da como resultado una representación más completa y precisa.
• Cabeza de atención (Head): en un modelo de aprendizaje profundo, generalmente contiene varias capas (capas) y una cabeza (cabeza), que se utiliza para asignar la salida del modelo al espacio de salida deseado. La capa de encabezado generalmente se agrega al modelo para cumplir con tareas específicas. Por ejemplo, en tareas de procesamiento de lenguaje natural, el encabezado generalmente se usa para convertir la salida del modelo en texto para la clasificación de texto y otras tareas. En el modelo de aprendizaje profundo, la cabeza suele ir seguida de la última capa, que se utiliza para convertir la salida de la última capa en la forma de salida deseada.
10. Procesamiento por lotes continuo
Para permitir cierto grado de latencia máxima y optimizar el costo de la inferencia, OpenAI utiliza técnicas de procesamiento por lotes continuo y de tamaño de lote variable. Este enfoque puede mejorar la utilización de los recursos informáticos sin sacrificar el rendimiento del modelo y lograr una latencia más baja y un mayor rendimiento durante el proceso de inferencia del modelo. Si no comprende el concepto de procesamiento por lotes continuo, vale la pena leer el artículo oficial de AnyScale Cómo el procesamiento por lotes continuo permite un rendimiento 23x en la inferencia LLM mientras reduce la latencia p50. (Nota de Pickup: el marco de computación distribuida Ray desarrollado por Anyscale es utilizado por OpenAI en la tubería de infraestructura del modelo. Pickup ha publicado investigaciones sobre esta empresa anteriormente).
Procesamiento por lotes continuo: una técnica utilizada durante la capacitación de aprendizaje profundo para mejorar la eficiencia de la capacitación y la utilización de recursos a través del hardware. El método de procesamiento por lotes tradicional es cargar una cierta cantidad de datos de entrenamiento en la memoria a la vez y luego entrenar con estos datos. Este método puede mejorar la eficiencia del entrenamiento, pero también puede desperdiciar espacio en la memoria.
El procesamiento por lotes continuo consiste en dividir los datos de entrenamiento en varios lotes pequeños, y solo cargar un lote pequeño para el entrenamiento cada vez. Una vez que se completa el entrenamiento, se carga el siguiente lote pequeño, y así sucesivamente, hasta completar todo el entrenamiento. proceso de entrenamiento del conjunto de datos. El uso de técnicas de procesamiento por lotes continuo puede mejorar la eficiencia del entrenamiento al tiempo que reduce el uso de la memoria y también puede mejorar la estabilidad y la generalización del modelo.
Fuente: Anyscale
11. Decodificación especulativa
Hay rumores de que OpenAI utiliza tecnología de decodificación especulativa en la tarea de inferencia del modelo GPT-4. Si bien no podemos estar seguros de la precisión de este mensaje, la variación general en la latencia y la variación de un token a otro, tanto para tareas de recuperación simples como para tareas más complejas, parece sugerir que esta técnica es posible. Sin embargo, debido a que hay demasiadas variables, no podemos confirmar si esta técnica se usa realmente.
Para evitar disputas de contenido, aquí se cita parte del contenido de Aceleración de la inferencia LLM con decodificación especulativa por etapas, y el contenido clave está en negrita.
El uso de LLM generalmente se divide en dos fases:
1. Etapa de prellenado
En esta fase, primero se proporciona una sugerencia () como entrada y se ejecuta a través del modelo para generar el caché KV y los primeros logits de salida. Entre ellos, logits es el vector de distribución de probabilidad generado por LLM en cada paso de tiempo, que se utiliza para representar la posibilidad de cada token. Esta fase de prepoblación suele ser rápida debido al cómputo paralelo.
2. Etapa de decodificación
En esta etapa, se selecciona un token de los logits de salida y se retroalimenta al modelo para generar logits para el siguiente token. Esto se repite hasta que se genera el número deseado de fichas. Dado que cada decodificación debe calcularse secuencialmente para producir un token, la intensidad aritmética de esta segunda etapa (es decir, FLOP/bytes de ancho de banda de memoria calculados) es muy baja cuando se ejecuta en lotes pequeños (nota clave: el cálculo de secuencia conduce a la infrautilización de la potencia informática. ) Por lo tanto, la decodificación suele ser la parte más costosa de la generación autorregresiva.
Esta es la razón por la que es mucho más económico ingresar tokens que generar tokens en las llamadas a la API de OpenAI.
La idea central de la decodificación especulativa es utilizar un modelo de borrador más pequeño y rápido para decodificar varios tokens antes de tiempo e introducirlos en el modelo de Oracle como un lote. Si las predicciones del borrador del modelo son correctas (es decir, están de acuerdo con las predicciones del modelo de Oracle), se puede usar un lote para decodificar varios tokens, ahorrando mucho ancho de banda de memoria y tiempo por token.
El modelo de Oracle hace referencia a un modelo LLM más grande y lento que se utiliza en el método de decodificación especulativa para validar las predicciones del modelo preliminar. El modelo de Oracle calculará la distribución de probabilidad del siguiente token en función de los resultados de predicción del modelo preliminar y los tokens generados anteriormente, y luego devolverá esta distribución de probabilidad al modelo preliminar como salida.
Al usar el modelo de Oracle para verificar los resultados de predicción del modelo preliminar, se pueden evitar errores y desviaciones en el proceso de decodificación posterior del modelo preliminar, mejorando así la precisión y la estabilidad del modelo. Al mismo tiempo, el modelo de Oracle también puede ayudar al borrador del modelo a aprender y comprender mejor la información de contexto en el modelo de lenguaje, mejorando así la capacidad de generación y el efecto del modelo.
Sin embargo, si el modelo más grande rechaza un token predicho por el modelo preliminar, el resto del lote se descarta y el algoritmo vuelve a la decodificación estándar token por token. La decodificación especulativa también se puede combinar con un esquema de muestreo de rechazo para muestrear tokens de la distribución original. Tenga en cuenta que este enfoque solo funciona en configuraciones de lotes pequeños donde el ancho de banda es el cuello de botella.
En resumen, la decodificación especulativa intercambia computación por ancho de banda, y hay dos razones clave por las que es un objetivo atractivo de optimización del rendimiento. En primer lugar, la decodificación especulativa no degrada en absoluto la calidad del modelo, ya que solo mejora la velocidad de inferencia y el rendimiento del modelo al modificar el proceso de cálculo de la etapa de decodificación. En segundo lugar, los beneficios que brinda generalmente son independientes de otros métodos, porque su ventaja radica en convertir los cálculos secuenciales en ejecución paralela, mientras que otros métodos comienzan principalmente con la estructura del modelo, los parámetros, el entrenamiento, etc. para la optimización.
Los métodos de inferencia actuales predicen una sola secuencia para cada lote. Sin embargo**, este método no se escala bien en el caso de lotes grandes o modelos de borrador de baja precisión. **Intuitivamente, para secuencias de tokens largas y continuas, la probabilidad de que los dos modelos predigan acuerdo disminuye exponencialmente, lo que significa que a medida que se expande la fuerza del algoritmo, el retorno de la decodificación especulativa disminuirá rápidamente.
Creemos que si OpenAI usa decodificación especulativa, es probable que solo la usen para secuencias cortas de aproximadamente 4 tokens de longitud. Además, algunas personas piensan que la disminución en el rendimiento del modelo GPT-4 se debe a que OpenAI agregó secuencias de baja probabilidad del modelo de decodificación especulativa al modelo de preentrenamiento, lo que puede no ser cierto.
Además, algunas personas piensan que el modelo Bard también usa decodificación especulativa porque Google espera que se genere la secuencia completa antes de enviarla al usuario, pero no creemos que esta suposición sea cierta.
12. Visual Multimodal
Vision Multi-Modal es probablemente la parte menos convincente de GPT-4, al menos en comparación con otras investigaciones. Hasta ahora, nadie ha explorado la comercialización de la investigación LLM multimodal.
Visión Multimodal: Se refiere al procesamiento y análisis conjunto de información de diferentes modalidades (como imágenes, textos, voces, etc.). Por lo general, la información de estas diferentes modalidades está relacionada semánticamente, por lo que combinarlas puede proporcionar información más rica y resultados de inferencia más precisos.
La capacidad visual multimodal de GPT-4 se logra a través de un codificador visual independiente del codificador de texto, y tiene un mecanismo de atención cruzada (Cross-Attention) con el codificador de texto, se dice que su arquitectura es similar al modelo Flamingo. El codificador de visión se ajustó con precisión en el modelo GPT-4 de 1,8 billones de parámetros; sin embargo, solo se entrenó previamente con aproximadamente 2 billones de tokens adicionales de datos de texto, no datos de visión.
Cross-Attention: Es un mecanismo para establecer asociaciones entre datos de múltiples secuencias, que ha sido ampliamente utilizado en procesamiento de lenguaje natural y visión artificial. En las tareas de secuencia a secuencia, como la traducción automática y el resumen de texto, se utiliza un mecanismo de atención cruzada para calcular la correlación entre las secuencias de origen y de destino, de modo que la información de la secuencia de origen se utilice al generar la secuencia de destino.
En las tareas de visión artificial, se utilizan mecanismos de atención cruzada para vincular imágenes y texto para su uso en tareas como la generación de descripciones de imágenes y la respuesta visual a preguntas.
OpenAI planea entrenar el modelo de visión desde cero, pero la tecnología aún no está madura, por lo que esperan reducir el riesgo entrenando a partir de texto.
**Se rumorea que GPT-5 de OpenAI entrenará modelos de visión desde cero y tendrá la capacidad de generar automáticamente procesamiento de imagen y audio. **
Un objetivo principal de la tecnología multimodal visual es permitir que los agentes autónomos lean páginas web y transcriban su contenido de imágenes y videos. Los datos utilizados por OpenAI para entrenar este modelo incluyen datos conjuntos (incluido el texto/LaTeX renderizado), capturas de pantalla de páginas web y fotogramas de muestra de videos de Youtube, etc., y utiliza la tecnología Whisper para transcribir.
Una cosa interesante sobre el problema de sobreoptimización de LLM es que el costo de IO del modelo visual es diferente del costo de IO del modelo de texto sin formato. El costo de IO del modelo de texto es muy bajo, pero en el modelo de visión, el costo de IO de la carga de datos es aproximadamente 150 veces mayor que el del modelo de texto. El tamaño de cada token es de 600 bytes, mientras que el modelo de texto tiene solo 4 bytes. Actualmente, se está trabajando mucho en la investigación de la compresión de imágenes. (Nota de Xianxiang: la información de texto es más fácil de comprimir, y la tokenización de imagen/video es una dirección digna de atención en el campo multimodal).
Costo de IO: el costo de IO se refiere al tiempo, los recursos y los costos de energía necesarios para completar una operación de entrada/salida en un sistema informático. Estos costos incluyen aspectos como la transferencia, el almacenamiento y el procesamiento de datos. En el campo del aprendizaje automático y el aprendizaje profundo, el costo de IO generalmente se refiere al costo de leer y escribir datos desde medios de almacenamiento (como disco duro, memoria, red, etc.). Durante el entrenamiento y la inferencia del modelo, el costo de IO puede convertirse en un cuello de botella, lo que afecta el rendimiento y la eficiencia del sistema. Por lo tanto, para mejorar el rendimiento y la eficiencia de los sistemas informáticos, se debe considerar y optimizar el costo de IO.
Esto es muy importante para los proveedores que optimizan su hardware después de 2 o 3 años para tener en cuenta las sólidas capacidades visuales y de audio de cada modelo. Pueden encontrar que su arquitectura no encaja bien. Con todo, las futuras arquitecturas LLM ciertamente evolucionarán más allá de los modelos densos y/o MoE basados en texto reducido que vemos hoy.
Referencia
Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Guía de "alquimia" GPT-4: MoE, cantidad de parámetros, costo de entrenamiento y secretos de inferencia
Original: Recogiendo elefantes
Fuente: Unicornios en el extranjero
Autores: Dylan Patel, Gerald Wong
Editado por: Haina, Wenli, Cage
Editor: Siqi
Este artículo está compilado a partir de la columna SemiAnalysis de Dylan Patel y Gerald Wong. No hace mucho, Dylan Patel dio la noticia sobre la carta interna de Google: No tenemos foso, y OpenAI tampoco.
GPT-4 es el resultado de una combinación profunda de ciencia e innovación en ingeniería. Hay innumerables trucos en el medio. Para el mundo exterior, si puede comprender la estructura de GPT-4, es como obtener la "receta para la alquimia". del modelo más fuerte. Este contenido brinda la arquitectura GPT-4, la infraestructura de entrenamiento e inferencia, la cantidad de parámetros, el conjunto de datos de entrenamiento, el número de token, el costo y el modelo MoE y otros parámetros y detalles de información con gran detalle.
Dylan y Gerald creen que la razón por la que OpenAI no revela la arquitectura de GPT-4 no es por las llamadas consideraciones de seguridad de la IA, sino porque esta arquitectura es fácil de copiar; George Hotz, conocido como el "hacker genio" , también expresó una opinión similar, sin embargo, George argumenta que GPT-4 consta de MoE de 8 modelos expertos, cada uno con alrededor de 1100 parámetros.
Los dos autores predicen que empresas como Google, Meta, Anthropic, Inflection, Character.ai, Tencent, ByteDance, Baidu, etc. tendrán capacidades de modelo iguales o incluso más potentes que GPT-4 a corto plazo. A pesar de que la arquitectura de GPT-4 se "copia fácilmente", en su opinión, OpenAI tiene el foso más duradero: la mayor cantidad de usuarios finales, talentos de ingeniería líderes y una ventaja de ser el primero en moverse en los cambios intergeneracionales en los modelos.
Recordatorio amistoso: los datos del artículo provienen de la investigación y la recopilación de múltiples partes del autor original, y no han sido confirmados por OpenAI. La investigación de Dylan Patel generalmente se considera altamente confiable y puede usarse como una buena referencia para GPT-4 materiales de investigación en profundidad. Además, creemos que las vistas fáciles de reproducir en el artículo pueden ser sospechosas de ser una "fiesta de titulares", porque, aparte de OpenAI y Google, los científicos que son buenos en la capacitación y el razonamiento del marco MoE complejo son actualmente escasos, y el GPT-4 actual es solo la primera generación de MoE. No es la respuesta final dada por OpenAI, y mucha experiencia en el proceso no está disponible para otros equipos, y estas experiencias definitivamente se convertirán en una ventaja única de OpenAI.
El siguiente es el índice de este artículo, y se recomienda leerlo en combinación con los puntos principales.
👇
01 Resumen
02 Estructura del modelo
03 Conjunto de datos
04 Estrategia paralela
05 Costo de entrenamiento
06 Ministerio de Educación
07 Razonamiento
08 Infra y costo de razonamiento
09 Mecanismo de atención multiconsulta
10 lotes consecutivos
11 Decodificación especulativa
12 Visión Multimodal
01.Resumen
Las capacidades de ingeniería de OpenAI y lo que han creado son asombrosas, pero eso no significa que las soluciones sean insuperables. Su solución es muy elegante, y además implica la consideración y el equilibrio de una serie de factores complejos, y la ampliación de la escala del modelo es sólo una parte de ella. **El foso más duradero de OpenAI proviene de tres aspectos: primero, tienen la mayor cantidad de usuarios del mundo real, segundo, talento de ingeniería líder y, por último, es probable que continúen manteniendo una ventaja en el desarrollo de modelos futuros. **
No solo es valioso comprender por qué GPT-4 eligió una determinada arquitectura, sino que, más recientemente, también describiremos los costos de capacitación e inferencia de GPT-4 en A100 y cómo usar H100 en la arquitectura del modelo de próxima generación.
De GPT-3 a GPT-4, OpenAI quiere aumentar el tamaño del modelo en 100. El núcleo de este proceso es, naturalmente, el problema de los costos**. Los transformadores densos son arquitecturas modelo de uso común, como OpenAI GPT-3, Google PaLM, Meta LLaMA, TII Falcon, MosaicML MPT, etc. En la actualidad, hay al menos 50 empresas que utilizan esta arquitectura para entrenar LLM, que es un buen ejemplo de arquitectura. , pero su escalabilidad es muy limitada.
AI Brick Wall discutió el costo de capacitación del modelo en este artículo, antes de que se lanzara GPT-4. Desde la perspectiva del costo de capacitación, el modelo denso (transformadores densos) está a punto de enfrentar su propia "pared de ladrillos de IA". Realice algunos esfuerzos arquitectónicos de nivel superior.
Pero durante los últimos 6 meses, nos dimos cuenta de que el costo de la capacitación podría no ser un problema. Aunque gastar millones o incluso cientos de millones de dólares para entrenar modelos parece una locura, en realidad es trivial para los gigantes tecnológicos. Un modelo grande es un proyecto de inversión de capital (elemento de línea de Capex), y cuanto más grande sea el modelo, mejor será el resultado. El único factor limitante es si los seres humanos tienen suficiente capacidad y tiempo para proporcionar comentarios y modificar la arquitectura del modelo mientras se expande el modelo. escala.
Meta invierte más de $ 16 mil millones en el "Metaverso" cada año, Google gasta alrededor de $ 10 mil millones en nuevos proyectos, Amazon gasta más de $ 50 mil millones en Alexa y la criptomoneda gasta en "cosas sin valor". Más de $ 100 mil millones desperdiciados. La sociedad en su conjunto gastará más de 100.000 millones de dólares para crear supercomputadoras capaces de entrenar modelos a gran escala que se puedan producir de varias maneras. Múltiples países y empresas repetirán el esfuerzo de capacitación** en modelos grandes, que son la nueva "carrera armamentista en el espacio"**. En comparación con el "desperdicio de recursos" anterior, el valor real se obtendrá a corto plazo debido a la aparición de asistentes humanos y agentes autónomos.
Pero en los próximos años, Google, Meta y OpenAI, Microsoft y otras compañías gastarán más de 100 mil millones de dólares estadounidenses para construir una supercomputadora para entrenar el modelo.
La cuestión más importante de expandir el tamaño del modelo, la verdadera "pared de ladrillos de IA", radica en el enlace de inferencia. El objetivo aquí es desacoplar el poder de cómputo de entrenamiento del poder de cómputo de inferencia, por lo que para cualquier modelo que se implemente, tiene sentido entrenar más allá del Chinchilla-óptimo de DeepMind. (Nota de selección: aumentar la cantidad de datos de entrenamiento para que el modelo aprenda demasiado es una estrategia para aumentar la capacidad de los modelos pequeños y reducir el costo del razonamiento). Esta es la razón por la que se usa una arquitectura de modelo disperso (arquitectura de modelo disperso). El razonamiento bajo esta arquitectura no requiere que todos los parámetros estén activos.
La esencia del problema en el enlace de inferencia es que el costo de implementar el modelo para los usuarios y los agentes es demasiado alto. El costo de la inferencia es varias veces mayor que el costo de la capacitación, y resolver este problema es el objetivo de OpenAI en términos de infraestructura y arquitectura del modelo.
Cuando se trata de inferencias con modelos grandes, especialmente modelos densos, el tamaño del modelo puede convertirse en un problema de múltiples variables. En el dispositivo AI- espada de doble filo Este artículo ha discutido la situación en el contexto de la computación de borde. En pocas palabras, los dispositivos terminales nunca pueden tener el rendimiento y el ancho de banda de memoria suficiente necesarios para cumplir con la implementación de grandes modelos de lenguaje Incluso si el ancho de banda es suficiente, la eficiencia de los dispositivos de borde en la utilización de recursos informáticos de hardware es muy baja. Los centros de datos enfrentan problemas similares.
La utilización de los recursos informáticos es muy importante para los centros de datos y las nubes. (Nota: en la actualidad, el límite superior de uso de GPU/TPU en la industria es de alrededor del 50 %). también se actualiza constantemente Una generación de software que impulsa una mayor utilización de FLOPS al permitir un movimiento de datos más inteligente alrededor de los chips, entre chips y entre memorias.
En esta etapa, los casos de uso para la inferencia LLM son en su mayoría "asistentes en vivo", lo que significa que debe lograr un rendimiento lo suficientemente alto para ser realmente útil para los usuarios. Tomando a los humanos como una analogía, la velocidad de lectura promedio de los humanos es de aproximadamente 250 palabras por minuto, y algunas personas pueden alcanzar aproximadamente 1,000 palabras por minuto.En correspondencia con el modelo, significa generar al menos 8.33 tokens por segundo, preferiblemente 33.33 tokens por segundo token, es posible satisfacer todas las necesidades humanas.
Sin embargo, debido a la limitación del ancho de banda de la memoria, incluso en el servidor GPU NVIDA H100 más reciente, el modelo denso (modelo denso) con billones de parámetros no puede lograr este rendimiento matemáticamente. Cada vez que se genera un token, debe cargarse desde la memoria al chip, y luego este token se envía nuevamente para generar el siguiente token. Además, la caché KV (KV Cache) para implementar el mecanismo de atención también requiere ancho de banda adicional.
La figura anterior muestra el ancho de banda de memoria requerido para servir a un LLM de un solo usuario con un rendimiento suficientemente alto. De esta imagen se puede ver que:
• Incluso un ancho de banda 8 veces mayor que el de H100 no puede servir a un modelo denso con una escala de 1 billón de parámetros a una velocidad de 33,33 tokens por segundo;
• Además, la utilización de FLOPS de 8x H100 todavía está por debajo del 5 % a 20 tokens por segundo, lo que da como resultado un costo de inferencia extremadamente alto.
De hecho, para el sistema H100 paralelizado con tensor de 8 vías actual, la restricción de inferencia es de unos 300 000 millones de parámetros de avance.
Sin embargo, OpenAI está alcanzando la velocidad de lectura humana con el A100 y modelos con más de 1 billón de parámetros, ampliamente disponibles a un bajo precio de $0,06 por 1000 tokens, y esto es posible precisamente debido a su arquitectura escasa.
A continuación, analizaremos la arquitectura del modelo GPT-4, la infraestructura para el entrenamiento y el razonamiento, la cantidad de parámetros, la composición del conjunto de datos de entrenamiento, la cantidad de tokens, la cantidad de capas, estrategias paralelas, codificadores visuales multimodales, etc. detrás de una serie de diferentes diseños de ingeniería Consideraciones, técnicas de implementación y cómo OpenAI aborda los cuellos de botella en la inferencia de modelos grandes.
02. Estructura del modelo
La escala de GPT-4 es más de 10 veces mayor que la de GPT-3, estimamos que tiene alrededor de 1,8 billones de parámetros, y estos parámetros se distribuyen en 120 capas de transformador. A modo de comparación, los parámetros de GPT-3 son alrededor de 1750 mil millones. (Nota: GPT-3 tiene solo 12 capas de transformador y el número de capas es 1/10 de GPT-4).
Para controlar los costos, OpenAI optó por utilizar el modelo MoE. OpenAI utiliza 16 expertos de tipo MLP.2 en el modelo, cada uno con alrededor de 111 mil millones de parámetros. Dos de estos modelos expertos son llamados en cada pase hacia adelante.
Además, en el mecanismo de atención se utilizan alrededor de 55 mil millones de parámetros compartidos.
Cada inferencia directa (que genera un token) solo utiliza alrededor de 280 mil millones de parámetros y 560 TFLOP, en comparación con aproximadamente 1,8 billones de parámetros y 3700 TFLOP necesarios para cada inferencia directa si el modelo denso se usa puramente.
03. Conjunto de datos
GPT-4 se entrenó en alrededor de 13 billones de tokens, lo cual es razonable considerando que CommonCrawl RefinedWeb contiene alrededor de 5 billones de tokens de alta calidad. Como referencia, los modelos Chinchilla de Deepmind y PaLM de Google se entrenaron con alrededor de 1,4 billones de tokens y alrededor de 0,78 billones de tokens, respectivamente, y se dice que PaLM2 está entrenado con alrededor de 5 billones de tokens.
El conjunto de datos utilizado por OpenAI para entrenar GPT-4 no es de 13 billones de tokens únicos. Por el contrario, debido a la falta de tokens de alta calidad, este conjunto de datos contiene varias épocas. Hay 2 épocas para datos basados en texto y 4 épocas para datos basados en código. (Nota: Esto se refiere a algunos textos y códigos de alta calidad que el modelo ha aprendido muchas veces). Esto está lejos de lograr el nivel óptimo de Chinchilla (el modelo debe entrenarse con el doble de tokens), lo que también muestra que la red sea fácil de obtener token no es suficiente. Los tokens de texto de alta calidad que realmente existen en la red deberían ser 1000 veces mayores que los disponibles en la actualidad, y los tokens de audio y video son incluso más, pero la recopilación de estos tokens no se puede lograr simplemente mediante el web scraping. Desafortunadamente, no hemos encontrado mucha información sobre los datos de RLHF de OpenAI.
En la etapa de pre-entrenamiento, la longitud del contexto (seqlen) es de 8k. La versión de contexto de 32k de GPT-4 se implementa además del ajuste fino de 8k después del entrenamiento previo.
El tamaño del lote se incrementó gradualmente en el clúster durante varios días, pero al final, OpenAI usó un tamaño de lote de hasta 60 millones. Por supuesto, dado que no todos los parámetros ven todos los parámetros, este es solo un tamaño de lote de 7,5 millones por experto.
04. Estrategia paralela
El procesamiento paralelo en todas las GPU A100 es muy importante.
OpenAI utiliza paralelismo de tensor de escala de 8 vías (8 vías) (paralelismo de tensor), la razón es de 8 vías (8 vías) porque este es el límite de NVLink. Además, también escuchamos que OpenAI está utilizando una estrategia de paralelismo de tubería de 15 vías (15 vías). Teóricamente, 15 vías es demasiado considerando la comunicación de datos y el tiempo de computación, pero también es razonable si están limitados por la capacidad de la memoria.
Si solo usa el paralelismo de canalización y el paralelismo de tensor, los parámetros en cada GPU necesitan alrededor de 30 GB en FP16, y una vez que se tienen en cuenta el caché de KV y la sobrecarga de KV, si la mayoría de las GPU utilizadas por OpenAI son A100 de 40 GB, esta arquitectura de It es también razonable en teoría. OpenAI puede usar ZeRo etapa 1, FSDP a nivel de bloque o paralelismo híbrido de datos compartidos.
La razón por la que no se usa el modelo completo FSDP puede ser el alto costo de comunicación. Si bien OpenAI tiene una red de alta velocidad entre la mayoría de los nodos, probablemente no todos, creemos que hay al menos algunos clústeres con un ancho de banda de conexión mucho menor que otros.
No está claro cómo OpenAI evita burbujas enormes con un paralelismo de tubería tan alto. Lo más probable es que solo hayan pagado el costo.
05. Coste de la formación
OpenAI usó alrededor de 2,15e25 FLOPS en el entrenamiento de GPT-4, en alrededor de 25 000 GPU A100 durante 90 a 100 días de entrenamiento, donde la utilización máxima de la potencia de cómputo fue de alrededor del 32 % al 36 %. **
Esta utilización extremadamente baja se debe en parte a la gran cantidad de fallas que requieren reiniciar los puntos de control, y las burbujas mencionadas anteriormente consumen una gran cantidad de costos.
Otra razón es que la reducción total en tantas GPU es muy costosa. Especialmente si sospechamos que el clúster en realidad está formado por muchos clústeres más pequeños con conexiones de red relativamente débiles, como conexiones sin bloqueo de 800G/1,6T entre diferentes partes del clúster, pero algunos solo pueden conectarse a una velocidad de 200G/400G.
Si su costo en la nube es de aproximadamente $ 1 por hora por A100, eso equivale a ~ $ 63 millones solo para esta sesión de capacitación **. Esto no incluye todos los ensayos, intentos fallidos y otros costos de recopilación de datos, RLHF, personal, etc. Cuando se tienen en cuenta estos factores, el costo real es mucho mayor. Además, también debe tener en cuenta que necesita tener un equipo para completar la configuración del chip, el equipo de red y el centro de datos, asumir la inversión de capital (Capex) y alquilárselos.
Actualmente, el preentrenamiento se puede realizar en aproximadamente 55 días con aproximadamente 8192 H100 a un costo total de $21,5 millones, cada GPU H100 cuesta $2/hora.
Esperamos que nueve empresas tengan más GPU H100 para finales de año. Tal vez no todos estos H100 se utilicen para el entrenamiento de modelos, pero estas empresas definitivamente adoptarán modelos grandes y se convertirán en jugadores importantes. Meta espera tener más de 100 000 H100 para fin de año, una parte significativa de los cuales se implementará en sus propios centros de datos para inferencia, aunque su clúster individual más grande tendrá más de 25 000 GPU H100. (Nota: los recursos informáticos de Meta harán que la capacidad de LLaMA para evolucionar se convierta en una variable importante para el código abierto y la implementación privada). Muchas empresas entrenarán un modelo con la misma capacidad que GPT-4 antes de finales de este año.
06.MoE
MoE es una forma efectiva de reducir la cantidad de parámetros durante la inferencia, mientras que también aumenta la cantidad de parámetros, lo que ayuda a codificar más información por token de entrenamiento. Debido a que es muy difícil obtener suficientes tokens de alta calidad, es necesario elegir la arquitectura MoE. Porque si OpenAI realmente quiere implementar Chinchilla-Optimal, ahora deben entrenar el doble de tokens.
Dicho esto, OpenAI hace varias concesiones. Por ejemplo, lidiar con MoE durante la inferencia es muy difícil porque no todas las partes del modelo se usan al generar cada token. Esto significa que algunas partes pueden estar inactivas mientras se utilizan otras partes. Esto puede afectar seriamente la utilización cuando se presta servicio a los usuarios.
Los investigadores demostraron que el uso de 64 a 128 expertos produjo mejores resultados de pérdida que el uso de 16 expertos, pero esto es solo una investigación. Hay varias razones para reducir el número de expertos. Una de las razones por las que OpenAI eligió a 16 expertos es que tener más expertos hace que sea más difícil generalizar y lograr la convergencia. Dada una carrera de entrenamiento tan grande, OpenAI optó por ser más conservador en la cantidad de expertos.
Además, usar menos expertos es útil para las arquitecturas de inferencia. Hay varias compensaciones complejas al pasar a una arquitectura de inferencia MoE. Comencemos con las compensaciones de inferencia básicas de LLM y luego exploremos los problemas que enfrentó OpenAI y las elecciones que tomaron.
07. Razonamiento
En esta parte, primero queremos señalar que todas las empresas LLM que contactamos piensan que la biblioteca de inferencia FasterTransformer de NVIDIA es bastante mala y que TensorRT es aún peor. Sin la capacidad de usar las plantillas de Nvidia y modificarlas, lo que significa crear su propia solución desde cero, NVIDIA necesita resolver este problema lo antes posible para adaptarse a las necesidades de la inferencia LLM, de lo contrario, se convertirá en una herramienta abierta de hecho. para agregar soporte de hardware de terceros. Están llegando más y más modelos grandes, y si NVIDIA no puede proporcionar una ventaja de software en la inferencia, y los núcleos aún deben escribirse a mano, entonces el MI300 de AMD y otro hardware tendrán un mercado mucho más grande.
Hay 3 factores clave en el enlace de inferencia de LLM, que están relacionados principalmente con la cantidad de chips utilizados.
1. Latencia
El modelo debe responder en un plazo razonable. La gente no quiere esperar unos segundos antes de comenzar a recibir resultados en una aplicación de chat. Los tiempos de procesamiento de los tokens de entrada y salida pueden fluctuar.
2. Rendimiento
El modelo debe generar una cierta cantidad de tokens por segundo. El uso humano es de aproximadamente 30 tokens por segundo, y el rendimiento puede ser mayor o menor para otros casos de uso.
3. Utilización
El hardware que ejecuta el modelo debe lograr una alta utilización o el costo será prohibitivo. Si bien es posible lograr una mayor utilización agrupando más solicitudes de usuarios con mayor latencia y menor rendimiento, esto aumenta la dificultad.
La inferencia LLM es principalmente para equilibrar dos factores principales, el ancho de banda de la memoria y la computación.
En términos simples, cada parámetro debe leerse con dos FLOP asociados. Por lo tanto, la relación de la mayoría de los chips (por ejemplo, H100 SXM tiene solo 3 TB/s de ancho de banda de memoria, pero tiene 2000 TFLOP/s FP8) está completamente desequilibrada en la inferencia con el tamaño de lote 1. Si solo se atiende a un usuario, es decir, con un tamaño de lote de 1, el ancho de banda de memoria requerido para transmitir cada parámetro para cada generación de token domina el tiempo de inferencia y el tiempo de cálculo es casi insignificante.
Para poder escalar modelos grandes a varios usuarios, el tamaño del lote debe ser mayor que 1 y varios usuarios comparten el costo de lectura de parámetros. Por ejemplo, con un tamaño de lote de 256 o 512, cada byte de memoria leído corresponde a 512 FLOP/s o 1024 FLOP/s. Esta relación está más cerca de la relación de ancho de banda de memoria a FLOPS del H100. Ayuda a lograr una mayor utilización, pero tiene la desventaja de una mayor latencia.
Muchas personas piensan que la capacidad de la memoria es el principal cuello de botella para la inferencia LLM, ya que el tamaño del modelo puede caber en varios chips, pero esta vista puede ser problemática. Aunque la inferencia de modelos grandes requiere múltiples chips, y una mayor capacidad de memoria conduce a menos chips adaptados, en realidad es mejor usar más chips de los necesarios para reducir la latencia, aumentar el rendimiento y se pueden usar lotes más grandes para aumentar continuamente la utilización.
Si una aplicación requiere la latencia más baja posible, necesitamos más chips y dividir el modelo de tantas formas como sea posible para que sea económico. Los tamaños de lote más pequeños permiten una latencia más baja, pero los tamaños de lote más pequeños también dan como resultado una [utilización] de MFU más pobre, lo que resulta en un costo total más alto por token (en segundos de chip o dólares) .
Si una aplicación requiere inferencia fuera de línea y la latencia no es un problema, entonces el objetivo principal es maximizar el rendimiento por chip (es decir, minimizar el costo total por token). Aumentar el tamaño del lote es más eficiente, ya que los tamaños de lote más grandes generalmente conducen a una mejor MFU [utilización], pero ciertas estrategias de partición que no son efectivas para tamaños de lote pequeños crecen a medida que el tamaño del lote crece y se vuelven efectivas.
**Más chips y tamaños de lote más grandes son más baratos porque aumentan la utilización, pero esto también introduce una tercera variable, el tiempo de conexión en red. ** El método de implementar el modelo en múltiples chips puede resolver el retraso de manera efectiva, pero a expensas de la utilización.
Tanto la parte de carga de peso del tiempo de almacenamiento como el tiempo de cálculo sin atención son proporcionales al tamaño del modelo e inversamente proporcionales al recuento de chips. Para un diseño de partición dado, el tiempo requerido para la comunicación de chip a chip disminuye menos rápidamente (o no disminuye en absoluto) con la cantidad de chips utilizados, por lo que se convierte en un problema cada vez más difícil a medida que aumenta la cantidad de chips. embotellamiento.
Nos dimos cuenta de que los requisitos de memoria de la caché KV aumentaron a medida que crecía el tamaño y el tamaño del lote.
Si una aplicación necesita generar texto con contextos de atención larga (contextos de atención larga), aumentará considerablemente el tiempo de inferencia. Para un modelo con más de 500B de atención de varios cabezales, la caché de atención de KV puede llegar a ser muy grande: para un modelo con un tamaño de lote de 512 y una longitud de contexto de 2048, la cantidad total de caché de KV es de 3 TB, que es 3 veces el tamaño del parámetro del modelo. La memoria en el chip (memoria en el chip) necesita cargar el caché KV de la memoria fuera del chip (memoria fuera del chip), que se carga cada vez que se genera un token.Durante este período, el núcleo informático del chip es básicamente inactivo.
Las longitudes de secuencia largas son particularmente problemáticas para el ancho de banda de la memoria y la capacidad de la memoria. La razón por la que GPT-3.5 turbo de OpenAI con contextos de 16k y GPT-4 con contextos de 32k son caros es que no pueden aceptar lotes más grandes debido a limitaciones de memoria.
Los lotes más pequeños dan como resultado una menor utilización del hardware. Además, la memoria caché KV se hincha a medida que aumenta la longitud de la secuencia. La caché KV no se puede compartir entre usuarios, por lo que se requieren lecturas de memoria separadas, lo que reduce aún más el ancho de banda de la memoria. Consulte a continuación para obtener más información sobre MQA.
08. Infra y costo de razonamiento
Infra
La arquitectura de MoE hace que la inferencia de GPT-4 enfrente desafíos en términos de latencia, rendimiento y utilización. Debido a que el pase directo de cada token se puede enrutar a diferentes modelos expertos, es muy difícil lograr una baja latencia, un alto rendimiento y una alta utilización en este caso, especialmente en lotes de gran tamaño.
La arquitectura GPT-4 de OpenAI contiene 16 modelos expertos y cada canal directo tiene 2 enrutadores. Esto significa que con un tamaño de lote de 8, la lectura de parámetros de cada experto solo puede ocupar "1" del tamaño del lote. Más en serio, esto también da como resultado un tamaño de lote de 8 para un experto, mientras que el tamaño de lote de otros expertos puede ser solo 4, 1 o 0.
Además, el algoritmo de enrutamiento enruta el pase de reenvío en diferentes direcciones cada vez que se genera un token, lo que da como resultado variaciones significativas en la latencia de token a token y el tamaño del lote experto. Es decir, cuando se procesan diferentes tokens, se pueden asignar diferentes expertos a diferentes tareas, y tanto la carga computacional como el tamaño del lote pueden variar en consecuencia.
La infraestructura de inferencia es una de las principales consideraciones para que OpenAI elija un pequeño número de expertos en el diseño de MoE. Si utilizan más expertos, el ancho de banda de la memoria se convierte en un cuello de botella mayor para la inferencia. OpenAI a menudo logra tamaños de lote superiores a 4k en sus propios clústeres de inferencia, lo que significa que incluso con un equilibrio de carga óptimo entre los expertos, cada experto solo puede alcanzar un tamaño de lote de aproximadamente 500. Esto requiere un uso muy grande para lograrlo.
Nuestro entendimiento es que OpenAI ejecuta la inferencia en un grupo de 128 GPU y tiene múltiples grupos de este tipo en diferentes centros de datos y regiones geográficas. La inferencia se realiza en paralelo con tensores de 8 vías y canalizaciones de 16 vías. Con 8 GPU por nodo, cada GPU tiene solo alrededor de 130 B de parámetros, o menos de 30 GB por GPU en FP16 y menos de 15 GB en FP8/int8. Esto permite ejecutar la inferencia en un A100 de 40 GB, siempre que el tamaño de caché de KV para todos los lotes no se hinche demasiado.
FP16, FP8 e int8 son diferentes representaciones de precisión numérica (precisión), que a menudo se usan en el proceso de cálculo en el aprendizaje profundo para reducir el uso de memoria y recursos informáticos, mejorando así la eficiencia del entrenamiento y el razonamiento del modelo.
FP16, FP8 e int8 se refieren respectivamente a números de punto flotante de 16 bits, números de punto flotante de 8 bits y números enteros de 8 bits. Su precisión es menor que la de los números de punto flotante de precisión simple de 32 bits (FP32 ), pero pueden reducir en gran medida la memoria y los recursos informáticos. Se utilizan para acelerar el entrenamiento de modelos y la inferencia en el aprendizaje profundo. Por ejemplo, el uso de FP16 puede reducir a más de la mitad el tiempo de cálculo sin perder demasiada precisión, mientras que el uso de int8 puede reducir el tiempo de cálculo en un factor de aproximadamente 4 sin perder demasiada precisión.
Cabe señalar que el uso de cálculos de baja precisión puede tener un cierto impacto en la precisión del modelo, por lo que se requiere un compromiso entre precisión y eficiencia, y se debe seleccionar el método de representación de precisión más apropiado de acuerdo con la tarea específica. requisitos
Para evitar que la comunicación de la red sea demasiado irregular y, al mismo tiempo, evitar el costo prohibitivo de volver a calcular la caché KV entre cada generación de tokens, las distintas capas que contienen varios expertos no se dividen en diferentes nodos para compartir la caché KV.
**Mayor dificultad para todas las futuras extensiones del modelo MoE y enrutamiento condicional. Es cómo lidiar con el límite de 120 capas de enrutamiento alrededor del caché KV. **
En el modelo MoE, la cantidad de capas de enrutamiento por rama no puede exceder las 120 capas; de lo contrario, la memoria caché KV no se puede manejar de manera efectiva. Esto se debe a que durante el proceso de inferencia del modelo, cada rama necesita calcular el caché de KV, lo que genera un aumento en el costo computacional.
Una solución simple a este problema es colocar una ruta de expansión en 15 nodos diferentes según el límite de capa de 120. De esta forma, la carga computacional se puede distribuir uniformemente en diferentes nodos, mejorando así la eficiencia y el rendimiento del modelo. Sin embargo, dado que el primer nodo necesita realizar la carga y la incorporación de datos, es importante cómo colocar menos capas en el nodo principal del clúster de inferencia.
Además, en el proceso de codificación y decodificación de los datos de entrada, puede haber algo de ruido sobre la decodificación inferencial, que analizaremos más adelante. Una cuestión más crítica es determinar si se debe creer en ese ruido. Esto también puede explicar por qué tiene sentido incluir menos capas en el nodo principal.
costo de razonamiento
En comparación con el modelo Davinchi con parámetros 175B, GPT-4 tiene 1,6 veces los parámetros de avance, pero el costo es 3 veces mayor que el de Davinchi. Esto se debe principalmente a que GPT-4 requiere un clúster más grande y logra una menor utilización.
Suponemos que usar 128 A100 para la inferencia con una longitud de contexto GPT-4 de 8k (seqlen) cuesta alrededor de $0.0049 por 1k tokens. Al usar 128 H100 para la inferencia en el contexto GPT-4 8k, el costo por 1k tokens es de aproximadamente $0.0021. (Nota: el precio actual de GPT-4-8k es 0,03/1k tokens de entrada, 0,06/1k tokens de salida. Actualmente, el uso de chips de inferencia por parte de OpenAI no será tan extravagante como especula el autor. Este cálculo se puede usar como un valor más bajo destinado a futuras reducciones de precios). Es importante tener en cuenta que **estos costos se calculan con una utilización alta y tamaño de lote. **
Nuestra hipótesis es que OpenAI apaga el clúster durante las recesiones y reutiliza esos nodos para otras tareas, como reanudar el entrenamiento de puntos de control de modelos de prueba pequeños o experimentar con varias técnicas nuevas. Hacerlo ayuda a mantener bajos los costos de inferencia; de lo contrario, la utilización de OpenAI podría ser aún menor, lo que implica más del doble del costo estimado.
09. Mecanismo de atención multiconsulta
El uso de Atención de Consultas Múltiples es bastante común, pero queremos enfatizar que OpenAI hace lo mismo. En general, solo se necesita 1 cabeza de atención y la capacidad de la memoria se puede reducir significativamente para el almacenamiento en caché de KV. Aun así, GPT-4 con contextos de 32k ciertamente no puede ejecutarse en el A100 de 40GB, y el tamaño máximo de lote de 8k ya está limitado. Si no hay MQA, el tamaño máximo de lote de 8k se verá muy limitado y los beneficios económicos se reducirán considerablemente.
10. Procesamiento por lotes continuo
Para permitir cierto grado de latencia máxima y optimizar el costo de la inferencia, OpenAI utiliza técnicas de procesamiento por lotes continuo y de tamaño de lote variable. Este enfoque puede mejorar la utilización de los recursos informáticos sin sacrificar el rendimiento del modelo y lograr una latencia más baja y un mayor rendimiento durante el proceso de inferencia del modelo. Si no comprende el concepto de procesamiento por lotes continuo, vale la pena leer el artículo oficial de AnyScale Cómo el procesamiento por lotes continuo permite un rendimiento 23x en la inferencia LLM mientras reduce la latencia p50. (Nota de Pickup: el marco de computación distribuida Ray desarrollado por Anyscale es utilizado por OpenAI en la tubería de infraestructura del modelo. Pickup ha publicado investigaciones sobre esta empresa anteriormente).
11. Decodificación especulativa
Hay rumores de que OpenAI utiliza tecnología de decodificación especulativa en la tarea de inferencia del modelo GPT-4. Si bien no podemos estar seguros de la precisión de este mensaje, la variación general en la latencia y la variación de un token a otro, tanto para tareas de recuperación simples como para tareas más complejas, parece sugerir que esta técnica es posible. Sin embargo, debido a que hay demasiadas variables, no podemos confirmar si esta técnica se usa realmente.
El uso de LLM generalmente se divide en dos fases:
1. Etapa de prellenado
En esta fase, primero se proporciona una sugerencia () como entrada y se ejecuta a través del modelo para generar el caché KV y los primeros logits de salida. Entre ellos, logits es el vector de distribución de probabilidad generado por LLM en cada paso de tiempo, que se utiliza para representar la posibilidad de cada token. Esta fase de prepoblación suele ser rápida debido al cómputo paralelo.
2. Etapa de decodificación
En esta etapa, se selecciona un token de los logits de salida y se retroalimenta al modelo para generar logits para el siguiente token. Esto se repite hasta que se genera el número deseado de fichas. Dado que cada decodificación debe calcularse secuencialmente para producir un token, la intensidad aritmética de esta segunda etapa (es decir, FLOP/bytes de ancho de banda de memoria calculados) es muy baja cuando se ejecuta en lotes pequeños (nota clave: el cálculo de secuencia conduce a la infrautilización de la potencia informática. ) Por lo tanto, la decodificación suele ser la parte más costosa de la generación autorregresiva.
Esta es la razón por la que es mucho más económico ingresar tokens que generar tokens en las llamadas a la API de OpenAI.
La idea central de la decodificación especulativa es utilizar un modelo de borrador más pequeño y rápido para decodificar varios tokens antes de tiempo e introducirlos en el modelo de Oracle como un lote. Si las predicciones del borrador del modelo son correctas (es decir, están de acuerdo con las predicciones del modelo de Oracle), se puede usar un lote para decodificar varios tokens, ahorrando mucho ancho de banda de memoria y tiempo por token.
Sin embargo, si el modelo más grande rechaza un token predicho por el modelo preliminar, el resto del lote se descarta y el algoritmo vuelve a la decodificación estándar token por token. La decodificación especulativa también se puede combinar con un esquema de muestreo de rechazo para muestrear tokens de la distribución original. Tenga en cuenta que este enfoque solo funciona en configuraciones de lotes pequeños donde el ancho de banda es el cuello de botella.
En resumen, la decodificación especulativa intercambia computación por ancho de banda, y hay dos razones clave por las que es un objetivo atractivo de optimización del rendimiento. En primer lugar, la decodificación especulativa no degrada en absoluto la calidad del modelo, ya que solo mejora la velocidad de inferencia y el rendimiento del modelo al modificar el proceso de cálculo de la etapa de decodificación. En segundo lugar, los beneficios que brinda generalmente son independientes de otros métodos, porque su ventaja radica en convertir los cálculos secuenciales en ejecución paralela, mientras que otros métodos comienzan principalmente con la estructura del modelo, los parámetros, el entrenamiento, etc. para la optimización.
Los métodos de inferencia actuales predicen una sola secuencia para cada lote. Sin embargo**, este método no se escala bien en el caso de lotes grandes o modelos de borrador de baja precisión. **Intuitivamente, para secuencias de tokens largas y continuas, la probabilidad de que los dos modelos predigan acuerdo disminuye exponencialmente, lo que significa que a medida que se expande la fuerza del algoritmo, el retorno de la decodificación especulativa disminuirá rápidamente.
Creemos que si OpenAI usa decodificación especulativa, es probable que solo la usen para secuencias cortas de aproximadamente 4 tokens de longitud. Además, algunas personas piensan que la disminución en el rendimiento del modelo GPT-4 se debe a que OpenAI agregó secuencias de baja probabilidad del modelo de decodificación especulativa al modelo de preentrenamiento, lo que puede no ser cierto.
Además, algunas personas piensan que el modelo Bard también usa decodificación especulativa porque Google espera que se genere la secuencia completa antes de enviarla al usuario, pero no creemos que esta suposición sea cierta.
12. Visual Multimodal
Visión Multimodal: Se refiere al procesamiento y análisis conjunto de información de diferentes modalidades (como imágenes, textos, voces, etc.). Por lo general, la información de estas diferentes modalidades está relacionada semánticamente, por lo que combinarlas puede proporcionar información más rica y resultados de inferencia más precisos.
La capacidad visual multimodal de GPT-4 se logra a través de un codificador visual independiente del codificador de texto, y tiene un mecanismo de atención cruzada (Cross-Attention) con el codificador de texto, se dice que su arquitectura es similar al modelo Flamingo. El codificador de visión se ajustó con precisión en el modelo GPT-4 de 1,8 billones de parámetros; sin embargo, solo se entrenó previamente con aproximadamente 2 billones de tokens adicionales de datos de texto, no datos de visión.
OpenAI planea entrenar el modelo de visión desde cero, pero la tecnología aún no está madura, por lo que esperan reducir el riesgo entrenando a partir de texto.
**Se rumorea que GPT-5 de OpenAI entrenará modelos de visión desde cero y tendrá la capacidad de generar automáticamente procesamiento de imagen y audio. **
Un objetivo principal de la tecnología multimodal visual es permitir que los agentes autónomos lean páginas web y transcriban su contenido de imágenes y videos. Los datos utilizados por OpenAI para entrenar este modelo incluyen datos conjuntos (incluido el texto/LaTeX renderizado), capturas de pantalla de páginas web y fotogramas de muestra de videos de Youtube, etc., y utiliza la tecnología Whisper para transcribir.
Una cosa interesante sobre el problema de sobreoptimización de LLM es que el costo de IO del modelo visual es diferente del costo de IO del modelo de texto sin formato. El costo de IO del modelo de texto es muy bajo, pero en el modelo de visión, el costo de IO de la carga de datos es aproximadamente 150 veces mayor que el del modelo de texto. El tamaño de cada token es de 600 bytes, mientras que el modelo de texto tiene solo 4 bytes. Actualmente, se está trabajando mucho en la investigación de la compresión de imágenes. (Nota de Xianxiang: la información de texto es más fácil de comprimir, y la tokenización de imagen/video es una dirección digna de atención en el campo multimodal).
Esto es muy importante para los proveedores que optimizan su hardware después de 2 o 3 años para tener en cuenta las sólidas capacidades visuales y de audio de cada modelo. Pueden encontrar que su arquitectura no encaja bien. Con todo, las futuras arquitecturas LLM ciertamente evolucionarán más allá de los modelos densos y/o MoE basados en texto reducido que vemos hoy.
Referencia