繁体   English   中英

使用 Hugging Face Trainer 训练期间丢失的关键数据集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM