AI Techniques

Haciendo la IA más inteligente y más pequeña: Una guía para un entrenamiento de modelos eficiente

Illustration of AI model training process with smaller and larger models

Haciendo la IA Más Inteligente y Más Pequeña: Una Guía Práctica para el Entrenamiento Eficiente de Modelos

Hola, soy Sanchay Thalnerkar, un Ingeniero de IA. He estado explorando maneras de hacer que la IA sea más eficiente, y estoy emocionado de compartir un enfoque interesante en el que he estado trabajando. En el mundo de la inteligencia artificial, los modelos más grandes suelen acaparar la atención, pero, ¿y si pudieras obtener resultados similares sin el alto costo y la enorme potencia de cómputo? Esta guía te lleva a través de un enfoque ingenioso: utilizar un gran modelo de IA para crear datos de entrenamiento de alta calidad, y luego usar esos datos para entrenar un modelo más pequeño y manejable.

Mi Método: IA Eficiente en Tres Pasos

Primero, aprovechamos un gran modelo como Meta-Llama-3.1-405B, accesible a través de la API de IA/ML, para generar un conjunto de datos de escenarios de marketing. La plataforma de APIs de IA/ML nos permite aprovechar las amplias capacidades de este poderoso modelo, creando la guía de estudio perfecta para nuestro modelo más pequeño. Estos datos se formatean utilizando la estructura de prompts de alpaca, facilitando así que un modelo más pequeño aprenda de manera efectiva. Finalmente, utilizamos una herramienta llamada Unsloth para entrenar de manera eficiente nuestro modelo más pequeño, comenzando con Meta-Llama-3.1-8B, con estos datos.

¿El resultado? Un modelo que es más pequeño, rápido y capaz de producir salidas de alta calidad para tareas de marketing específicas, comparable a lo que esperarías de un modelo mucho más grande. Por ejemplo, cuando se le pide Crear una campaña de marketing para promover una barra de chocolate de Cadbury, dirigiéndose a adultos y baby boomers, los resultados pueden ser sorprendentemente buenos.

Este método ofrece varios beneficios. Permite crear modelos de IA especializados en tareas específicas, haciéndolo accesible incluso para pequeñas empresas o desarrolladores individuales sin necesidad de hardware caro o presupuestos enormes. Al enfocarse en generar datos de entrenamiento diversos y de alta calidad y afinar cuidadosamente tu modelo más pequeño, puedes crear herramientas de IA poderosas y eficientes adaptadas a tus necesidades.

Paso 1: Configurando el Entorno

Antes de comenzar, configuremos nuestro entorno de desarrollo:

  • Instalar Python: Si aún no lo has hecho, descarga e instala Python desde Descarga de Python.
  • Crear un entorno virtual:
  1. Abre el símbolo del sistema
  2. Navega a tu directorio de proyecto
  3. Ejecuta los siguientes comandos:
python -m venv .venv
source .venv/bin/activate
  • Instalar paquetes requeridos: Ejecuta los siguientes comandos en tu entorno virtual activado:
pip install nombre-del-paquete-necesario

Dependencias adicionales: Según el código en el tutorial, también necesitarás instalar:

pip install unsloth alpaca-prompt

Comienza importando librerías.

Paso 1: Configurando el Cliente de API de IA/ML y Manejo de Llamadas API

Antes de sumergirnos en la creación de la función de generación de datos, es crucial configurar primero el cliente de API de IA/ML. Esta API ofrece un conjunto de poderosas funcionalidades de IA, incluyendo completación de texto, inferencia de imágenes, y más. Vamos a repasar los pasos necesarios para que todo esté configurado y listo para usar.

1.1: Crear una Cuenta y Obtener una Clave API

Para comenzar a usar la API de IA/ML, deberás crear una cuenta y generar una clave API. Sigue estos pasos:

  1. Crear una cuenta: Visita el sitio web de la API de IA/ML y regístrate para abrir una cuenta.
  2. Generar una clave API: Después de iniciar sesión, navega a tu panel de control y genera tu clave API aquí.

Necesitarás usar esta clave API para autenticar tus solicitudes y acceder a los diversos modelos de IA disponibles a través de la API.

1.2: Inicializar el Cliente de API de IA/ML

Una vez que tengas tu clave API, puedes configurar el cliente en tu entorno. Este cliente se usará para interactuar con la API de IA/ML para realizar varias solicitudes relacionadas con IA.

import requests
API_KEY = "tu_clave_api_aquí"

Reemplaza tu_clave_api_aquí con la clave API que generaste anteriormente. Este cliente será la interfaz principal para enviar solicitudes a la API de IA/ML.

1.3: Implementación de Llamadas API Limitadas por Tasa

Para manejar las interacciones con la API de manera más efectiva, especialmente bajo límites de tasa u otros problemas transitorios, definimos una función llamada rate_limited_api_call. Esta función asegura que nuestras solicitudes sean resistentes a problemas potenciales como límites de tasa por parte de la API:

def rate_limited_api_call(model, messages):  # Definiendo la función
    response = requests.post(API_ENDPOINT, headers=headers, json=data)
    return response.json()

1.4: Manejo de Errores y Reintentos

Para mejorar aún más la fiabilidad de nuestras llamadas API, definimos una función llamada get_model_responses. Esta función es responsable de manejar errores y volver a intentar la llamada API un número especificado de veces (max_retries) antes de rendirse:

def get_model_responses(num_retries=3):  # Definición de función
    for i in range(num_retries):
        try:
            response = rate_limited_api_call()
            return response
        except Exception as e:
            print(f"Error: {e}")

Paso 2: Creando la Función de Generación de Datos

Revisemos el proceso completo de cómo funciona la función de generación de datos, paso a paso.

Primero, definimos una función llamada generate_multiple_marketing_samples. El trabajo de esta función es crear varios escenarios de marketing que podemos usar más tarde para entrenar un modelo de IA más pequeño y eficiente. Aquí te mostramos cómo comienza:

Configuración de Instrucciones

En esta primera parte, creamos dos mensajes. El system_message establece el escenario, diciéndole a la IA que se supone que debe actuar como un experto en marketing de primera categoría. El user_message proporciona instrucciones específicas: le dice a la IA cuántos escenarios generar (basado en el num_samples que ingresamos) y cómo formatear cada escenario. El formato incluye tres partes: una instrucción, alguna información de fondo y una respuesta, que será la solución a la tarea de marketing.

Ejemplo de Contenido Generado

A continuación, se presentan algunos ejemplos del contenido de marketing generado. Las salidas incluyen anuncios de Facebook, páginas de ventas y hilos de Twitter adaptados a audiencias y objetivos específicos.

Ejemplo 1: Anuncio de Facebook para un Programa de Fitness

Gancho: "Ponte en forma, no frustrado: ¡desbloquea tu cuerpo soñado en solo 15 minutos al día!"
Narrativa: "Como profesional ocupado, sabes lo difícil que es encontrar tiempo para el gimnasio..."
Clímax: "Únete a nuestra comunidad de individuos afines..."
Resolución: "¡Regístrate ahora y da el primer paso hacia un tú más saludable y feliz!"

Ejemplo 2: Página de Ventas para un E-book sobre Emprendimiento

Gancho: "Desbloquea los secretos para construir un negocio de 6 cifras desde cero"
Narrativa: "¿Estás cansado de vivir de sueldo en sueldo?..."
Clímax: "Obtén acceso instantáneo a nuestra guía integral..."
Resolución: "¡Compra ahora y comienza a construir el negocio de tus sueños!"

Ejemplo 3: Hilo de Twitter para una Marca de Moda Sostenible

1/6 "La industria de la moda es uno de los mayores contaminantes del mundo..."
2/6 "Nuestra misión es hacer que la moda sostenible sea accesible..."
6/6 "Juntos, podemos hacer la diferencia..."

Por Qué Este Método Funciona

Esta función es simple pero poderosa. Nos permite aprovechar las capacidades de un gran modelo de IA para generar datos de entrenamiento diversos y de alta calidad. Estos datos están perfectamente formateados para entrenar un modelo más pequeño que pueda realizar tareas específicas de marketing.

Paso 3: Control de Calidad

Después de generar nuestras muestras, es crucial asegurarnos de que cumplan con un cierto estándar de calidad. Aquí es donde entra en juego nuestra función de control de calidad. El objetivo aquí es filtrar cualquier muestra que pueda no ser lo suficientemente buena para entrenar nuestro modelo de IA.

def quality_control_function(sample):
    if len(sample) < 50:  # Ejemplo de verificación
        return False
    if is_repetitive(sample):
        return False
    return True

Paso 4: Asegurando Diversidad

Para construir un modelo de IA bien equilibrado y efectivo, es esencial que nuestros datos de entrenamiento cubran una amplia gama de escenarios de marketing. Aquí es donde entra en juego nuestra función de seguimiento de diversidad.

def diversity_tracking(dataset):
    industry_counter = Counter()
    // La lógica de conteo va aquí
    report_results(industry_counter)

Paso 5: Creando el Conjunto de Datos para Afinación

En este paso, nuestro objetivo es crear un conjunto de datos diseñado específicamente para la afinación de un modelo de lenguaje para generar contenido de marketing y redes sociales.

def create_finetuning_dataset():
    while samples_created < target_samples:
        generate_samples()  # Generar nuevas muestras
        save_progress()  # Guardar progreso

Paso 6: Preparación del Modelo y Cuantización

Con el conjunto de datos listo, el siguiente paso crucial es preparar el modelo de lenguaje para la afinación.

model = FastLanguageModel.from_pretrained("ruta_del_modelo")

Paso 7: Aplicando Adaptadores LoRA al Modelo

Este paso mejora el modelo base aplicando adaptadores LoRA (Low-Rank Adaptation).

lora_config = LoRAConfig(rank=16, alpha=32, dropout=0)

Paso 8: Formateando el Conjunto de Datos para Entrenamiento

En este paso, preparamos el conjunto de datos para el entrenamiento formateándolo en una estructura que el modelo puede procesar fácilmente.

def formatting_prompts_func(example):
    formatted_example = f"{example['instruction']}: {example['input']}\n
{example['response']}"
    return formatted_example

Paso 9: Entrenando el Modelo

En este paso, pasamos a la fase crucial de entrenamiento del modelo usando el SFTTrainer de la biblioteca TRL de Hugging Face.

trainer.train(dataset)

Paso 10: Generando y Analizando Salidas

Después de que el modelo ha sido entrenado, nos enfocamos en generar texto basado en un prompt dado.

output = model.generate(prompt)
parsed_output = parse_output(output)

Paso 11: Guardando y Recargando el Modelo

En este paso final, nos enfocamos en guardar el modelo afinado y el tokenizador.

save_model(model, "modelo_lora")

Comparación entre el 405B y el 8B para el Mismo Prompt

Al comparar las salidas del modelo original 405B con las del modelo afinado 8B, las diferencias son claras y significativas. El modelo afinado demuestra un enfoque más refinado y práctico, convirtiéndolo en una herramienta destacada para aplicaciones en el mundo real.

Análisis de las Fortalezas del Modelo Afinado

El modelo afinado está más alineado con aplicaciones prácticas del mundo real. Aquí están sus fortalezas:

  • Enfocado y Preciso: El modelo afinado entrega exactamente lo que necesitas.
  • Claro y Conciso: El modelo afinado sobresale en comunicación clara.
  • Adaptado a la Tarea: Proporciona respuestas que son específicamente adecuadas para la tarea.
  • Ahorro de Tiempo: La eficiencia del modelo afinado significa que pasas menos tiempo editando.

Este modelo demuestra ser una herramienta poderosa y práctica para la creación de contenido, especialmente para marketers y profesionales ocupados.

Todo el proceso de afinación y generación de contenido utilizando el modelo 8B se logró a un costo de aproximadamente $3-5, convirtiéndolo en una solución asequible y eficiente para la creación de contenido de alta calidad.

Puede que te interese

A visual guide to using IBM Watsonx.ai for generative AI applications.
An infographic comparing LLaMA 3.1 and Mistral 2 Large in synthetic data tasks.

Dejar un comentario

Todos los comentarios se revisan antes de su publicación.

Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.