训练斯坦福 NER 分类器在终端返回“Killed”,原因是什么以及如何解决?

问题描述

对于我的论文,我的目标是比较不同的 NER 模型。目前,我想从斯坦福 NER 开始,因为它很受欢迎。我使用的数据集包含约 16k 个带标签的文档(4 个类)。在这些 16k 文档中,我想在我的训练集中使用 13k。这 13k 个文档总共有 144MB。我正在尝试在本地解决此问题,我的 PC 包含 32 GB RAM。

我面临的问题是我想在标记数据上训练斯坦福 NER,但我一直面临终端返回“Killed”的问题(请参阅下面的最后两个实验)。我找不到有关问题原因的任何信息,但我认为可能是内存问题。

我做了很多实验,包括

下面我展示了我运行的最后两个实验:

  • 实验 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 (将#修改为@)