[英]key dataset lost during training using the Hugging Face Trainer
我正在学习拥抱脸的课程材料: https://huggingface.co/course/chapter7/3?fw=pt (顺便说一句,很棒的东西)。 但是现在我遇到了一个问题。
当我使用默认的 data_collator 运行训练和评估时,一切正常。 但是当我使用自定义的 whole_word_masking_data_collator 时它不起作用,因为它错过了键“word_ids”。
我的数据如下:
DatasetDict({
train: Dataset({
features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
num_rows: 30639
})
test: Dataset({
features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
num_rows: 29946
})
unsupervised: Dataset({
features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
num_rows: 61465
})
})
当我按如下方式使用我的 whole_word_masking_data_collator 时,一切都很好:
whole_word_masking_data_collator([lm_datasets["train"][0]])
但是,当我在这样的培训师中使用它时:
from transformers import Trainer
trainer = Trainer(
model=masked_model,
args=training_args,
train_dataset=lm_datasets["train"],
eval_dataset=lm_datasets["test"],
data_collator=whole_word_masking_data_collator,
)
它给了我以下错误:
KeyError: 'word_ids'
我觉得这很奇怪,因为这个键显然是在数据中按尾,而 whole_word_masking_data_collator function 可以独立工作。
当我检查 function 中的钥匙时,我确实发现钥匙确实丢失了。 我只有这些钥匙:
dict_keys(['attention_mask', 'input_ids', 'labels', 'token_type_ids'])
所以我的问题是:在我的代码中是否缺少键“word_ids”go?
如果您仍然面临这个问题,我在同一个文档中找到了解决方案:
默认情况下,Trainer 将删除不属于模型 forward() 方法的所有列。 这意味着如果您使用整个单词掩码整理器,您还需要设置 remove_unused_columns=False 以确保我们不会在训练期间丢失 word_ids 列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.