Capítulo 1: Formatos de Dataset
Estruturando Dados para Fine-Tuning
Diferentes formatos servem a propósitos distintos. Compreendê-los ajuda você a escolher e preparar os dados de forma eficaz.
Formatos Comuns
1. Formato Alpaca
Instrução de turno único:
{
"instruction": "Summarize the following text",
"input": "The quick brown fox jumps over the lazy dog...",
"output": "A fox jumps over a dog."
}
# Alpaca template
template = """### Instruction:
{instruction}
### Input:
{input}
### Response:
{output}"""
2. Formato ShareGPT
Conversas de múltiplos turnos:
{
"conversations": [
{"from": "system", "value": "You are a helpful assistant."},
{"from": "human", "value": "What is Python?"},
{"from": "gpt", "value": "Python is a programming language..."},
{"from": "human", "value": "How do I install it?"},
{"from": "gpt", "value": "You can download it from python.org..."}
]
}
3. Simple Completion
Texto simples para pré-treinamento contínuo:
{"text": "Full document or paragraph of text..."}
Templates de Chat
Os modelos esperam formatos específicos. Use o template do tokenizer:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")
messages = [
{"role": "system", "content": "You are helpful."},
{"role": "user", "content": "Hello!"},
{"role": "assistant", "content": "Hi! How can I help?"},
]
text = tokenizer.apply_chat_template(messages, tokenize=False)
print(text)
Conversão de Formatos
def alpaca_to_messages(example):
"""Convert Alpaca format to messages."""
messages = []
if example.get("input"):
user_content = f"{example['instruction']}\n\n{example['input']}"
else:
user_content = example["instruction"]
messages.append({"role": "user", "content": user_content})
messages.append({"role": "assistant", "content": example["output"]})
return {"messages": messages}
# Apply to dataset
dataset = dataset.map(alpaca_to_messages)
Principais Pontos
✅ Alpaca: Instruções de turno único
✅ ShareGPT: Conversas de múltiplos turnos
✅ Sempre use o template de chat do modelo
✅ Consistência no formato é fundamental