Resumen de LLaMA y su modelo extendido (1)

Desde el lanzamiento de ChatGPT, la gente ha visto el amanecer de la era AGI, pero debido a que ChatGPT es de código cerrado, solo se puede acceder a él desde el sitio web oficial y la API. Según el director ejecutivo de OpenAI, se debe a las consideraciones de seguridad de AGI, lo que limita en gran medida el progreso de investigación de muchos investigadores e instituciones sobre AGI. La compañía Meta hizo lo contrario. El 24 de febrero de este año, lanzó el modelo de lenguaje grande de código semiabierto LLaMA (que significa "alpaca" en chino), que es un conjunto de modelos de lenguaje básicos a gran escala que contienen de 7 a 65 mil millones de parámetros. Debido a que la cantidad de parámetros es mucho menor que la de GPT-3, el efecto es aún mejor que este último, lo que una vez provocó acaloradas discusiones en el círculo . La razón por la que es de código semiabierto es que se necesita aplicar el peso del modelo LLaMA. El siguiente es un breve resumen de LLaMA y sus modelos extendidos:

Uno、LlaMA

imagen

Dirección del artículo : https://research.facebook.com/file/1574548786327032/LLaMA--Open-and-Efficient-Foundation-Language-Models.pdf

1.1 Introducción

LLaMA es la última colección de modelos de lenguaje básico de parámetros 7B a 65B lanzados por Meta AI. Entrene modelos en billones de tokens y demuestre que es posible entrenar modelos de última generación completamente utilizando conjuntos de datos disponibles públicamente sin recurrir a conjuntos de datos propietarios y no disponibles. LLaMA-13B supera a GPT-3 (175B) en la mayoría de los puntos de referencia, mientras que LLaMA-65B compite con los mejores modelos Chinchilla70B y PaLM-540B.

1.2) Datos previos al entrenamiento

imagen

Use el algoritmo BPE de la biblioteca SentencePiece para la segmentación de datos y use bytes para procesar la codificación UTF-8 desconocida y finalmente obtenga un token de 1.4T.

1.3) Arquitectura y parámetros del modelo

La arquitectura del modelo incorpora mejoras de otros modelos, que incluyen:

  • La prenormalización, de GPT-3, puede estabilizar el entrenamiento.

    • normalizar la entrada en lugar de la salida

    • Usar RMSNorm

  • SwiGLU, de PaLM, reemplaza a ReLU para un mejor rendimiento. Las dimensiones usan 2/3*4d en lugar de 4d en PaLM.

  • La incrustación rotatoria, de GPTNeo, reemplaza la codificación de posición absoluta.

En la siguiente tabla se enumeran otros hiperparámetros del modelo.

imagen

El optimizador usa AdamW, beta1=0.9, beta2=0.95. Usando el programa de tasa de aprendizaje del coseno, la tasa de aprendizaje final es una décima parte del valor más alto, la caída del peso es 0.1 y el calentamiento es de 2000 pasos.

1.4) Rendimiento del modelo

imagen

1.5) Implementación eficiente

  • La implementación eficiente de atención informal de múltiples cabezas en xformer se usa para reducir el tiempo de ejecución de la huella de memoria. Inspirado en Paper Self-attention does not need o(n^2) memoryy Flashattention: Fast and memory-efficient exact attention with io-awareness.utilizado en . Esta eficiencia se logra al no almacenar pesos de atención y no calcular puntajes de consultas/claves enmascaradas.

  • Se reduce el valor de activación que necesita ser recalculado en la etapa de retropropagación, específicamente, se almacenan los resultados intermedios con una cantidad relativamente grande de cálculo, como la salida de la capa lineal.

    • Para lograr esto, debe implementar manualmente la función de retropropagación en lugar de confiar en el autograduado de pytorch.

    • Para lograr esto mejor, también necesitamos usar más modelos y paralelismo de secuencias para reducir el uso de memoria.

    • También es necesario superponer el cálculo del valor de activación y la comunicación entre las GPU tanto como sea posible.

Al entrenar el modelo 65B, el código procesa 380 tokens por GPU por segundo en 2048 bloques de A100 con memoria de 80G. Significa que se necesitan 21 días para procesar el token de 1,4 T.

1.6 ) Conclusiones centrales

  1. LLaMA es una colección de código abierto de modelos de lenguaje básicos, con parámetros que van desde 7B a 65B, completamente entrenados en billones de Tokens utilizando conjuntos de datos públicos;

  2. LLaMA-13B supera a GPT-3 (175B) en la mayoría de los puntos de referencia y es más de 10 veces más pequeño en tamaño de modelo, y LLaMA-65B funciona a la par con los mejores modelos Chinchilla70B y PaLM-540B;

  3. El estudio demuestra que es posible lograr un rendimiento de vanguardia entrenando completamente con datos disponibles públicamente sin recurrir a conjuntos de datos patentados, lo que puede ayudar a mejorar la solidez y mitigar problemas conocidos como la toxicidad y el sesgo;

  4. El lanzamiento del modelo LLaMA a la comunidad de investigación puede acelerar la apertura de grandes modelos lingüísticos y facilitar una mayor investigación sobre el ajuste fino de la instrucción. El trabajo futuro incluirá el lanzamiento de modelos más grandes entrenados en corpus preentrenados más grandes.

2. Alpaca y su modelo extendido

2.1)Alpacas

2.1.1) Introducción a la Alpaca

imagen

Dirección del sitio web oficial: https://crfm.stanford.edu/2023/03/13/alpaca.html

Modelo de entrada: https://crfm.stanford.edu/alpaca

dirección de github: https://github.com/tatsu-lab/stanford_alpaca

      El 15 de marzo, Stanford lanzó el modelo de lenguaje grande Alpaca, que es un modelo completamente nuevo ajustado por LLaMA 7B de Meta. Solo usa datos de 52k y su rendimiento es aproximadamente igual a GPT-3.5. La clave es que el costo de capacitación es sorprendentemente bajo, menos de $600.

Los costos específicos son los siguientes:

  • Capacitación durante 3 horas en 8 A100 de 80 GB por menos de $100;

  • Genere datos usando la API de OpenAI, $500.

2.1.2) Afinamiento de alpaca

imagen

Primero use 175 pares de "instrucciones-resultados" anotados por humanos como semillas, y luego use estas semillas como ejemplos contextuales para pedirle a text-davinci-003 que genere más avisos.

El método de instrucciones autogeneradas se mejora al simplificar la canalización de generación, lo que reduce considerablemente el costo. Durante la generación de datos, se generaron 52 000 instrucciones únicas y los resultados correspondientes, con un costo de menos de $ 500 utilizando la API de OpenAI.

Con el conjunto de datos que sigue a esta instrucción, los investigadores ajustaron el modelo LLaMA utilizando el marco de entrenamiento de Hugging Face, aprovechando técnicas como el paralelismo de datos totalmente fragmentado (FSDP) y el entrenamiento de precisión mixta.

2.1.3) Evaluación de la Alpaca

Para evaluar Alpaca, los investigadores de Stanford realizaron una evaluación humana (realizada por 5 estudiantes autores) en la entrada del conjunto de evaluación de instrucción autogenerado.

Esta colección de revisiones fue recopilada por autores de instrucciones autogeneradas y cubre un conjunto diverso de instrucciones para el usuario, incluida la escritura de correos electrónicos, las redes sociales y las herramientas de productividad, entre otras.

Compararon GPT-3.5 (text-davinci-003) y Alpaca 7B y descubrieron que el rendimiento de los dos modelos es muy similar. Alpaca gana 90 contra 89 veces contra GPT-3.5.

Dado el pequeño tamaño del modelo y la pequeña cantidad de datos de instrucciones, este resultado es bastante sorprendente.

Además de aprovechar este conjunto de evaluación estática, también probaron interactivamente el modelo Alpaca y descubrieron que Alpaca tiende a funcionar de manera similar a GPT-3.5 en una variedad de entradas.

2.2)Alpaca-CoT

Es una plataforma liviana de ajuste fino de instrucción LLM con múltiples interfaces.

Dirección del sitio web oficial : https://sota.jiqizhixin.com/project/alpaca-cot

Dirección de GitHub : https://github.com/PhoebusSi/Alpaca-CoT

3. Billa[1]

3.1) Introducción a BiLLa

Dirección de Github:  https://github.com/Neutralzz/BiLLa 

Modelo HuggingFace: 

https://huggingface.co/Neutralzz/BiLLa-7B-LLM (modelo de lenguaje BiLLa-7B-LLM) 

https://huggingface.co/Neutralzz/BiLLa-7B-SFT (instrucciones de ajuste fino del modelo BiLLa-7B-SFT) 

Nota: debido a restricciones en el uso de LLaMa, los pesos no se pueden usar directamente después de la descarga y deben convertirse mediante script [1]

BiLLa es un modelo LLaMA bilingüe mejorado con razonamiento de código abierto en chino e inglés. Las principales propiedades del modelo son: 

  • Mejore en gran medida la capacidad de comprensión china de LLaMA y reduzca el LLaMA original tanto como sea posible

    deterioro del dominio del inglés; 

  • Durante el proceso de capacitación, se agregan más datos de tipo de tarea y se usa ChatGPT para generar análisis y fortalecer

    Modelar la comprensión de la lógica de resolución de tareas;

  • Los parámetros completos se actualizan para lograr mejores efectos de generación.

Estas son las conclusiones de un análisis de revisión limitada: 

  • La capacidad de modelado del idioma chino-inglés de BiLLa-7B-LLM es significativamente mejor que la de Chinese-LLaMA-7B;

  • BiLLa-7B-SFT La capacidad de razonamiento chino es significativamente mejor que BELLE-LLaMA-Ext-7B, etc.

    Modelo;

  • Calificado por GPT4, BiLLa-7B-SFT puntuó significativamente más alto que

    ChatGLM-6B, el puntaje chino es el mismo, pero los puntajes de resolución de problemas y código son más altos. 

3.2) Formación del modelo BiLLa

Basado en el modelo LLaMa original, el modelo se entrena en las siguientes tres etapas.

  • La primera etapa: expandir el vocabulario chino y usar los datos en chino e inglés del corpus de pre-entrenamiento chino Wudao [5], el corpus de pre-entrenamiento en inglés PILE [6] y el corpus de traducción WMT [7] para el pre-entrenamiento secundario. 

  • La segunda etapa: los datos de entrenamiento se basan en la primera etapa para aumentar los datos de la tarea, y las dos partes de los datos se mezclan en una proporción de 1:1 durante el proceso de entrenamiento. Los datos de tipo de tarea son datos de código abierto convencionales para tareas de NLP, incluida la resolución de problemas matemáticos, comprensión de lectura, preguntas y respuestas de dominio abierto, resumen, generación de código, etc. La API de ChatGPT se utiliza para generar y analizar etiquetas de datos para entrenar y mejorar la comprensión del modelo de la lógica de resolución de tareas. 

  • Fase 3: Mantenga los datos basados ​​en tareas de la Fase 2 y conviértalos en un formato de diálogo, agregando su

    Da instrucciones a los datos (como Dolly 2.0, Alpaca GPT4, COIG, etc.) para afinar la etapa de alineación.

Basándose en el trabajo anterior de BELLE, el entrenamiento de tres etapas es una actualización de los parámetros completos sin usar LoRA.

El modelo de código abierto actual, BiLLa-7B-LLM, es un modelo de lenguaje entrenado en la segunda etapa, y BiLLa-7B-SFT es un modelo de ajuste fino de instrucciones entrenado en la tercera etapa.

4. Cámara [2]

A través de un entrenamiento previo completo y un ajuste fino de las instrucciones, se han mejorado la capacidad de comprensión del chino, la reserva de conocimientos y la capacidad de comprensión de las instrucciones.

CaMA: un modelo LLaMA bilingüe chino-inglés - CaMA: un modelo LLaMA bilingüe chino-inglés.' ZJUNLP

imagen

Dirección de GitHub : https://github.com/zjunlp/CaMA 

5. Charla en LLaMA[3]

5.1) Introducción al modelo ChatLLaMA

El 23 de marzo, la empresa de inteligencia artificial Nebuly abrió el código abierto del primer modelo LLaMA basado en el aprendizaje por refuerzo de retroalimentación humana (RLHF): ChatLLama (https://github.com/nebuly-ai/nebullvm/tree/main/apps/accelerate/chatllama), lo que permite a los usuarios crear servicios ChatGPT personalizados basados ​​en modelos LLaMA pre-entrenados, y la velocidad de entrenamiento es más rápida y el costo es menor.

       Aunque LLaMA ha sido favorecido por muchos investigadores al comienzo de su lanzamiento, pero sin el apoyo de RLHF, a juzgar por los resultados de la evaluación anterior, casi no tiene sentido. Tres días después del lanzamiento de LLaMA, la startup Nebuly AI abrió el método de entrenamiento para la versión RLHF de LLaMA (ChatLLaMA). Su proceso de entrenamiento es similar a ChatGPT, y este proyecto permite construir servicios estilo ChatGPT basados ​​en modelos LLaMA pre-entrenados. El proyecto se acaba de lanzar durante 2 días y ha ganado 5.2K estrellas.

imagen

dirección de github : https://github.com/nebuly-ai/nebullvm/tree/main/apps/accelerate/chatllama

El algoritmo del proceso de entrenamiento de ChatLLaMA es más rápido y económico que el entrenamiento de ChatGPT, podemos obtener la verificación de los siguientes cuatro puntos:

  • ChatLLaMA es una implementación completa de código abierto que permite a los usuarios crear servicios de estilo ChatGPT basados ​​en modelos LLaMA previamente entrenados;

  • En comparación con ChatGPT, la arquitectura LLaMA es más pequeña, pero el proceso de entrenamiento y la inferencia de GPU única son más rápidos y económicos;

  • ChatLLaMA tiene soporte integrado para DeepSpeed ​​ZERO para acelerar el proceso de ajuste;

  • La biblioteca también es compatible con todas las arquitecturas de modelos LLaMA (7B, 13B, 33B, 65B), por lo que los usuarios pueden ajustar el modelo de acuerdo con el tiempo de entrenamiento y las preferencias de rendimiento de la inferencia.

5.2) Uso del modelo ChatLLaMA

ChatLLaMA le permite entrenar fácilmente arquitecturas basadas en LLaMA usando RLHF de manera similar a ChatGPT. Por ejemplo, a continuación se muestra el código para comenzar a entrenar en el caso de ChatLLaMA 7B.

from chatllama.rlhf.trainer import RLTrainerfrom chatllama.rlhf.config import Config
path = "path_to_config_file.yaml"config = Config(path=path)trainer = RLTrainer(config.trainer)trainer.distillate()trainer.train()trainer.training_stats.plot()

Tenga en cuenta que debe proporcionar los pesos originales de Meta y su conjunto de datos personalizado antes de comenzar el proceso de ajuste. Alternativamente, puede usar el proxy de LangChain para generar su propio conjunto de datos.

python generate_dataset.py

6. CAMELLO[4]

CAMEL: Un modelo clínicamente adaptado derivado de LLaMA. CAMEL se ajusta aún más en función de LLaMA, utilizando casos clínicos de MIMIC-III y MIMIC-IV, y se ajusta con precisión en la orientación clínica.

imagen

imagen

imagen

Dirección del sitio web oficial : https://starmpcc.github.io/CAMEL/

dirección de github : https://github.com/starmpcc/CAMEL

7. Hierbas [5]

El nombre original del modelo herbario es Hua Tuo, que propone un modelo de perfeccionamiento del conocimiento de la MTC basado en el modelo LLaMA - Hua Tuo, que puede generar respuestas más profesionales, confiables y humanizadas en el campo de la biomedicina.

imagen

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

Código fuente abierto : https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese

  • En el gráfico de conocimiento de TCM de CMeKG, se generaron más de 8000 datos de instrucción para el ajuste fino supervisado del modelo LLaMA. Estos datos de instrucción incluyen preguntas y respuestas, llenado de espacios en blanco, selección, clasificación y otros tipos, que involucran varios aspectos de la medicina china.

  • El rendimiento del modelo del camello de Hua se compara con otros modelos de referencia en tareas de respuesta en el dominio biomédico. Estos modelos de referencia incluyen ChatGLM-6B, Alpaca y LLaMA original. Utilice métricas de evaluación automatizadas y evaluación humana para evaluar la calidad y confiabilidad de las respuestas generadas por el modelo.

imagen

8. DB-GPT[6]

DB-GPT: un proyecto experimental de código abierto basado en vicuña-13b y FastChat, que utiliza tecnología langchain y llama-index para el aprendizaje contextual y la respuesta a preguntas. El proyecto está completamente localizado e implementado para garantizar la privacidad y seguridad de los datos, y puede conectarse directamente a bases de datos privadas para procesar datos privados. Sus funciones incluyen generación de SQL, diagnóstico de SQL, respuesta a preguntas de conocimiento de la base de datos, etc.

imagen

DB-GPT: un experimento Open Database-GPT, que se basa en vicuña-13b y fastchat, mientras tanto usa langchain y llama-index para el aprendizaje en contexto y QA' magic.chen

Un proyecto experimental GPT relacionado con la base de datos, todos los modelos y datos se implementan localmente, lo que garantiza absolutamente la privacidad y seguridad de los datos. Al mismo tiempo, este proyecto GPT puede implementarse directamente de forma local y conectarse a una base de datos privada para el procesamiento de datos privados.

DB-GPT es una aplicación experimental de código abierto basada en FastChat y utiliza vicuña-13b como modelo base. Además, este programa combina langchain y llama-index para realizar aprendizaje en contexto basado en la base de conocimiento existente para mejorar su conocimiento relacionado con la base de datos. Puede realizar una serie de tareas como la generación de SQL, el diagnóstico de SQL y la respuesta a preguntas de conocimiento de la base de datos.

Dirección de GitHub : https://github.com/csunny/DB-GPT

9. ExpertLLaMA

9.1) Introducción a ExpertLLaMA

ExpertLLaMA: un chatbot de código abierto creado con ExpertPrompting (https://arxiv.org/abs/2305.14688) logra el 96 % de las capacidades de ChatGPT.

ExpertLLaMA genera respuestas detalladas de nivel experto de alta calidad al agregar descripciones de identidad de expertos a las instrucciones comunes. Este proyecto proporciona una introducción al método, 52 000 muestras de conjuntos de datos expertos, 52 000 muestras de conjuntos de datos de referencia, 52 000 descripciones de identidad de expertos correspondientes a cada instrucción específica, puntos de control de ExpertLLaMA basados ​​en la capacitación de conjuntos de datos expertos y resultados de evaluación con modelos existentes como Vicuña y LLaMA-GPT4

imagen

Dirección de GitHub : https://github.com/OFA-Sys/ExpertLLaMA

9.2) Los pasos generales de puesta a punto de ExpertLLaMA son los siguientes :

a) Primero use el modelo gpt-3.5-turbo para mejorar los datos de instrucciones de 52k Alpaca usando el método ExpertPrompting, y los datos mejorados están en el directorio de datos de la dirección github;

imagen

b) LLaMA-7B luego se ajusta utilizando estos datos mejorados de seguimiento de instrucciones.

9.3) El guión de entrenamiento de ExpertLLaMA es el siguiente :

torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \    --model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \    --data_path ./data/expertllama.json \    --bf16 True \    --output_dir <your_output_dir> \    --num_train_epochs 3 \    --per_device_train_batch_size 4 \    --per_device_eval_batch_size 4 \    --gradient_accumulation_steps 8 \    --evaluation_strategy "no" \    --save_strategy "steps" \    --save_steps 2000 \    --save_total_limit 1 \    --learning_rate 2e-5 \    --weight_decay 0. \    --warmup_ratio 0.03 \    --lr_scheduler_type "cosine" \    --logging_steps 1 \    --fsdp "full_shard auto_wrap" \    --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \    --tf32 True

9.4) Carga del modelo ExpertLLaMA:

La carga del modelo puede referirse a Vicuna, que es una combinación de los pesos del modelo original de LLaMA y los pesos de ExpertLLaMA. El script puede referirse a: https://github.com/lm-sys/FastChat#vicuna-weights

Paso 1 : descargue los pesos del modelo oficial LLaMA-7B y luego conviértalos al formato de transformadores huggingface, dirección de referencia: https://huggingface.co/docs/transformers/main/model_doc/llama

Paso 2 : Descargue los pesos ExpertLLaMA, dirección de referencia: https://huggingface.co/OFA-Sys/expertllama-7b-delta/tree/main o configure OFA-Sys/expertllama-7b-delta

Paso 3 : Ejecute el script ./model/apply_delta.py

python3 apply_delta.py --base-model-path {your_base_model_path} --target-model-path {your_target_model_path} --delta-path {downloaded_delta_weights}

El script de implementación local es el siguiente:

python3 gen_demo.py --expertllama_path {your_target_model_path}

10. LibertadGPT

FreedomGPT fue desarrollado por la firma de capital de riesgo de inteligencia artificial Age of AI Construido con Electron y React, FreedomGPT es una aplicación de escritorio que permite a los usuarios ejecutar LLaMA en sus máquinas locales. Se diferencia de ChatGPT, que sigue la política de uso de OpenAI, que restringe el odio, las autolesiones, las amenazas, la violencia y el contenido sexual. Y FreedomGPT es un modelo de chat GPT que dice ser completamente gratuito, sin ningún mecanismo de filtrado, y tiene una versión web y una versión de escritorio.

Dirección del sitio web oficial : https://freedomgpt.com/

Supongo que te gusta

Origin blog.csdn.net/wshzd/article/details/131751354
Recomendado
Clasificación