如何测量预训练的 HuggingFace 语言模型的性能?

青葱年少 pytorch 220

原文标题How to measure performance of a pretrained HuggingFace language model?

我正在预训练aGPT2LMHeadModel使用Trainer如下:

training_args = TrainingArguments(
    output_dir=str(project_root / 'models/bn-gpt2/'),
    overwrite_output_dir=True,
    num_train_epochs=1,
    per_device_train_batch_size=1,
    per_device_eval_batch_size=1,
    gradient_accumulation_steps=4,
    fp16=True,
    optim="adafactor",
    eval_steps=400,
    save_steps=800,
    warmup_steps=500,
    evaluation_strategy="steps",
)

trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=tokenized_dataset['train'],
    eval_dataset=tokenized_dataset['test'],
)

trainer.train()

我想在训练期间和之后使用困惑度或准确性指标来衡量我的预训练模型的性能。我找到了一些方法来测量单个句子的这些,但我找不到为完整模型执行此操作的方法。我的目标是从头开始使用 GPT2 训练为我的母语创建下一个单词预测模型。

原文链接:https://stackoverflow.com//questions/71466639/how-to-measure-performance-of-a-pretrained-huggingface-language-model

回复

我来回复
  • ewz93的头像
    ewz93 评论

    如果我理解正确,那么本教程将展示如何计算整个测试集的困惑度。如果我没看错,他们将整个测试语料库用作一个由换行符连接的字符串,这可能与 perplexity 使用滑动窗口这一事实有关,该滑动窗口使用语料库中先前出现的文本。我个人还没有计算模型的困惑度,也不是这方面的专家。在任何情况下,您都可以将句子分数平均为语料库分数,尽管该指标如何工作的逻辑以及权重可能存在问题,因为句子可以有不同数量的单词,请参阅this解释。

    此外,我不确定您是否已经意识到这一点,但也有预训练的 GPT-2 模型可用于孟加拉语的拥抱脸。

    2年前 0条评论