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 demostrado su potencial 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 en colaboración con Microsoft, este modelo de lenguaje grande de código abierto tiene como objetivo redefinir los límites de la inteligencia artificial generativa y la comprensión del lenguaje natural. Llama 2 no es solo otro modelo estadístico entrenado con 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álogos, Llama 2-Chat, vienen equipados con hasta 70 mil millones de parámetros. Pasan por un proceso de ajuste fino 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 ajuste fino suele reservarse para LLMs “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 twofold en la longitud de contexto destacan. Además, el modelo aprovecha la atención de consulta agrupada (GQA) para amplificar la escalabilidad de inferencia.
Ajuste fino supervisado (SFT) y Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF)
Llama-2-chat ha sido rigurosamente ajustado utilizando tanto SFT como Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF). En este contexto, SFT sirve como un componente integral del marco RLHF, perfeccionando las respuestas del modelo para alinearlas estrechamente con las preferencias y expectativas humanas.
OpenAI ha proporcionado una ilustración reveladora 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.
Paso 1 en la imagen a continuación se centra en el Ajuste fino supervisado (SFT), mientras que los pasos siguientes completan el proceso de Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF).
El Ajuste fino supervisado (SFT) es un proceso especializado destinado a optimizar un LLM preentrenado para una tarea específica de downstream. 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 entran en juego los algoritmos de aprendizaje supervisado. 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 intrincados incrustados en el conjunto de datos etiquetado. En consecuencia, el modelo no es solo una herramienta generalizada, sino que evoluciona hasta convertirse 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 de manera más estrecha.
La fase de ajuste fino aprovechó el Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF), empleando técnicas como Importance Sampling y Proximal Policy Optimization para introducir ruido algorítmico, evitando así los óptimos locales. Este ajuste fino 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 ajustar el modelo de inteligencia artificial conversacional.
Atención fantasma: diálogos multi-vuelta
Meta introdujo una nueva característica, 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 concedido’ 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 y inferencia hasta cuantización de 4 bits con bitsandbytes y ajuste fino eficiente de parámetros (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.
A continuación, se proporciona 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 configuraciones específicas:
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)
for seq in secuencias:
print(f"Resultado: {seq['generated_text']}")
Interfaz de usuario de A16Z para LLaMa 2
Andreessen Horowitz (A16Z) ha lanzado recientemente una interfaz de chatbot basada en Streamlit personalizada para Llama 2. Alojada en GitHub, esta interfaz de usuario conserva el historial de chat de sesión y también ofrece la flexibilidad de seleccionar entre varios puntos de conexión de API de Llama 2 alojados en Replicate. Este diseño centrado en el usuario tiene como objetivo simplificar las interacciones con Llama 2, convirtiéndolo en una herramienta ideal tanto para desarrolladores como para usuarios finales. Para aquellos interesados en experimentar esto, hay una demo en vivo disponible en Llama2.ai.
Llama 2: ¿Qué lo hace diferente de los modelos GPT y su predecesor Llama 1?
Variabilidad en la escala
A diferencia de muchos modelos de lenguaje que ofrecen una escalabilidad limitada, Llama 2 ofrece una variedad de opciones para modelos con parámetros variados. El modelo se escala desde 7 mil millones hasta 70 mil millones de parámetros, proporcionando así una serie de configuraciones para satisfacer diversas necesidades computacionales.
Longitud de contexto mejorada
El modelo tiene una longitud de contexto aumentada de 4K tokens en comparación con Llama 1. Esto le permite retener más información, mejorando así su capacidad para comprender y generar contenido más complejo y extenso.
Atención de consulta agrupada (GQA)
La arquitectura utiliza el concepto de GQA, diseñado para acelerar el proceso de cálculo de atención al almacenar en caché pares de tokens anteriores. Esto mejora efectivamente la escalabilidad de inferencia del modelo, aumentando así su accesibilidad.
Benchmark de rendimiento
LLama 2 ha establecido un nuevo estándar en las métricas de rendimiento. No solo supera a su predecesor, LLama 1, sino que también ofrece una competencia significativa a otros modelos como Falcon y GPT-3.5.
El modelo más grande de Llama 2-Chat, el de 70B, también supera a ChatGPT en el 36% de los casos y iguala el rendimiento en otro 31,5% de los casos. Fuente: Paper
Código abierto: El poder de la comunidad
Meta y Microsoft pretenden que Llama 2 sea más que un producto; lo ven como una herramienta impulsada por la comunidad. Llama 2 es gratuito para acceder tanto para investigaciones como para fines no comerciales. Están apuntando a democratizar las capacidades de la IA, haciéndolas accesibles para startups, investigadores y empresas. Un paradigma de código abierto permite la “depuración de crowdsourcing” del modelo. Los desarrolladores y éticos de la IA pueden probar el modelo a fondo, identificar vulnerabilidades y ofrecer soluciones a un ritmo acelerado.
Aunque los términos de licencia para LLaMa 2 son en general permisivos, excepciones existen. Las grandes empresas con más de 700 millones de usuarios mensuales, como Google, requieren autorización explícita de Meta para su utilización. Además, la licencia prohíbe el uso de LLaMa 2 para la mejora de otros modelos de lenguaje.
Desafíos actuales con Llama 2
- Generalización de datos: Tanto Llama 2 como GPT-4 a veces vacilan en un rendimiento uniformemente alto en tareas divergentes. La calidad y diversidad de los datos son tan cruciales como el volumen en estos escenarios.
- Transparencia del modelo: Dada la experiencia previa con la IA que produce salidas engañosas, explorar la lógica de decisión detrás de estos modelos complejos es fundamental.
Code Llama – El lanzamiento más reciente de Meta
Meta anunció recientemente Code Llama, que es un modelo de lenguaje grande especializado en programación con tamaños de parámetros que van desde 7B hasta 34B. Similar a ChatGPT Code Interpreter; Code Llama puede simplificar los flujos de trabajo de los desarrolladores y hacer que la programación sea más accesible. Acomoda varios lenguajes de programación y viene en variaciones especializadas, como Code Llama–Python para tareas específicas de Python. El modelo también ofrece diferentes niveles de rendimiento para satisfacer diversas necesidades de latencia. Con licencia abierta, Code Llama invita a la comunidad a contribuir con mejoras continuas.
https://about.fb.com/news/2023/08/code-llama-ai-for-coding/
Conclusión
Este artículo lo ha guiado a través de la configuración de un modelo Llama 2 para la generación de texto en Google Colab con soporte de Hugging Face. El rendimiento de Llama 2 se alimenta de una variedad de técnicas avanzadas, desde arquitecturas de transformadores auto-regresivos hasta Aprendizaje de Refuerzo con Retroalimentación Humana (RLHF). Con hasta 70 mil millones de parámetros y características como Atención fantasma, este modelo supera los estándares actuales de la industria en ciertas áreas, y con su naturaleza abierta, allana el camino para una nueva era en la comprensión del lenguaje natural y la inteligencia artificial generativa.

















