Inteligencia artificial
Llama 2: Una inmersión profunda en el desafío de código abierto a ChatGPT

Large Language Models (LLMs) capaces de realizar tareas de razonamiento complejas han mostrado promesa en dominios especializados como la programación y la escritura creativa. Sin embargo, el mundo de los LLMs no es simplemente un paraíso de plug-and-play; existen desafíos en la usabilidad, la seguridad y las demandas computacionales. En este artículo, nos sumergiremos profundamente en las capacidades de Llama 2, mientras proporcionamos una guía detallada para configurar este LLM de alto rendimiento a través de Hugging Face y T4 GPUs en Google Colab.
Desarrollado por Meta con su asociación con Microsoft, este modelo de lenguaje grande de código abierto tiene como objetivo redefinir los reinos de la inteligencia artificial generativa y la comprensión del lenguaje natural. Llama 2 no es solo otro modelo estadístico entrenado en terabytes de datos; es la encarnación de una filosofía. Una que enfatiza el enfoque de código abierto como la columna vertebral del desarrollo de la IA, particularmente en el espacio de la inteligencia artificial generativa.
Llama 2 y su sustituto optimizado para diálogo, Llama 2-Chat, vienen equipados con hasta 70 mil millones de parámetros. Pasan por un proceso de afinamiento diseñado para alinearlos estrechamente con las preferencias humanas, lo que los hace más seguros y efectivos que muchos otros modelos públicamente disponibles. Este nivel de granularidad en el afinamiento suele estar reservado para LLMs de “producto” cerrados, como ChatGPT y BARD, que no suelen estar disponibles para escrutinio o personalización pública.
Inmersión técnica profunda de Llama 2
Para entrenar el modelo Llama 2; al igual que sus predecesores, utiliza una arquitectura de transformador auto-regresiva transformer architecture, preentrenada en un corpus extenso de datos auto-supervisados. Sin embargo, agrega una capa adicional de sofisticación al utilizar el Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF) para alinearse mejor con el comportamiento y las preferencias humanas. Esto es computacionalmente costoso pero vital para mejorar la seguridad y la eficacia del modelo.
Preentrenamiento y eficiencia de datos
La innovación fundamental de Llama 2 radica en su régimen de preentrenamiento. El modelo toma pistas de su predecesor, Llama 1, pero introduce varias mejoras cruciales para elevar su rendimiento. Notablemente, un aumento del 40% en el número total de tokens entrenados y una expansión de dos veces la longitud del contexto destacan. Además, el modelo aprovecha la atención de consulta agrupada (GQA) para amplificar la escalabilidad de inferencia.
Afinamiento supervisado (SFT) y Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF)
Llama-2-chat ha sido rigurosamente afinado utilizando tanto SFT como RLHF. En este contexto, SFT sirve como un componente integral del marco RLHF, afinando las respuestas del modelo para alinearlas estrechamente con las preferencias y expectativas humanas.
OpenAI ha proporcionado una ilustración informativa que explica las metodologías SFT y RLHF empleadas en InstructGPT. Al igual que LLaMa 2, InstructGPT también aprovecha estas técnicas de entrenamiento avanzadas para optimizar el rendimiento de su modelo.
El paso 1 en la imagen a continuación se centra en el Afinamiento Supervisado (SFT), mientras que los pasos siguientes completan el proceso de Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF).
El Afinamiento Supervisado (SFT) es un proceso especializado destinado a optimizar un LLM preentrenado para una tarea descendente específica. A diferencia de los métodos no supervisados, que no requieren validación de datos, SFT emplea un conjunto de datos que ha sido prevalidado y etiquetado.
Generalmente, crear estos conjuntos de datos es costoso y consume mucho tiempo. El enfoque de Llama 2 fue la calidad sobre la cantidad. Con solo 27,540 anotaciones, el equipo de Meta logró niveles de rendimiento competitivos con los anotadores humanos. Esto se alinea bien con estudios recientes que muestran que incluso conjuntos de datos limitados pero limpios pueden impulsar resultados de alta calidad.
En el proceso SFT, el LLM preentrenado se expone a un conjunto de datos etiquetados, donde los algoritmos de aprendizaje supervisado entran en juego. Los pesos internos del modelo se recalibran en función de los gradientes calculados a partir de una función de pérdida específica de la tarea.
Esta optimización permite que el LLM comprenda los patrones y matices intricados incrustados en el conjunto de datos etiquetado. En consecuencia, el modelo no es solo una herramienta generalizada, sino que evoluciona en un activo especializado, hábil para realizar la tarea objetivo con un alto grado de precisión.
El aprendizaje de refuerzo es el siguiente paso, destinado a alinear el comportamiento del modelo con las preferencias humanas más estrechamente.
La fase de afinamiento aprovechó el Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF), empleando técnicas como Importance Sampling y Optimización de la Política Proximal para introducir ruido algorítmico, evitando así los óptimos locales. Este afinamiento iterativo no solo mejoró el modelo, sino que también alineó su salida con las expectativas humanas.
Llama 2-Chat utilizó un protocolo de comparación binaria para recopilar datos de preferencia humana, marcando una tendencia notable hacia enfoques más cualitativos. Este mecanismo informó los Modelos de Recompensa, que se utilizan posteriormente para afinar el modelo de inteligencia artificial conversacional.
Atención Fantasma: Diálogos multi-vuelta
Meta introdujo una nueva función, Atención Fantasma (GAtt), diseñada para mejorar el rendimiento de Llama 2 en diálogos multi-vuelta. Esto resuelve efectivamente el problema persistente de pérdida de contexto en conversaciones en curso. GAtt actúa como un ancla, vinculando las instrucciones iniciales a todos los mensajes de usuario posteriores. Junto con técnicas de aprendizaje de refuerzo, ayuda a producir respuestas consistentes, relevantes y alineadas con el usuario a lo largo de diálogos más largos.
Desde el repositorio de Meta Git utilizando download.sh
- Visite el sitio web de Meta: Navegue hasta el sitio oficial de Llama 2 de Meta y haga clic en ‘Descargar el modelo’
- Rellene los detalles: Lea y acepte los términos y condiciones para proceder.
- Confirmación por correo electrónico: Una vez que se envíe el formulario, recibirá un correo electrónico de Meta con un enlace para descargar el modelo desde su repositorio de Git.
- Ejecutar download.sh: Clone el repositorio de Git y ejecute el script
download.sh. Este script lo solicitará que se autentique utilizando una URL de Meta que caduca en 24 horas. También elegirá el tamaño del modelo: 7B, 13B o 70B.
Desde Hugging Face
- Reciba el correo electrónico de aceptación: Después de obtener acceso desde Meta, vaya a Hugging Face.
- Solicite acceso: Elija el modelo deseado y envíe una solicitud para otorgar acceso.
- Confirmación: Espere un correo electrónico de ‘acceso otorgado’ dentro de 1-2 días.
- Generar tokens de acceso: Navegue hasta ‘Configuración’ en su cuenta de Hugging Face para crear tokens de acceso.
La versión 4.31 de Transformers es completamente compatible con LLaMa 2 y abre muchas herramientas y funcionalidades dentro del ecosistema de Hugging Face. Desde scripts de entrenamiento e inferencia hasta cuantización de 4 bits con bitsandbytes y Afinamiento de Parámetros Eficiente (PEFT), la herramienta es extensa. Para empezar, asegúrese de estar en la última versión de Transformers y haber iniciado sesión en su cuenta de Hugging Face.
Aquí hay una guía simplificada para ejecutar la inferencia del modelo LLaMa 2 en un entorno de Google Colab, aprovechando un tiempo de ejecución de GPU:
Instalación de paquetes
!pip install transformers !huggingface-cli login
Importar las bibliotecas de Python necesarias.
from transformers import AutoTokenizer import transformers import torch
Inicializar el modelo y el tokenizador
En este paso, especifique qué modelo Llama 2 utilizará. Para esta guía, se utiliza meta-llama/Llama-2-7b-chat-hf.
model = "meta-llama/Llama-2-7b-chat-hf" tokenizer = AutoTokenizer.from_pretrained(model)
Configurar la canalización
Utilice la canalización de Hugging Face para la generación de texto con ajustes específicos:
pipeline = transformers.pipeline( "text-generation", model=model, torch_dtype=torch.float16, device_map="auto")
Generar secuencias de texto
Finalmente, ejecute la canalización y genere una secuencia de texto en función de su entrada:
secuencias = pipeline(
‘¿Quiénes son los contribuyentes clave en el campo de la inteligencia artificial?\n’,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)















