首页 > 解决方案 > 使用 Simple Transformers 微调预训练的语言模型

问题描述

在他的文章“预训练变形金刚的语言模型微调”中,Thilina Rajapakse ( https://medium.com/skilai/language-model-fine-tuning-for-pre-trained-transformers-b7262774a7ee ) 提供了以下代码使用库微调预训练模型的片段simpletransformers

from simpletransformers.language_modeling import LanguageModelingModel
import logging


logging.basicConfig(level=logging.INFO)
transformers_logger = logging.getLogger("transformers")
transformers_logger.setLevel(logging.WARNING)

train_args = {
    "reprocess_input_data": True,
    "overwrite_output_dir": True,
}

model = LanguageModelingModel('bert', 'bert-base-cased', args=train_args)

model.train_model("data/train.txt", eval_file="data/text.txt")

model.eval_model("data/test.txt")

然后他补充说:

我们假设您已将数据集中的所有文本组合成两个文本文件 train.txt 和 test.txt,它们可以在 data/ 目录中找到。

我有两个问题:

问题 1

上面突出显示的句子是否意味着整个语料库将被合并到一个文本文件中?因此,假设训练语料库由 1,000,000 个文本文件组成,我们是否应该将它们全部合并到一个文本文件中,并使用这样的代码?

import fileinput
with open(outfilename, 'w') as fout, fileinput.input(filenames) as fin:
    for line in fin:
        fout.write(line)

问题2

我认为我可以使用预训练模型:bert-base-multilingual-cased. 正确的?

标签: python-3.xhuggingface-transformerslanguage-modelsimpletransformers

解决方案


问题 1

是的,train_model()eval_model()方法的输入需要是一个文件。

未来可能会支持从多个文件动态加载

问题2

是的,您可以使用bert-base-multilingual-cased模型。

您将在此处找到有关语言模型训练的更详细、更新的指南。

来源 - 我是图书馆的创造者


推荐阅读