Могу ли я узнать, существует ли правильный способ оценки адекватности и беглости текста, сгенерированного как вывод, который использует модель, которая была точно настроена на предварительно обученной языковой модели SOTA.
Что я имею попробовал: я тонко настраиваю модель, используя модель Hugging Face GPT2-medium, и хочу знать, как я могу оценить точность модели и получить оценку для модели, точно настроенной с моим собственным набором данных.
tokenizer = GPT2Tokenizer.from_pretrained('gpt2-medium')
model = GPT2LMHeadModel.from_pretrained('gpt2-medium')
model = model.to(device)
Реализация класса набора данных в соответствии с Pytorch
dataset = ArticleDataset()
article_loader=DataLoader(dataset, batch_size=1, shuffle=True)
model = model.to(device)
model.train()
optimizer = AdamW(model.parameters(), lr=LEARNING_RATE)
scheduler = get_linear_schedule_with_warmup(optimizer, num_warmup_steps=WARMUP_STEPS, num_training_steps = -1)
proc_seq_count = 0
sum_loss = 0.0
batch_count = 0
tmp_articles_tens = None
CUDA_LAUNCH_BLOCKING=1
for epoch in range(EPOCHS):
for idx, article in enumerate(article_loader):
article_tens=torch.tensor(tokenizer.encode(article[0])).unsqueeze(0).to(device)
outputs = model(article_tens, labels=work_article_tens)
loss, logits = outputs[:2]
loss.backward()
sum_loss = sum_loss + loss.detach().data
proc_seq_count = proc_seq_count + 1
if proc_seq_count == BATCH_SIZE:
proc_seq_count = 0
batch_count += 1
optimizer.step()
scheduler.step()
optimizer.zero_grad()
model.zero_grad()
if batch_count == 100:
print(f"sum loss {sum_loss}")
batch_count = 0
sum_loss = 0.0
и затем сохранение модели
Я новичок ie для НЛП и глубокого обучения. Любая помощь приветствуется.