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

Inmersión en el desafío de código abierto a ChatGPT

Los grandes modelos de lenguaje (LLM) 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 LLM no es simplemente un paraíso de “conectar y usar”; existen desafíos en usabilidad, seguridad y demandas computacionales. En este artículo, nos sumergiremos en las capacidades de Llama 2, proporcionando una guía detallada para configurar este LLM de alto rendimiento a través de Hugging Face y las GPU T4 en Google Colab.

Desarrollado por Meta en colaboración con Microsoft, este modelo de lenguaje de gran tamaño de código abierto tiene como objetivo redefinir los dominios de la IA generativa y la comprensión del lenguaje natural. Llama 2 no es solo otro modelo estadístico entrenado con terabytes de datos; es una encarnación de una filosofía. Una que enfatiza un enfoque de código abierto como la base del desarrollo de IA, particularmente en el espacio de la IA generativa.

Llama 2 y su sustituto optimizado para diálogos, Llama 2-Chat, vienen equipados con hasta 70 mil millones de parámetros. Se someten a 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 disponibles públicamente. Este nivel de granularidad en el ajuste fino a menudo se reserva para LLM “producto” cerrados, como ChatGPT y BARD, que no están disponibles para su examen o personalización pública.

Desglose Técnico de Llama 2

Para entrenar el modelo Llama 2, al igual que sus predecesores, se utiliza una arquitectura transformadora auto-regresiva, pre-entrenada en un extenso corpus de datos auto-supervisados. Sin embargo, agrega una capa adicional de sofisticación al utilizar el Aprendizaje por Reforzamiento 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 efectividad del modelo.

Arquitectura de entrenamiento de Meta Llama 2

Pre-entrenamiento y Eficiencia de Datos

La innovación fundamental de Llama 2 radica en su régimen de pre-entrenamiento. El modelo toma referencias de su predecesor, Llama 1, pero introduce varias mejoras cruciales para elevar su rendimiento. Destaca especialmente un aumento del 40% en el número total de tokens entrenados y una duplicación en la longitud del contexto. Además, el modelo utiliza atención de consulta agrupada (GQA) para amplificar la escalabilidad de la inferencia.

Ajuste Fino Supervisado (SFT) y Aprendizaje por Reforzamiento con Retroalimentación Humana (RLHF)

Llama-2-chat ha sido rigurosamente ajustado fino utilizando tanto el SFT como el Aprendizaje por Reforzamiento con Retroalimentación Humana (RLHF). En este contexto, el SFT sirve como un componente integral del marco RLHF, refinando las respuestas del modelo para alinearse estrechamente con las preferencias y expectativas humanas.

OpenAI ha proporcionado una ilustración perspicaz que explica las metodologías SFT y RLHF utilizadas en InstructGPT. Al igual que LLaMa 2, InstructGPT también aprovecha estas técnicas avanzadas de entrenamiento para optimizar el rendimiento de su modelo.

El paso 1 en la imagen siguiente se centra en el Ajuste Fino Supervisado (SFT), mientras que los pasos posteriores completan el proceso de Aprendizaje por Reforzamiento a partir de la Retroalimentación Humana (RLHF).

Instruction-GPT

El Ajuste Fino Supervisado (SFT) es un proceso especializado destinado a optimizar un modelo de lenguaje de gran tamaño (LLM) pre-entrenado para una tarea específica. A diferencia de los métodos no supervisados, que no requieren validación de datos, el SFT utiliza un conjunto de datos que ha sido pre-validado y etiquetado.

Generalmente, la creación de estos conjuntos de datos es costosa y lleva mucho tiempo. El enfoque de Llama 2 fue calidad sobre 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 generar resultados de alta calidad.

En el proceso de SFT, el LLM pre-entrenado se expone a un conjunto de datos etiquetado, 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 función de pérdida cuantifica las discrepancias entre las salidas predichas del modelo y las etiquetas de verdad.

Esta optimización permite que el LLM comprenda los patrones y matices intrincados incorporados en el conjunto de datos etiquetado. En consecuencia, el modelo no es solo una herramienta generalizada, sino que se convierte en un activo especializado, capaz de realizar la tarea objetivo con un alto grado de precisión.

El aprendizaje por refuerzo es el siguiente paso, orientado a alinear el comportamiento del modelo más estrechamente con las preferencias humanas.

La fase de ajuste utilizó el aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF), empleando técnicas como el muestreo de importancia y la optimización de políticas proximales para introducir ruido algorítmico, evitando así los óptimos locales. Esta afinación iterativa no solo mejoró el modelo, sino que también alineó su salida con las expectativas humanas.

El Llama 2-Chat utilizó un protocolo de comparación binaria para recopilar datos de preferencia humana, marcando una notable tendencia hacia enfoques más cualitativos. Este mecanismo informó a los Modelos de Recompensa, que luego se utilizan para refinar el modelo de IA conversacional.

Atención Fantasma: Diálogos de Múltiples Turnos

Meta introdujo una nueva función, Atención Fantasma (GAtt), que está diseñada para mejorar el rendimiento de Llama 2 en diálogos de múltiples turnos. Esto resuelve eficazmente el problema persistente de la pérdida de contexto en conversaciones en curso. GAtt actúa como un ancla, vinculando las instrucciones iniciales con todos los mensajes posteriores del usuario. Junto con técnicas de aprendizaje por refuerzo, ayuda a generar respuestas consistentes, relevantes y alineadas con el usuario en diálogos más largos.

Desde el Repositorio Git de Meta Usando download.sh

  1. Visita el Sitio Web de Meta: Ve al sitio oficial de Llama 2 de Meta y haz clic en ‘Descargar el Modelo’
  2. Rellena los Detalles: Lee y acepta los términos y condiciones para continuar.
  3. Confirmación por Correo Electrónico: Una vez enviado el formulario, recibirás un correo electrónico de Meta con un enlace para descargar el modelo desde su repositorio git.
  4. Ejecuta download.sh: Clona el repositorio git y ejecuta el script download.sh. Este script te pedirá autenticarte utilizando una URL de Meta que caduca en 24 horas. También elegirás el tamaño del modelo: 7B, 13B o 70B.

Desde Hugging Face

  1. Recibe un Correo Electrónico de Aceptación: Después de obtener acceso desde Meta, ve a Hugging Face.
  2. Solicita Acceso: Elige el modelo deseado y envía una solicitud para obtener acceso.
  3. Confirmación: Espera un correo electrónico de ‘acceso concedido’ en 1-2 días.
  4. Genera Tokens de Acceso: Ve a ‘Configuración’ en tu cuenta de Hugging Face para crear tokens de acceso.

La versión 4.31 de Transformers es completamente compatible con LLaMa 2 y ofrece muchas herramientas y funcionalidades dentro del ecosistema de Hugging Face. Desde scripts de entrenamiento e inferencia hasta cuantificación de 4 bits con bitsandbytes y ajuste fino eficiente de parámetros (PEFT), el conjunto de herramientas es amplio. Para comenzar, asegúrate de tener la última versión de Transformers e iniciar sesión en tu cuenta de Hugging Face.

Aquí tienes una guía simplificada para ejecutar la inferencia del modelo LLaMa 2 en un entorno de Google Colab, aprovechando un tiempo de ejecución GPU:

Modelo Google Colab – GPU T4

 

 

 

 

 

 

Instalación del Paquete

!pip install transformers
!huggingface-cli login

Importa las bibliotecas de Python necesarias.

from transformers import AutoTokenizer
import transformers
import torch

Inicializa el Modelo y el Tokenizador

En este paso, especifica qué modelo de Llama 2 utilizarás. Para esta guía, utilizamos meta-llama/Llama-2-7b-chat-hf.

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

Configura el Pipeline

Utiliza el pipeline 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, ejecuta el pipeline y genera una secuencia de texto basada en tu entrada:

sequences = pipeline(
    '¿Quiénes son los principales contribuyentes al 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 sequences:
    print(f"Resultado: {seq['generated_text']}")

Interfaz de Usuario de A16Z para LLaMa 2

Andreessen Horowitz (A16Z) ha lanzado recientemente una interfaz de chatbot de última generación basada en Streamlit, diseñada específicamente para Llama 2. Alojada en GitHub, esta interfaz conserva el historial de chat de la sesión y también proporciona la flexibilidad de seleccionar entre múltiples puntos finales de la 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 probarlo, hay una demostración en vivo disponible en Llama2.ai.

LLaMa2.ai

Llama 2: ¿Qué lo hace diferente de los modelos GPT y su predecesor Llama 1?

Variedad en Escala

A diferencia de muchos modelos de lenguaje que ofrecen una escalabilidad limitada, Llama 2 te ofrece una variedad de opciones para modelos con parámetros variados. El modelo va desde 7 mil millones hasta 70 mil millones de parámetros, lo que proporciona una amplia gama de configuraciones para adaptarse a 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 mediante el almacenamiento en caché de pares de tokens anteriores. Esto mejora eficazmente la escalabilidad de inferencia del modelo para mejorar la accesibilidad.

Referencias de Rendimiento

Análisis de Rendimiento de los Modelos de Chat Llama 2 con ChatGPT y Otros Competidores

Llama 2 ha establecido un nuevo estándar en 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 coincide en 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 simple producto; lo conciben como una herramienta impulsada por la comunidad. Llama 2 es de acceso gratuito tanto para fines de investigación como para uso no comercial. Su objetivo es democratizar las capacidades de IA, haciéndolas accesibles para startups, investigadores y empresas. Un paradigma de código abierto permite el “solucionado de problemas basado en la colaboración de la comunidad” del modelo. Los desarrolladores y los éticos de la IA pueden someterlo a pruebas de estrés, identificar vulnerabilidades y ofrecer soluciones a un ritmo acelerado.

Aunque los términos de licencia para LLaMa 2 son generalmente permisivos, existen excepciones. Grandes empresas con más de 700 millones de usuarios mensuales, como Google, requieren una autorización explícita de Meta para su utilización. Además, la licencia prohíbe el uso de LLaMa 2 para mejorar otros modelos de lenguaje.

Desafíos Actuales con Llama 2

  1. Generalización de Datos: Tanto Llama 2 como GPT-4 a veces tienen dificultades para lograr un rendimiento uniformemente alto en tareas divergentes. La calidad y diversidad de los datos son tan importantes como el volumen en estos escenarios.
  2. Transparencia del Modelo: Dada la experiencia previa con la IA produciendo resultados engañosos, explorar la fundamentación de la toma de decisiones detrás de estos modelos complejos es fundamental.

Code Llama: El último lanzamiento 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 optimizar 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 diversos requisitos de latencia. Con licencia abierta, Code Llama invita a la comunidad a contribuir para su mejora continua.

Presentando Code Llama, una herramienta de IA para la codificación

Conclusión

Este artículo te ha guiado en 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 basa en una variedad de técnicas avanzadas, desde arquitecturas de transformadores auto-regresivos hasta Aprendizaje por Reforzamiento con Retroalimentación Humana (RLHF). Con hasta 70 mil millones de parámetros y características como Ghost Attention, este modelo supera los estándares de la industria actual en ciertas áreas, y con su naturaleza abierta, abre el camino a una nueva era en la comprensión del lenguaje natural y la IA generativa.