当我使用Spacy训练NER模型并监视CPU时,我可以看到它仅使用1个内核。
我在Spacy文档中仅找到一个多处理示例,但不适用于培训:https://github.com/explosion/spaCy/blob/master/examples/pipeline/multi_processing.py 我只是使用示例中提供的训练代码,但在TRAINING_DATA中使用相同结构的500000元组列表:(“ rawtext”,{“ entities”:[(entity_start_offset,entity_end_offset,“ ENTITY”)]})))< / p>
with nlp.disable_pipes(*other_pipes): # only train NER
for itn in range(n_iter):
random.shuffle(TRAIN_DATA)
losses = {}
batches = spacy.util.minibatch(TRAIN_DATA,
size=spacy.util.compounding(4., 32., 1.001))
for i, batch in enumerate(batches):
print(i)
texts, annotations = zip(*batch)
# Updating the weights
nlp.update(texts, annotations, sgd=optimizer,
drop=0.35, losses=losses)
print('Losses', losses)
我需要使用多个核心来加快培训速度。现在,使用1个单核每个周期需要40分钟。
答案 0 :(得分:0)
从2.1版开始,Spacy的培训似乎只用一个核心完成。 (https://github.com/explosion/spaCy/issues/3507)当矩阵乘法的并行化在其他框架中值得探讨时,我觉得有些奇怪。