📚 Módulo 6: Preparación de Conjuntos de Datos y Formato de Instrucciones

6.1 Formato de Conjunto de Datos para Ajuste Fino de Instrucciones

Para tareas de generación de texto (chat, instrucciones, QA), el formato más común es el formato Alpaca, que consiste en un JSON con tres campos por ejemplo:

{
  "instruction": "Escribe una descripción corta para un producto tecnológico.",
  "input": "Producto: Auriculares inalámbricos con cancelación de ruido. Precio: $129.99.",
  "output": "Disfruta de tu música sin distracciones con estos auriculares inalámbricos de alta fidelidad. Con cancelación activa de ruido y hasta 30 horas de duración de batería, son ideales para viajar, trabajar o simplemente relajarse. Solo $129.99."
}
  • instruction: La tarea que el modelo debe realizar.
  • input: Contexto o entrada adicional (opcional).
  • output: La respuesta deseada.

6.2 Tokenización y Empaquetado

Este formato debe convertirse en tensores que el modelo pueda entender. El tokenizer del modelo convierte el texto en IDs, y se aplica una plantilla de chat si es necesario (como en Qwen o Llama 3).

def format_instruction(example):
    return f"""### Instrucción:
{example['instruction']}

### Entrada:
{example['input']}

### Respuesta:
{example['output']}"""

# Tokenización
def tokenize_function(example):
    text = format_instruction(example)
    tokenized = tokenizer(
        text,
        truncation=True,
        max_length=512,
        padding="max_length",
    )
    tokenized["labels"] = tokenized["input_ids"].copy()
    return tokenized

Importante: En modelos instruct, es común enmascarar los tokens de entrada (instrucción + entrada) en labels, para que el modelo calcule la pérdida solo en la salida. Esto se hace asignando -100 a esos tokens (ignorados por la función de pérdida de PyTorch).


Course Info

Course: AI-course3

Language: ES

Lesson: Module6