Resumen de habilidades de capacitación de modelos grandes de ChatGPT eficiente y estable, ¡haga que la capacitación sea más efectiva!

100e11be9949c1050e4056bc0cf40688.png

Texto|python

prefacio

Recientemente, ChatGPT se ha convertido en un tema candente en Internet. ChatGPT es una herramienta de diálogo humano-computadora basada en la tecnología de modelo de lenguaje a gran escala (LLM, modelo de lenguaje grande). Ahora, los principales modelos de lenguaje a gran escala utilizan la red Transformer para realizar un entrenamiento autosupervisado a través de datos a una escala extremadamente grande. Pero, ¿cómo estructura sus datos de entrenamiento autosupervisados? ¿Qué innovaciones ha realizado en la estructura básica del Transformador? Para garantizar que el proceso de formación sea eficiente y estable, ¿qué tecnologías negras existen? Hoy, presentaré un artículo de revisión de la Universidad Renmin para descifrar las habilidades de entrenamiento de estos grandes modelos.

Dirección en papel:
https://arxiv.org/pdf/2303.18223.pdf

Portales de investigación y prueba para cada modelo grande

Portal ChatGPT (sin paredes, se puede probar directamente):
https://yeschat.cn

Portal GPT-4 (sin paredes, se puede probar directamente, si encuentra puntos de advertencia del navegador, puede continuar visitando):<br>
https://gpt4test.com

Recopilación y procesamiento de datos de entrenamiento

Los modelos de lenguaje a gran escala tienen mayores requisitos en cuanto a la escala y la calidad de los datos de entrenamiento. Entonces, ¿qué tipo de corpus se usa en el modelo grande actual? ¿Qué papel juegan estos corpus? ¿Cómo limpiar y preprocesar el corpus? ¿Hay algún detalle especial del modelo grande con el que tengamos que lidiar?

Fuentes de datos

En términos de fuentes de datos, los datos de entrenamiento de los modelos de lenguaje a gran escala pueden ser un corpus general y un corpus especial. El corpus general, como páginas web, libros y textos de diálogo, tiene una proporción relativamente grande y puede proporcionar conocimientos lingüísticos para el modelo sobre diversos temas; mientras que el corpus especial, como datos multilingües, corpus científico y tecnológico, códigos, etc., puede aportar soluciones a problemas específicos del modelo capacidad de tarea. La relación de composición del corpus de entrenamiento de modelos grandes existente se muestra en la siguiente figura:

712311f797e63a7133d72ef9e4687762.png

Entre los corpus generales, el corpus de la página web es de gran escala, pero contiene no solo un corpus de alta calidad como Wikipedia, sino también un corpus de baja calidad como el spam, y generalmente necesita ser filtrado. Los corpus de respuesta a preguntas, como las plataformas de redes sociales como Reddit, pueden mejorar potencialmente la capacidad de los modelos para responder preguntas. Las redes sociales generalmente involucran un diálogo entre varias personas, y los datos del diálogo se pueden organizar en una estructura de árbol de acuerdo con la relación de respuesta, de modo que cada rama sea un contenido de diálogo completo. El corpus del libro es un texto de lenguaje escrito poco común y extenso, que puede ayudar al modelo a adquirir conocimientos lingüísticos rigurosos, modelar dependencias a larga distancia y mejorar la coherencia del contenido generado.

En un corpus especial, el corpus multilingüe puede mejorar la capacidad del modelo en traducción, resumen multilingüe, respuesta a preguntas y otras tareas. El corpus científico y tecnológico puede ayudar al modelo a comprender símbolos, términos y expresiones especiales mediante la obtención de artículos, libros de texto y comunidades de matemáticas en línea de arXiv, y mejorar el rendimiento del modelo en tareas y razonamientos científicos y tecnológicos. El corpus de código proviene principalmente de comunidades de preguntas y respuestas como Stack Exchange y proyectos de código abierto en GitHub, incluido el código, los comentarios y los documentos. Estudios recientes han demostrado que el corpus de código puede mejorar la capacidad del modelo para razonar de manera compleja (cadena de pensamiento), debido a sus dependencias a larga distancia y su lógica inherentemente sofisticada.

Para obtener la dirección de algún corpus de código abierto, consulte nuestra publicación anterior: Recursos necesarios para entrenar ChatGPT: una guía completa de corpus, modelos y bibliotecas de código .

Limpieza y Pretratamiento

f2b8ff4f3f2827ef3d836afe8c8ff425.png

Después de obtener el corpus, las personas generalmente usan el proceso de la figura anterior para limpiar y preprocesar el corpus para mejorar la calidad.

Específicamente, en el primer paso de la limpieza del corpus, se pueden usar muestras como Wikipedia como ejemplos positivos para entrenar un clasificador binario para filtrar un corpus de alta calidad. Sin embargo, investigaciones recientes han demostrado que este método de detección puede introducir sesgos. Por lo tanto, ahora se recomienda usar reglas heurísticas para filtrar, como eliminar idiomas de tareas que no son de destino, descartar datos de baja perplejidad, eliminar oraciones con demasiada puntuación/símbolos o demasiado largas o demasiado cortas, y eliminar oraciones con cierto vocabulario específico (como como etiquetas html, enlaces, etc.), palabrotas, palabras sensibles) oraciones.

El segundo paso es la deduplicación. Las oraciones que contienen una gran cantidad de palabras o frases repetidas se pueden eliminar; los párrafos con una alta tasa de repetición (palabra/n-gramas co-ocurrencia) se pueden eliminar; el contenido en el conjunto de entrenamiento que puede estar demasiado correlacionado con el conjunto de prueba se puede eliminar. ser borrado De esta forma, se puede mejorar la calidad del conjunto de entrenamiento, se puede aliviar el problema de duplicación de contenido generado por el modelo de lenguaje y se puede evitar el problema de sobreajuste causado por la fuga del conjunto de prueba.

El tercer paso es eliminar la información de privacidad del usuario (nombre, dirección, número de teléfono, etc.)

Finalmente, después de completar la limpieza de tres pasos, las palabras se pueden segmentar y estar listas para el entrenamiento. En términos de segmentación de palabras, no hay tecnología negra. Utilice directamente un segmentador de palabras comercial como GPT-2 o construya un método de segmentación de palabras basado en algoritmos como SentencePiece y Byte Pair Encoding para el corpus de entrenamiento.

un poco de atención al detalle

Las características del modelo grande llevan a la necesidad de prestar atención a algunos detalles especiales al procesar el corpus de pre-entrenamiento:

  • Es necesario ajustar la proporción de mezcla de corpus de diferentes fuentes, que no puede basarse directamente en el tamaño del corpus. Una proporción de corpus equilibrada ayuda a mejorar la capacidad de generalización del modelo, y un tipo específico de corpus puede mejorar la capacidad específica del modelo.

  • El tamaño del corpus debe coincidir con el tamaño del parámetro del modelo. La experiencia muestra que, dada la potencia de cálculo, cuando el número de tokens en el corpus es igual al número de parámetros en el modelo, el rendimiento del modelo es relativamente mejor. Por lo tanto, no busque ciegamente grandes corpus, también es importante controlar la escala, mejorar la calidad y entrenar adecuadamente.

  • La calidad del corpus importa (otra vez). Los experimentos han demostrado que cuando se entrena un modelo grande, es mejor usar corpus de baja calidad que usarlo. La repetición excesiva de datos puede incluso invalidar el proceso de entrenamiento (choque o caída en óptimos locales sin sentido).

Estructura del modelo y tareas.

Los principales modelos de lenguaje a gran escala se basan en la estructura de Transformers. Como se puede ver en la figura siguiente, la mayoría de los modelos se basan en la estructura del decodificador casual, es decir, solo se utiliza el decodificador (enmascaramiento de atención unidireccional) para procesar el contenido de entrada y salida. El editor supone que después de que GPT-3 haya demostrado la gran capacidad del decodificador casual, combinada con la ley de escala y otras investigaciones sobre esta estructura, la gente ha perdido interés en investigar otras estructuras.

La estructura de los otros dos grandes modelos de lenguaje, la estructura Codificador-decodificador, es similar al modelo original para la traducción automática, utilizando dos componentes que no comparten parámetros para procesar el contenido de entrada y salida, respectivamente. El decodificador Prefix es similar al decodificador Casual, pero no utiliza el enmascaramiento de atención unidireccional en la parte de entrada, sino que permite la atención bidireccional. Es un poco como una estructura codificador-decodificador con parámetros compartidos.

0f883dd49efffe5b200198f9480f3cb6.png

Excepto por la selección estructural de Transformer. La tabla anterior también muestra algunos detalles del diseño del modelo. Específicamente incluir los siguientes puntos:

  • La normalización de capas (normalización de capas) es un medio importante para garantizar la convergencia del modelo y aliviar el problema de los accidentes de entrenamiento. Específicamente, el clásico Pre Norm agrega la normalización de capas antes de cada capa de atención de múltiples cabezales y la capa de red de alimentación hacia adelante. Sobre la base de Pre Norm, Pre RMS Norm elimina la parte media de la normalización, es decir, solo escala la desviación estándar para que el proceso de optimización sea más fluido. Es el método de recomendación convencional actual. Además, agregar Norm después de Embedding hará que la optimización sea más fluida, pero reducirá significativamente el rendimiento del modelo, por lo que generalmente ya no se usa.

  • En términos de funciones de activación, ReLU tradicional generalmente no es suficiente. Ahora se cree que SwiGLU y GeGLU pueden brindar un mejor rendimiento, pero en comparación con las funciones de activación como GeLU, traerá más parámetros.

  • Codificación de información de posición, codificación de posición absoluta aprendida tradicional (aprendida) y codificación de posición relativa para distancia relativa (relativa). Este último tiene una mejor extrapolación a corpus más largos en el momento de la prueba. Recientemente, RoPE ha sido ampliamente utilizado. Su característica es que utiliza un método similar a la función kernel y la rotación triangular para codificar la posición absoluta de los vectores de consulta y clave, de modo que el producto interno contiene elementos que expresan información de posición relativa.

Además, la tabla anterior también resume cierta información de hiperparámetros, como el número de capa #L, el número de cabeza #H, el tamaño de capa oculta y la longitud máxima de contexto de MCL.

En comparación con los detalles de la estructura del modelo, el diseño de la tarea previa al entrenamiento es muy simple. La tarea de preentrenamiento más común es el modelo de lenguaje autorregresivo, que permite que el modelo de lenguaje prediga la siguiente palabra una por una en función del historial de entrada, que es ampliamente adoptado por modelos de lenguaje como GPT-3. Y al igual que T5 y GLM-130B, la introducción de objetivos de entrenamiento de autocodificación de reducción de ruido permite que el modelo restablezca los segmentos enmascarados en el contenido de entrada.

Configuración y consejos de optimización

Para hacer que el proceso de entrenamiento sea más eficiente y estable para los modelos de lenguaje a gran escala, existen una serie de "tecnologías negras" en el proceso de entrenamiento. En concreto, estas técnicas pueden: 1. Mejorar el rendimiento final del modelo 2. Mejorar la velocidad de convergencia del modelo 3. Evitar que el modelo converja a un óptimo local con una gran pérdida, o que no converja 4. Evitar el colapso del proceso de formación. La configuración y las técnicas de optimización expuestas por los modelos grandes existentes se muestran en la siguiente tabla.

4ecead5726945a3417bf4a0d700daad4.png

El tamaño del lote generalmente se establece más grande, para hacer un mejor uso de los datos de entrenamiento a gran escala y hacer que el proceso de entrenamiento del modelo sea más estable. Por ejemplo, utilice un tamaño de lote de 8196 (cada lote procesa 1,6 millones de tokens de entrada). GPT-3 utiliza el método de ajuste dinámico del tamaño del lote para aumentar gradualmente la cantidad de tokens que procesa de 32 000 a 3,2 millones.

La tasa de aprendizaje es generalmente pequeña e incluye una configuración de calentamiento para garantizar un entrenamiento fluido. Por ejemplo, en el primer 0,1%~0,5% de los pasos de entrenamiento, establezca un incremento de tasa de aprendizaje lineal. La tasa de aprendizaje máxima generalmente está por debajo, por ejemplo, la tasa de aprendizaje de GPT-3 es . Después de eso, se adoptará la estrategia de decaimiento del coseno para reducir gradualmente la tasa de aprendizaje, y la tasa de aprendizaje se reducirá en aproximadamente un 10 % antes de la convergencia.

El optimizador generalmente usa Adam, AdamW y Adafactor. Entre ellos, Adafactor es una variante de Adam para guardar la memoria.

Otras técnicas para estabilizar el proceso de entrenamiento incluyen recorte de gradiente, con un umbral de 1,0; caída de peso (similar a la regularización L2) con una tasa de 0,1. Aun así, el proceso de entrenamiento para modelos grandes a menudo falla. PaLM y OPT propusieron que cuando ocurre un bloqueo, el entrenamiento puede continuar desde un nodo intermedio anterior y los datos de entrenamiento anteriores que causaron el bloqueo pueden omitirse. GLM descubrió que la capa de incrustación a menudo tiene gradientes anormales y debe ajustarse adecuadamente.

El paralelismo de datos es el método de entrenamiento multitarjeta más utilizado. Distribuya los datos de entrenamiento a múltiples tarjetas gráficas, calcule la propagación hacia adelante y hacia atrás respectivamente, luego resuma el gradiente, actualice los parámetros y sincronice el modelo. Este método puede resolver el problema de que el lote de una sola tarjeta es demasiado pequeño.

El paralelismo de canalización (Pipeline paralelismo) solo almacena y calcula algunas capas adyacentes en una tarjeta gráfica. Para aliviar la ineficiencia causada por la espera de operaciones secuenciales, herramientas como GPipe y PipeDream proponen recopilar datos de múltiples lotes en la tubería y actualizar los parámetros de forma asíncrona. Este método puede aliviar la situación de que una sola tarjeta no puede ejecutarse con un tamaño de lote de 1.

El paralelismo tensorial (Paralelismo tensorial) divide la matriz A en la operación de multiplicación de matrices grandes: de modo que la operación se puede transformar en la concatenación de los resultados de la multiplicación de dos matrices más pequeñas: , y las dos multiplicaciones de matrices más pequeñas se pueden colocar Ejecutar en dos gráficos tarjetas Este método se implementa con herramientas como Megatron-LM y Colossal-AI, que pueden aliviar el problema del alto uso de memoria de una sola multiplicación de matriz grande y también traerá una cierta cantidad de costos de comunicación.

El entrenamiento de precisión mixta utiliza cálculos de punto flotante de precisión media para reemplazar algunos parámetros del proceso de entrenamiento (especialmente la parte de propagación directa), lo que reduce la velocidad de mejora de la memoria. Las tarjetas gráficas como la A100 optimizan los cálculos de punto flotante de precisión media, lo que hace que el entrenamiento de precisión mixta sea más efectivo. Recientemente, también se ha propuesto reemplazar el tradicional FP16 con Brain Floating Point (BF16), aumentar el número de exponentes y reducir el número de cifras significativas. Sin embargo, aunque la computación de precisión mixta es significativamente más rápida, la experiencia muestra que la precisión y el rendimiento del modelo aún se reducirán.

01db6aa770ab32dbc2cf8e2fa3bc6e47.png

ZeRO es una solución propuesta por DeepSpeed ​​​​para optimizar aún más el paralelismo de datos, que se utiliza para mejorar el paralelismo del espacio de memoria de video más allá de los parámetros del modelo. El proceso de cálculo de precisión mixta en la figura anterior es muy obvio, y hay una gran cantidad de consumo de recursos de almacenamiento además de los parámetros. De hecho, el espacio de almacenamiento de la GPT-2 de media precisión con parámetros de 1.5B es de solo 3 GB, pero no se puede entrenar en una tarjeta gráfica de 32 GB. Esta es la razón. La idea principal de ZeRO es almacenar gradiente, impulso y otra información relacionada con la actualización en cada tarjeta de manera distribuida, de modo que cada tarjeta pueda actualizar los parámetros de la posición correspondiente y luego sincronizar cuando se resuma la actualización; suelte el correlación de gradiente después de actualizar la memoria de gradiente, etc. Dado que este método es relativamente complicado, no lo describiremos en detalle aquí. Tanto las herramientas DeepSpeed ​​como FSDP de PyTorch son compatibles con ZeRO.

En el uso real, las configuraciones de optimización anteriores generalmente se usan en combinación. Por ejemplo, el A100 de 384 bloques del modelo BLOOM utiliza paralelismo de datos de 8 vías, paralelismo de tensor de 4 vías y paralelismo de tubería de 12 vías, y adopta una estrategia de entrenamiento de precisión mixta basada en BF16. Las herramientas de código abierto como DeepSpeed, Colossal-AI y Alpa admiten funciones paralelas relacionadas.

Además, para reducir el costo de prueba y error, GPT-4 también propone un escalado predecible, que utiliza modelos de redes neuronales más pequeños para predecir el posible rendimiento de configuraciones de modelos grandes. El FSDP de PyTorch también es compatible con la CPU para compartir parte de la presión de cálculo.

conclusión

El entrenamiento de modelos lingüísticos a gran escala no es solo un problema científico, sino también un complejo problema de ingeniería. Los científicos e ingenieros deben trabajar juntos para avanzar de manera efectiva en el desarrollo de modelos grandes. Varias técnicas de entrenamiento ayudan a mejorar la eficiencia y la estabilidad del entrenamiento de modelos grandes. Sin embargo, los detalles de ingeniería relevantes solo pueden arañar la superficie a través de los papeles. Para dominarlo realmente, también debe leer detenidamente el código del proyecto de código abierto e intentar ejecutarlo.

b7b5fad571e6378e21517b6b63ac6cf9.jpegResponder palabras clave en segundo plano [ unirse al grupo ]

Únase al grupo de discusión de PNL, CV, promoción de búsqueda y búsqueda de empleo

Supongo que te gusta

Origin blog.csdn.net/xixiaoyaoww/article/details/130212210
Recomendado
Clasificación