В настоящее время я настраиваю модель BART с помощью адаптеров для задачи суммирования с использованием набора данных CNN/DailyMail. Я заметил, что модель демонстрирует плохую производительность и признаки переобучения. Ниже приведена моя настройка и соответствующий фрагмент кода. Я уже экспериментировал с различной скоростью обучения и объемом обучающих данных. Будем признательны за любые предложения о том, что может быть причиной этой проблемы или как улучшить производительность модели.
from datasets import load_dataset, DatasetDict
from transformers import TrainingArguments, EvalPrediction
from adapters import AutoAdapterModel, AdapterTrainer
import torch
# Load a subset of the CNN/DailyMail dataset
small_train_dataset = load_dataset("cnn_dailymail", "3.0.0", split="train[:5%]")
# Split the dataset
train_size = 0.8
valid_size = 0.2
train_valid_split = small_train_dataset.train_test_split(test_size=valid_size)
split_dataset = DatasetDict({
'train': train_valid_split['train'],
'validation': train_valid_split['test']
})
# Preprocess and tokenize data
def preprocess_function(examples):
# Assuming 'tokenizer' is already instantiated
return {
'input_ids': tokenizer(examples['article'], padding="max_length", truncation=True, max_length=128),
'labels': tokenizer(examples['highlights'], padding="max_length", truncation=True, max_length=128)["input_ids"]
}
# Initialize BART model with adapters
model = AutoAdapterModel.from_pretrained("facebook/bart-base")
model.add_adapter("cnn_dailymail", config="lora")
model.add_seq2seq_lm_head("cnn_dailymail")
model.train_adapter("cnn_dailymail")
# Training setup
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
training_args = TrainingArguments(
learning_rate=5e-5,
num_train_epochs=1,
per_device_train_batch_size=32,
logging_steps=10,
output_dir="./training_output",
overwrite_output_dir=True,
remove_unused_columns=False,
gradient_accumulation_steps=4
)
trainer = AdapterTrainer(
model=model,
args=training_args,
train_dataset=split_dataset['train'],
eval_dataset=split_dataset['validation']
)
# Start training
trainer.train()
Подробнее здесь: https://stackoverflow.com/questions/787 ... dapters-on
Низкая производительность и признаки переобучения при точной настройке BART с помощью адаптеров на наборе данных CNN/Dai ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение