避免内存溢出错误的训练NER模型 [英] Train NER model avoiding outofmemory error

查看:26
本文介绍了避免内存溢出错误的训练NER模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用stanford-nlp library训练NER模型。我有一个所需格式的文件,大小为6 GB。配置文件:

usePrevSequences=true
useClassFeature=true
useTypeSeqs2=true
useSequences=true
wordShape=chris2useLC
useTypeySequences=true
useDisjunctive=true
noMidNGrams=true
serializeTo=ner-model50.ser.gz
maxNGramLeng=6
useNGrams=true
usePrev=true
useNext=true
maxLeft=1
trainFile=trainData
map=word=0,answer=1
useWord=true
useTypeSeqs=true

按照文档中的建议,每句话都用空行分隔。因此,当我使用mx25g运行该命令时:

java -mx25g -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop config.prop

我收到错误:

线程"main"java.lang.OutOfMemoyError中出现异常:Java堆空间

建议从库的FAQ page将文件拆分为多个文件,以防出现内存错误。

为此,您需要使用trainFileList选项而不是trainFile选项来更改配置文件。现在我有多个文件,每个大小约为250MB。运行同一命令时出现以下错误:

线程"main"java.lang.OutOfMemoyError中的异常:超出GC开销限制

因此,拆分文件似乎无济于事。你认为拆分成更小的文件会有帮助吗?或者这无关紧要?有什么方法可以忽略这个问题吗?任何洞察都是有用的。提前谢谢。

推荐答案

我也面临着与您相同的问题,我的一个前辈建议我使用 -xmx而不是-mx,以根据您的计算机RAM&;交换大小指定最大堆大小。
你也可以减少NO。如果使用IOB编码,则为实体类或mergeTag,因为使用的空间随实体类的增加呈指数增长。

Java-XMX**g-cp Stanford-ner.jar Edu.stanford.nlp.ie.crf.CRF分类器-道具ner.prop

这对我很有效。

这篇关于避免内存溢出错误的训练NER模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆