Los modelos de lenguajes grandes (LLM) han captado la imaginación y la atención de desarrolladores, científicos, tecnólogos, emprendedores y ejecutivos de varias industrias. Estos modelos se pueden utilizar para responder preguntas, resumir, traducir y más en aplicaciones como agentes conversacionales para atención al cliente, creación de contenido para marketing y asistentes de codificación.
Recientemente, Meta lanzó Llama 2 tanto para investigadores como para entidades comerciales, sumándose a la lista de otros LLM, incluido MosaicML MPT y Halcón. En esta publicación, explicamos cómo ajustar Llama 2 en Capacitación en AWS, un acelerador diseñado específicamente para la formación LLM, para reducir los tiempos y costes de formación. Revisamos los scripts de ajuste proporcionados por el Neurona AWS SDK (usando NeMo Megatron-LM), las diversas configuraciones que usamos y los resultados de rendimiento que vimos.
Sobre el modelo Llama 2
Similar al anterior Llama 1 Modelo y otros modelos como GPT, Llama 2 utiliza la arquitectura de solo decodificador del Transformer. Viene en tres tamaños: 7 mil millones, 13 mil millones y 70 mil millones de parámetros. En comparación con Llama 1, Llama 2 duplica la longitud del contexto de 2000 a 4000 y utiliza atención de consultas agrupadas (solo para 70B). Los modelos preentrenados de Llama 2 se entrenan con 2 billones de tokens y sus modelos ajustados se han entrenado con más de 1 millón de anotaciones humanas.
Entrenamiento distribuido de Llama 2
Para acomodar Llama 2 con una longitud de secuencia de 2000 y 4000, implementamos el script usando NeMo Megatrón para Trainium que admite paralelismo de datos (DP), paralelismo tensorial (TP) y paralelismo de canalización (PP). Para ser específicos, con la nueva implementación de algunas características como desatar incrustación de palabras, incrustación rotativa, RMSNorm y activación Swiglu, utilizamos el script genérico de Neurona GPT Megatrón-LM para apoyar el guión de entrenamiento de Llama 2.
Nuestro procedimiento de capacitación de alto nivel es el siguiente: para nuestro entorno de capacitación, utilizamos un clúster de instancias múltiples administrado por el sistema SLURM para la capacitación y programación distribuida bajo el marco NeMo.
Primero, descargue el modelo Llama 2 y los conjuntos de datos de entrenamiento y procéselos usando el tokenizador Llama 2. Por ejemplo, para utilizar el conjunto de datos RedPajama, utilice el siguiente comando:
Para obtener orientación detallada sobre la descarga de modelos y el argumento del script de preprocesamiento, consulte Descargue el conjunto de datos y el tokenizador de LlamaV2.
A continuación, compila el modelo:
Después de compilar el modelo, inicie el trabajo de entrenamiento con el siguiente script que ya está optimizado con la mejor configuración e hiperparámetros para Llama 2 (incluido en el código de ejemplo):
Por último, monitoreamos TensorBoard para realizar un seguimiento del progreso del entrenamiento:
Para obtener el código de ejemplo completo y los scripts que mencionamos, consulte Llama 7B. tutorial y código nemo en Neuron SDK para seguir pasos más detallados.
Experimentos de ajuste
Ajustamos el modelo 7B en los conjuntos de datos OSCAR (Open Super-large Crawled ALMAnaCH corpus) y QNLI (NLI de respuesta a preguntas) en un entorno Neuron 2.12 (PyTorch). Para cada longitud de secuencia de 2000 y 4000, optimizamos algunas configuraciones, como batchsize y gradient_accumulation, para la eficiencia del entrenamiento. Como estrategia de ajuste, adoptamos un ajuste completo de todos los parámetros (aproximadamente 500 pasos), que se puede extender al entrenamiento previo con pasos más largos y conjuntos de datos más grandes (por ejemplo, 1T RedPajama). El paralelismo de secuencia también se puede habilitar para permitir a NeMo Megatron ajustar con éxito modelos con una longitud de secuencia mayor de 4000. La siguiente tabla muestra los resultados de configuración y rendimiento del experimento de ajuste fino de Llama 7B. El rendimiento aumenta casi linealmente a medida que el número de instancias aumenta hasta 4.
| Biblioteca distribuida | Conjuntos de datos | Longitud de la secuencia | Número de instancias | tensorial paralelo | Datos paralelos | Tubería paralela | Tamaño de lote global | Rendimiento (seq/s) |
| Neurona NeMo Megatrón | Óscar | 4096 | 1 | 8 | 4 | 1 | 256 | 3.7 |
| . | . | 4096 | 2 | 8 | 4 | 1 | 256 | 7.4 |
| . | . | 4096 | 4 | 8 | 4 | 1 | 256 | 14.6 |
| . | QNLI | 4096 | 4 | 8 | 4 | 1 | 256 | 14.1 |
El último paso es verificar la precisión con el modelo base. Implementamos un script de referencia para experimentos de GPU y confirmamos que las curvas de entrenamiento para GPU y Trainium coincidían como se muestra en la siguiente figura. La figura ilustra las curvas de pérdida sobre la cantidad de pasos de entrenamiento en el conjunto de datos QNLI. Se adoptó precisión mixta para GPU (azul) y bf16 con redondeo estocástico predeterminado para Trainium (naranja).
Conclusión
En esta publicación, mostramos que Trainium ofrece un alto rendimiento y un ajuste fino rentable de Llama 2. Para obtener más recursos sobre el uso de Trainium para el entrenamiento previo distribuido y el ajuste de sus modelos de IA generativa usando NeMo Megatron, consulte Referencia de neuronas de AWS para NeMo Megatron.
Sobre los autores
Hao Zhou es investigador científico de Amazon SageMaker. Antes de eso, trabajó en el desarrollo de métodos de aprendizaje automático para la detección de fraudes para Amazon Fraud Detector. Le apasiona aplicar técnicas de aprendizaje automático, optimización e inteligencia artificial generativa a diversos problemas del mundo real. Tiene un doctorado en Ingeniería Eléctrica de la Universidad Northwestern.
Karthick Gopalswamy es un científico aplicado en AWS. Antes de AWS, trabajó como científico en Uber y Walmart Labs, centrándose principalmente en la optimización de enteros mixtos. En Uber, se centró en optimizar la red de transporte público con productos SaaS bajo demanda y viajes compartidos. En Walmart Labs, trabajó en optimizaciones de precios y embalaje. Karthick tiene un doctorado en Ingeniería Industrial y de Sistemas con especialización en Investigación de Operaciones de la Universidad Estatal de Carolina del Norte. Su investigación se centra en modelos y metodologías que combinan investigación operativa y aprendizaje automático.
Xin Huang es científico aplicado sénior de Amazon SageMaker JumpStart y los algoritmos integrados de Amazon SageMaker. Se centra en el desarrollo de algoritmos escalables de aprendizaje automático. Sus intereses de investigación se encuentran en el área del procesamiento del lenguaje natural, el aprendizaje profundo explicable sobre datos tabulares y el análisis sólido de agrupaciones espacio-temporales no paramétricas. Ha publicado numerosos artículos en conferencias ACL, ICDM, KDD y Royal Statistical Society: Serie A.
Parque Youngsuk es un científico aplicado sénior en AWS Annapurna Labs y trabaja en el desarrollo y la capacitación de modelos básicos en aceleradores de IA. Antes de eso, el Dr. Park trabajó en I+D para Amazon Forecast en AWS AI Labs como científico principal. Su investigación radica en la interacción entre el aprendizaje automático, los modelos fundamentales, la optimización y el aprendizaje por refuerzo. Ha publicado más de 20 artículos revisados por pares en los principales lugares, incluidos ICLR, ICML, AISTATS y KDD, con el servicio de organizar talleres y presentar tutoriales en el área de series temporales y capacitación LLM. Antes de unirse a AWS, obtuvo un doctorado en Ingeniería Eléctrica de la Universidad de Stanford.
Yida Wang es un científico principal del equipo de IA de AWS de Amazon. Su interés de investigación está en sistemas, computación de alto rendimiento y análisis de big data. Actualmente trabaja en sistemas de aprendizaje profundo, centrándose en la compilación y optimización de modelos de aprendizaje profundo para un entrenamiento e inferencia eficientes, especialmente modelos básicos a gran escala. La misión es unir los modelos de alto nivel de varios marcos y plataformas de hardware de bajo nivel, incluidas CPU, GPU y aceleradores de IA, para que diferentes modelos puedan ejecutarse con alto rendimiento en diferentes dispositivos.
Jun (Lucas) Huan es científico principal en AWS AI Labs. El Dr. Huan trabaja en IA y ciencia de datos. Ha publicado más de 160 artículos revisados por pares en importantes congresos y revistas y ha graduado a 11 estudiantes de doctorado. Recibió el premio NSF Faculty Early Career Development Award en 2009. Antes de unirse a AWS, trabajó en Baidu Research como científico distinguido y director del Laboratorio de Big Data de Baidu. Fundó StylingAI Inc., una nueva empresa de inteligencia artificial, y trabajó como director ejecutivo y científico jefe en 2019-2021. Antes de unirse a la industria, fue profesor Charles E. y Mary Jane Spahr en el Departamento EECS de la Universidad de Kansas. De 2015 a 2018, trabajó como director de programa en la NSF de EE. UU. a cargo de su programa de big data.
Sruti Koparkar es gerente senior de marketing de productos en AWS. Ayuda a los clientes a explorar, evaluar y adoptar la infraestructura informática acelerada de Amazon EC2 para sus necesidades de aprendizaje automático.