问题描述
对于我的论文,我的目标是比较不同的 NER 模型。目前,我想从斯坦福 NER 开始,因为它很受欢迎。我使用的数据集包含约 16k 个带标签的文档(4 个类)。在这些 16k 文档中,我想在我的训练集中使用 13k。这 13k 个文档总共有 144MB。我正在尝试在本地解决此问题,我的 PC 包含 32 GB RAM。
我面临的问题是我想在标记数据上训练斯坦福 NER,但我一直面临终端返回“Killed”的问题(请参阅下面的最后两个实验)。我找不到有关问题原因的任何信息,但我认为可能是内存问题。
我做了很多实验,包括:
- 添加/删除使用 NGrams 以减少特征数量 (https://nlp.stanford.edu/software/crf-faq.html#d)
- 随机删除未标记的行,这行得通,但使未标记的数据非常稀疏并删除了顺序模式。因此,我想防止这种情况发生。 (https://nlp.stanford.edu/software/crf-faq.html#d)
- 添加最小堆空间 (Train NER model avoiding outofmemory error)
- 添加 25000M(B) 的 CLASS_PATH 环境
- 添加 Orthant-Wise 有限内存准牛顿优化器 (http://www.davidsbatista.net/blog/2018/01/23/StanfordNER/)
- 降低容差,在这里我表明我正在使用 0.001 但也使用 0.1,例如(http://www.davidsbatista.net/blog/2018/01/23/StanfordNER/)
- 尝试使用较少数量的文档,在这里我注意到在使用例如仅占整个数据集(1.6k - 2k 文档)的 10-15%,它能够按照应有的方式收敛和存储结果。
下面我展示了我运行的最后两个实验:
- 实验 1:不使用 13k 文档,而仅使用 9.6k(在第二行中用 train-size-0.6 表示)。在这里,分类器训练了几次迭代,然后就死了。
- 实验 2:不使用 13k 文档而仅使用 9.6k(在第二行中用 train-size-0.6 表示)。在这里,分类器甚至无法训练任何迭代。
你们有什么想法吗?你认为问题是特征的数量吗?它是否与“渐近顺序”有关(我目前并不真正理解。它们对状态和顺序意味着什么,例如?来源:https://nlp.stanford.edu/software/crf-faq.html#mem)?
实验 1 和实验 2
-----------------------------Experiment 1-----------------------------
Picked up _JAVA_OPTIONS: -Xmx25000m
Invoked on Sun Feb 21 08:57:10 CET 2021 with arguments: -prop property_files/settings.prop -serializeto models/stanford-ner-model-tolerance-0.001-train-size-0.6.ser.gz -tolerance 0.001
useTypeSeqs2=true
priorLambda=10
maxLeft=1
serializeto=models/stanford-ner-model-tolerance-0.001-train-size-0.6.ser.gz
wordShape=chris2useLC
trainFileList=train/
usedisjunctive=true
uSEOWLQN=True
useClassFeature=true
useNGrams=false
useNext=true
usePrev=true
useTypeySequences=true
usePrevSequences=true
qnSize=10
useTypeSeqs=true
maxQNItr=50
useSequences=true
map=word=0,answer=1
tolerance=0.001
useWord=true
numFeatures = 8422664
Time to convert docs to feature indices: 160.0 seconds
Current memory used: 5668m
numClasses: 4 [0=O,1=CITY,2=ADDRESS,3=ZIPCODE]
numDocuments: 10195
numDatums: 12379560
numFeatures: 8422664
Time to convert docs to data/labels: 137.6 seconds
Current memory used: 9115m
Running gradient on 4 threads
numWeights: 76739612
QNMinimizer called on double function of 76739612 variables,using M = 10.
An explanation of the output:
Iter The number of iterations
evals The number of function evaluations
SCALING <D> Diagonal scaling was used; <I> Scaled Identity
LInesEARCH [## M steplength] Minpack linesearch
1-Function value was too high
2-Value ok,gradient positive,positive curvature
3-Value ok,gradient negative,positive curvature
4-Value ok,negative curvature
[.. B] Backtracking
VALUE The current function value
TIME Total elapsed time
|GnorM| The current norm of the gradient
{RELnorM} The ratio of the current to initial gradient norms
AVEIMPROVE The average improvement / current value
EVALscore The last available eval score
Iter ## evals ## <SCALING> [LInesEARCH] VALUE TIME |GnorM| {RELnorM} AVEIMPROVE EVALscore
Iter 1 evals 1 <D> [.....B 1.000E-6] 3.998E8 124.70s |2.683E5| {1.544E-2} 0.000E0 -
Iter 2 evals 2 <D> [B 1.000E-1] 3.998E8 147.99s |2.683E5| {1.544E-2} 8.480E-6 -
Iter 3 evals 3 <D> [.....B 1.000E-5] 3.991E8 287.10s |2.683E5| {1.544E-2} 5.631E-4 -
Iter 4 evals 4 <D> [.....B 1.000E-5] 3.984E8 444.43s |2.683E5| {1.544E-2} 8.517E-4 -
Iter 5 evals 5 <D> [.....B 1.000E-5] 3.974E8 725.12s |2.683E5| {1.543E-2} 1.192E-3 -
Killed
-----------------------------Experiment 2-----------------------------
Picked up _JAVA_OPTIONS: -Xmx25000m
Invoked on Sun Feb 21 09:18:10 CET 2021 with arguments: -prop property_files/settings.prop -serializeto models/stanford-ner-model-tolerance-0.001-train-size-0.8.ser.gz -tolerance 0.001
useTypeSeqs2=true
priorLambda=10
maxLeft=1
serializeto=models/stanford-ner-model-tolerance-0.001-train-size-0.8.ser.gz
wordShape=chris2useLC
trainFileList=train/
usedisjunctive=true
uSEOWLQN=True
useClassFeature=true
useNGrams=false
useNext=true
usePrev=true
useTypeySequences=true
usePrevSequences=true
qnSize=10
useTypeSeqs=true
maxQNItr=50
useSequences=true
map=word=0,answer=1
tolerance=0.001
useWord=true
numFeatures = 11199846
Time to convert docs to feature indices: 247.0 seconds
Current memory used: 7897m
numClasses: 5 [0=O,3=ZIPCODE,4=-ADDRESS]
numDocuments: 13593
numDatums: 18113834
numFeatures: 11199846
Time to convert docs to data/labels: 225.0 seconds
Current memory used: 10901m
Running gradient on 4 threads
numWeights: 152610450
QNMinimizer called on double function of 152610450 variables,using M = 10.
Killed
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)