For studying purposes, I am trying to create a simple fine-tuning example using t5 and lighting:
import pandas as pd
df = pd.DataFrame({
"text": ["O Brasil é um país localizado na América do Sul.",
"A capital do Brasil é Brasília.",
"A população do Brasil é de mais de 210 milhões de pessoas."],
"question": ["Qual é o país localizado na América do Sul?",
"Qual é a capital do Brasil?",
"Qual é a população do Brasil?"]
})
from transformers import T5ForConditionalGeneration
import torch
model = T5ForConditionalGeneration.from_pretrained("t5-base")
from pytorch_lightning import LightningModule, Trainer
class T5FineTuner(LightningModule):
def __init__(self):
super().__init__()
self.model = T5ForConditionalGeneration.from_pretrained("t5-base")
def forward(self, input_ids, attention_mask):
return self.model(input_ids, attention_mask)
def training_step(self, batch, batch_idx):
input_ids, attention_mask, target_ids = batch
output = self.model(input_ids, attention_mask)
output = output.logits
loss = self.loss(output, target_ids)
self.log("loss", loss, on_step=True, on_epoch=True)
return loss
def configure_optimizers(self):
optimizer = torch.optim.AdamW(self.model.parameters(), lr=1e-4)
return optimizer
trainer = Trainer(max_epochs=5, gpus=1)
trainer.fit(model=T5FineTuner(), train_dataloaders=df)
But I got this error:
ValueError: too many values to unpack (expected 3)
How can I fix that?