Boa tarde pessoal, assim como outro colega, tive problemas ao seguir a aula e tentar executar o trainer.
Redigindo conforme na aula, é lançada uma RuntimeError exeception, dizendo "Unsloth: You must specify a formatting_func
".
Para resolver isso, crie uma função conforme exemplo a seguir:
def formatting_func(dados):
contextos = dados['contexto']
perguntas = dados['pergunta']
respostas = dados['resposta']
textos = []
for contexto,pergunta,resposta in zip(contextos,perguntas,respostas):
texto = gerar_prompt_sql(contexto,pergunta,resposta) + EOS_TOKEN
textos.append(texto)
return textos
Execute a célula para criar a mesma. Em seguida, inclua o seguinte parâmetro no SFTTrainer:
trainer = SFTTrainer(
model = modelo,
tokenizer = tokenizador,
train_dataset = dataset,
dataset_text_field = 'texto',
max_seq_length = 2048,
dataset_num_proc = 2,
packing = False,
formatting_func = formatting_func, # INCLUIR A CHAMADA PARA A NOVA FUNÇÃO
args = TrainingArguments(
per_device_train_batch_size = 2,
gradient_accumulation_steps = 4,
warmup_steps = 5,
learning_rate = 2e-5,
max_steps = 60,
fp16 = not is_bfloat16_supported(),
bf16 = is_bfloat16_supported(),
logging_steps = 1,
optim = 'adamw_8bit',
weight_decay = 0.01,
lr_scheduler_type = 'linear',
seed = 10,
output_dir = 'outputs'
)
)
Por aqui deu certo. Espero que ajude!