NER的Stanford crf分类器是否支持多核操作?
如果是,我该如何启用它?
我尝试了nthreads
参数,但它显示了这一点:
未知属性:| nthreads |
答案 0 :(得分:2)
对于训练期间的多线程,请尝试选项-multiThreadGrad。 对于测试期间的多线程,请尝试选项-multiThreadClassifier。
答案 1 :(得分:-1)
很棒的问题 - 我和你在同一条船上投票赞成。天使的答案对我有所帮助,但部分原因。我不得不深入研究代码,找出它是什么以及如何指定。这是它的关键用途:
new MulticoreWrapper<Pair<Integer, List<Integer>>, Pair<Integer, Double>> (multiThreadGrad, (calculateEmpirical ? expectedAndEmpiricalThreadProcessor : expectedThreadProcessor) )
根据MulticoreWrapper
doc第一个参数:
nThreads - 如果小于或等于0,则自动确定 线程数。否则,底层的大小 线程池。
所以我现在在具有8个核心的计算机上指定-multiThreadGrad 16
,但我不知道16个线程是太多还是太少。
答案 2 :(得分:-1)
尝试使用--multiThreadGrad 8
。
实施例:
java -Xmx20g -XX:+UseG1GC -cp /path/to/stanford/ner/jar edu.stanford.nlp.ie.crf.CRFClassifier -prop /prop/file/name-basic.prop --multiThreadGrad 8
也可以使用Runtime.getRuntime().availableProcessors()
src:here