我正在使用Pytorch Trainer API
训练MLM
模型。这是我的初始代码。
data_collator = DataCollatorForWholeWordMask(tokenizer=tokenizer, mlm=True, mlm_probability=0.15)
class SEDataset(torch.utils.data.Dataset):
def __init__(self, encodings):
self.encodings = encodings
def __getitem__(self, idx):
item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
return item
def __len__(self):
return len(self.encodings["attention_mask"])
train_data = SEDataset(train_encodings)
print("train_data prepared")
training_args = tr.TrainingArguments(
output_dir='results_mlm_mmt2'
,logging_dir='logs_mlm_mmt2' # directory for storing logs
,save_strategy="epoch"
,learning_rate=2e-5
,logging_steps=40000
,overwrite_output_dir=True
,num_train_epochs=10
,per_device_train_batch_size=32
,prediction_loss_only=True
,gradient_accumulation_steps=2
,fp16=True
)
trainer = tr.Trainer(
model=model,
args=training_args,
data_collator=data_collator,
train_dataset=train_data
)
上面的代码工作得很好,但我想包括一些东西:
如何将
validation text data
包含在其中以及以何种格式包含?做我还需要为验证集传递标签?我如何包括一些与传销相关的指标以便在之后打印每#步?
-
Trainer类以
eval_dataset
为参数,允许您传递验证数据。它应该是一个Dataset对象,就像您的train_data对象一样。 -
它还将
compute_metrics
作为参数,这是一个可以覆盖的函数,用于手动定义要显示的度量(例如,请参阅此处(。