📚 Módulo 6: Preparação de Conjuntos de Dados e Formato de Instruções

6.1 Formato de Conjunto de Dados para Ajuste Fino de Instruções

Para tarefas de geração de texto (chat, instruções, QA), o formato mais comum é o formato Alpaca, que consiste em um JSON com três campos por exemplo:

{
  "instruction": "Escreva uma descrição curta para um produto tecnológico.",
  "input": "Produto: Fones de ouvido sem fio com cancelamento de ruído. Preço: $129,99.",
  "output": "Aproveite sua música sem distrações com estes fones de ouvido sem fio de alta fidelidade. Com cancelamento ativo de ruído e até 30 horas de duração da bateria, são ideais para viajar, trabalhar ou simplesmente relaxar. Apenas $129,99."
}
  • instruction: A tarefa que o modelo deve realizar.
  • input: Contexto ou entrada adicional (opcional).
  • output: A resposta desejada.

6.2 Tokenização e Empacotamento

Este formato deve ser convertido em tensores que o modelo possa entender. O tokenizer do modelo converte texto em IDs, e um modelo de chat é aplicado se necessário (como em Qwen ou Llama 3).

def format_instruction(example):
    return f"""### Instrução:
{example['instruction']}

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

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

# Tokenização
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: Em modelos instrutivos, é comum mascarar tokens de entrada (instrução + entrada) em labels, para que o modelo calcule a perda apenas na saída. Isso é feito atribuindo -100 a esses tokens (ignorados pela função de perda do PyTorch).


Course Info

Course: AI-course3

Language: PT

Lesson: Module6