0
respostas

[Sugestão] Fix para o erro

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!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora