输入文件应该如何格式化以进行语言模型微调(BERT 通过 Huggingface Transformers)?

     2023-02-15     209

关键词:

【中文标题】输入文件应该如何格式化以进行语言模型微调(BERT 通过 Huggingface Transformers)?【英文标题】:How exactly should the input file be formatted for the language model finetuning (BERT through Huggingface Transformers)? 【发布时间】:2020-05-16 23:51:08 【问题描述】:

我想在预训练的 Bert 模型上使用 Huggingface Transformers repository 中的 examples/run_lm_finetuning.py。但是,从遵循文档来看,语料库文件的结构并不明显(除了引用 Wiki-2 数据集)。我试过了

每行一个文档(多个句子) 每行一个句子。文档以空行分隔(我在一些较旧的 pytorch-transformers 文档中找到了这一点)

通过查看examples/run_lm_finetuning.py 的代码,并不能直接看出下一句预测目标的序列对是如何形成的。 --line-by-line 选项在这里有帮助吗?如果有人能给我一些提示,文本语料库文件应该是什么样子,我将不胜感激。

非常感谢和欢呼,

nminds

【问题讨论】:

【参考方案1】:

首先,我强烈建议也将这个问题作为一个问题在 huggingface 库中打开,因为他们可能最有兴趣回答这个问题,并且可能会将其视为他们应该更新/澄清他们的文档的标志。

但要回答您的问题,似乎这个特定的示例脚本基本上是返回一个 LineByLineTextDataset(如果您将 --line_by_line 传递给培训),否则返回一个 TextDataset,请参阅 ll。 the script 中的 144-149(略微格式化以提高可见性):

def load_and_cache_examples(args, tokenizer, evaluate=False):
    file_path = args.eval_data_file if evaluate else args.train_data_file
    if args.line_by_line:
        return LineByLineTextDataset(tokenizer, args, 
                           file_path=file_path, block_size=args.block_size)
    else:
        return TextDataset(tokenizer, args, 
                           file_path=file_path, block_size=args.block_size)

TextDataset 只是将文本拆分为具有特定(令牌)长度的连续“块”,例如,它会每隔 512 个令牌(默认值)剪切您的文本。

如果我没记错的话(似乎与我在the documentation 中找到的一致),下一句预测任务仅针对默认的 BERT 模型实现,不幸的是它不是这个特定微调脚本的一部分。 据我所知,lm_finetuning 脚本中使用的 BERT 模型都没有使用该特定任务。

【讨论】:

好点,谢谢 - 我也会把它带到问题上。根据this,尽管您只能使用一组默认的基本 Bert 模型,但可以对蒙面语言和下一句预测目标进行训练。似乎没有提供从磁盘加载您自己的预训练模型。 没错,如果你只使用 BERT,这完全没问题(虽然我找不到任何即时实现),但当前大部分代码的编写方式也支持RoBERTa、XLM 等 @dennlinger 如果你能回答,我有 2 个问题。 1)什么方法会更好? 2)我应该制作一个语料库的文本文件,一行一个文件?如果文档长度超过 512 怎么办? 就个人而言,我总是更喜欢使用逐行的方法,因为这样你就会在行之间有明显的(语义)差异,因为在任意点分割并不能保证一个句子实际上完成了。对于2),我很少看到包含超过512个token的句子,否则我会把它们分成两半,或者继续阻塞策略......

将 LIME 解释应用于我的微调 BERT 以进行序列分类模型?

...分类对BERT进行了微调,我想应用LIME解释来查看每个标记如何有助于分类到特定标签,因为LIME将分类器作为黑盒处理。我从可用的在线 查看详情

如何将微调过的 bert 模型的输出作为输入提供给另一个微调过的 bert 模型?

】如何将微调过的bert模型的输出作为输入提供给另一个微调过的bert模型?【英文标题】:Howtofeedtheoutputofafinetunedbertmodelasinpunttoanotherfinetunedbertmodel?【发布时间】:2020-06-0311:28:59【问题描述】:我在情绪分析和pos标记任务上微调... 查看详情

中文情感分类任务如何对bert语言模型微调,微调后的模型如何使用

中文情感分类任务如何对bert语言模型微调,微调后的模型如何使用  查看详情

如何使用微调的 BERT 模型进行句子编码?

】如何使用微调的BERT模型进行句子编码?【英文标题】:Howtousefine-tunedBERTmodelforsentenceencoding?【发布时间】:2021-06-1620:07:15【问题描述】:我按照此处的脚本在我自己的数据集上微调了BERT基础模型:https://github.com/cedrickchee/pytorch... 查看详情

如何再次微调一个bert微调模型

【中文标题】如何再次微调一个bert微调模型【英文标题】:Howtofinetuningagainofabertfinedtunedmodel【发布时间】:2021-07-2220:45:13【问题描述】:我使用ktrain为文本分类做了一个微调的bert模型。我想再次在另一个文本分类数据上微调这... 查看详情

如何从微调的 bert 模型中获得多类置信度分数?

】如何从微调的bert模型中获得多类置信度分数?【英文标题】:Howtogetmulticlassconfidencescorefromfinetunedbertmodel?【发布时间】:2021-11-2922:52:53【问题描述】:我使用预训练的bert模型进行意图分类(uncased_L-12_H-768_A-12)。将输出显示为... 查看详情

我们是不是应该小写输入数据以(预)使用拥抱脸训练 BERT 无大小写模型?

】我们是不是应该小写输入数据以(预)使用拥抱脸训练BERT无大小写模型?【英文标题】:Shallwelowercaseinputdatafor(pre)trainingaBERTuncasedmodelusinghuggingface?我们是否应该小写输入数据以(预)使用拥抱脸训练BERT无大小写模型?【发布... 查看详情

预训练模型-从bert原理到bert调包和微调

...输出层)。1、引言      通过预训练语言模型可显著提高NLP下游任务。限制模型潜力的主要原因在于现有模型使用的都是单向的语言模型,无法充分了解到单词所在的上下文结构。      ... 查看详情

如何在未标记的数据上微调 BERT?

...17:57:09【问题描述】:我想在特定域上微调BERT。我在文本文件中有该域的文本。我如何使用这些来微调BERT?我目前正在寻找here。我的主要目标是使用BERT获得句子嵌入。【问题讨论】:【参考方案1】:这里要区分的重要一点是... 查看详情

如何使用openaifine-tuning(微调)训练属于自己专有的chatgpt模型?(代码片段)

要使用OpenAI的微调技术来训练自己的专有模型,您需要遵循以下步骤:获取和准备数据集:首先,您需要准备自己的数据集。可以使用公共数据集,也可以使用自己的数据集。数据集需要以特定格式(如JSONL)进行存储,并且需... 查看详情

bert预训练模型及文本分类(代码片段)

...要了解一下什么是语言模型,以及在BERT诞生之前人们是如何进行文本向量化的。语言模型和词向量语言模型是用于计算文本序列概率的模型。在自然语言处理的发展中,应用较为广泛的语言模型有两种:统计式语言模型和神经... 查看详情

Bert 针对语义相似性进行了微调

】Bert针对语义相似性进行了微调【英文标题】:Bertfine-tunedforsemanticsimilarity【发布时间】:2020-03-2901:12:01【问题描述】:我想应用微调Bert来计算句子之间的语义相似度。我搜索了很多网站,但我几乎没有在下游找到这个。我刚... 查看详情

微调后如何使用语言模型进行预测?

】微调后如何使用语言模型进行预测?【英文标题】:Howtousealanguagemodelforpredictionafterfine-tuning?【发布时间】:2021-11-2105:39:50【问题描述】:我已经训练/微调了一个SpanishRoBERTa模型,该模型最近已针对除文本分类之外的各种NLP任... 查看详情

微调后如何使用语言模型进行预测?

】微调后如何使用语言模型进行预测?【英文标题】:Howtousealanguagemodelforpredictionafterfine-tuning?【发布时间】:2021-11-2107:13:05【问题描述】:我已经训练/微调了一个SpanishRoBERTa模型,该模型最近已针对除文本分类之外的各种NLP任... 查看详情

《自然语言处理实战入门》深度学习----预训练模型的使用(albert)

...介bert回顾bert的问题ALBERT(ALiteBERT)改进1:将embedding的参数进行了因式分解改进2:跨层的参数共享改进3:抛弃了原来的NSP任务,现在使用SOP任务。albert的使用参考文献简介bert回顾bert两阶段模式:预训练+微调BERT的总体预训练和微... 查看详情

BERT 微调的优化器和调度器

...),但我对优化器和调度器有点不确定。首先,我知道我应该使用transformers.AdamW而不是Pytorch的版本。此外,我们应该使用论文中建议的预热调度程序,因此调度程序是使用tran 查看详情

图解bert模型结构输入输出

参考技术A本文首先介绍BERT模型要做什么,即:模型的输入、输出分别是什么,以及模型的预训练任务是什么;然后,分析模型的内部结构,图解如何将模型的输入一步步地转化为模型输出;最后,我们在多个中/英文、不同规模... 查看详情

如何使用 Tensorflow 2 对象检测 API 恢复微调模型以进行测试?

】如何使用Tensorflow2对象检测API恢复微调模型以进行测试?【英文标题】:Howtorestoreafine-tunedmodelwithTensorflow2ObjectDetectionAPIfortesting?【发布时间】:2021-12-1818:15:05【问题描述】:我已经成功训练(微调)并验证了来自TensorflowModelZoo2... 查看详情