Campos Customizados no Dataset (v1.2+)
Visão Geral
A partir da versão 1.2, o OktoScript permite definir campos customizados para input e output no bloco DATASET. Além disso, você pode especificar campos de contexto que serão automaticamente incluídos no prompt durante o treinamento. Isso oferece flexibilidade total para trabalhar com datasets complexos que incluem informações contextuais (como menu, drinks, promoções, etc.).
Sintaxe
DATASET {
train: "dataset/train.jsonl"
validation: "dataset/val.jsonl"
format: "jsonl"
# Campos customizados (opcional)
input_field: "input" # Nome da coluna de entrada
output_field: "target" # Nome da coluna de saída (ou use target_field)
# Campos de contexto (opcional) - incluídos automaticamente no prompt
context_fields: ["menu", "drinks", "promotions"]
}
Resolução Automática de Campos
Se você não especificar input_field e output_field, o OktoEngine tentará encontrar os campos automaticamente na seguinte ordem:
Para modelos Seq2Seq (T5, BART, etc.):
input+output(padrão mais comum)input+target(alternativa comum)text(campo único, usado para ambos)- Primeiro campo string encontrado (fallback)
Para modelos Causal (GPT, etc.):
input+output(concatenados)input+target(concatenados)text(campo único)- Primeiro campo string encontrado (fallback)
Exemplos de Uso
Exemplo 1: Dataset com input e target
DATASET {
train: "dataset/train.jsonl"
format: "jsonl"
input_field: "input"
output_field: "target"
}
Dataset JSONL:
{"input": "User: Olá", "target": "Assistant: Olá! Como posso ajudar?"}
{"input": "User: Tudo bem?", "target": "Assistant: Sim, tudo ótimo!"}
Exemplo 2: Dataset com campos diferentes
DATASET {
train: "dataset/conversations.jsonl"
format: "jsonl"
input_field: "question"
output_field: "answer"
}
Dataset JSONL:
{"question": "Qual é a capital do Brasil?", "answer": "Brasília"}
{"question": "Quem descobriu o Brasil?", "answer": "Pedro Álvares Cabral"}
Exemplo 3: Dataset com nomes em português
DATASET {
train: "dataset/treino.jsonl"
format: "jsonl"
input_field: "entrada"
output_field: "saida"
}
Dataset JSONL:
{"entrada": "Traduza: Hello", "saida": "Olá"}
{"entrada": "Traduza: Goodbye", "saida": "Adeus"}
Exemplo 4: Sem especificar campos (auto-detecção)
DATASET {
train: "dataset/train.jsonl"
format: "jsonl"
# input_field e output_field não especificados
# O engine tentará encontrar automaticamente
}
O engine tentará:
input+output→ se não encontrarinput+target→ se não encontrartext→ se não encontrar- Primeiro campo string → fallback
Compatibilidade
Retrocompatibilidade
Scripts antigos continuam funcionando sem modificação:
# Script v1.0/v1.1 - funciona perfeitamente
DATASET {
train: "dataset/train.jsonl"
validation: "dataset/val.jsonl"
}
O engine detectará automaticamente input/output ou input/target.
Aliases Suportados
output_fieldetarget_fieldsão equivalentes- Ambos podem ser usados para definir o campo de saída
DATASET {
train: "dataset/train.jsonl"
input_field: "input"
output_field: "target" # ou target_field: "target"
}
Casos de Uso
1. Datasets de Terceiros
Quando você usa datasets de repositórios públicos que podem ter nomes de colunas diferentes:
DATASET {
train: "datasets/alpaca_pt.jsonl"
input_field: "instruction"
output_field: "response"
}
2. Migração de Formatos
Ao migrar de outros frameworks que usam convenções diferentes:
DATASET {
train: "dataset/old_format.jsonl"
input_field: "prompt"
output_field: "completion"
}
3. Datasets Multilíngues
Para datasets que misturam idiomas nos nomes das colunas:
DATASET {
train: "dataset/mixed.jsonl"
input_field: "entrada"
output_field: "saida"
}
Validação
O OktoEngine valida que:
- Os campos especificados existem no dataset
- Os campos contêm dados válidos (strings)
- O formato do dataset é compatível
Dicas
Use campos customizados quando necessário: Se seu dataset já usa
input/outputouinput/target, não precisa especificar.Teste primeiro: Use
okto validatepara verificar se os campos estão corretos antes de treinar.Consistência: Mantenha os mesmos nomes de campos em train, validation e test.
Documentação: Documente os nomes de campos customizados no seu projeto para facilitar colaboração.
Troubleshooting
Erro: "Field 'X' not found in dataset"
Causa: O campo especificado não existe no dataset.
Solução:
- Verifique os nomes das colunas no seu dataset
- Use
okto validatepara ver quais campos foram detectados - Remova
input_field/output_fieldpara usar auto-detecção
Erro: "No input/output fields found"
Causa: O engine não conseguiu encontrar campos válidos.
Solução:
- Especifique explicitamente
input_fieldeoutput_field - Verifique se o dataset tem pelo menos um campo string
Dataset funciona sem especificar campos, mas falha com campos customizados
Causa: Nome do campo incorreto ou com espaços/caracteres especiais.
Solução:
- Use exatamente o nome da coluna como aparece no JSON
- Evite espaços ou caracteres especiais nos nomes das colunas
Exemplo Completo
# okto_version: "1.2"
PROJECT "custom_fields_example"
DATASET {
train: "dataset/train.jsonl"
validation: "dataset/val.jsonl"
format: "jsonl"
type: "chat"
# Campos customizados
input_field: "user_message"
output_field: "assistant_response"
}
MODEL {
base: "t5-small"
device: "auto"
}
TRAIN {
epochs: 3
batch_size: 8
learning_rate: 0.0001
}
EXPORT {
format: ["okm"]
path: "export/"
}
Versão: 1.2+
Última atualização: 2024