我正在按照此网页(https://github.com/huggingface/transformers/tree/master/examples/language-modeling)上的说明对我自己的语料库上的预训练BERT模型进行微调。我设法使用WikiText-103数据集(https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-103-v1.zip)运行该示例,该数据集解压缩后大约需要550MB。我设法用48GB内存和K80运行此示例。
然后,我尝试使用自己的语料库(比原来大20倍)来执行此操作。我知道用相同的硬件配置是不可能的,因此我测试了将语料库分块成不同的相等大小,以找出语言模型微调可以在128GB内存+ K80设置上运行的最大语料库大小。
如下面的注释所示,我还使用了以下设置:
但是使用这些设置,我可以容纳的最大语料库为3.5GB块,用于128GB内存和K80。除此之外,该程序在执行INFO - transformers.data.datasets.language_modeling - Creating features from dataset file
时即以OOM停止,即,它甚至还没有开始GPU处理。
我想稍微了解一下语言模型微调代码的工作原理-数据集与内存的比率是多少,以及是否可以对其进行配置,以便它不使用太多内存来处理数据集。
非常感谢