使用Spacy训练NER模型仅使用一个核心

时间:2019-06-14 09:52:49

标签: multiprocessing spacy

当我使用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分钟。

1 个答案:

答案 0 :(得分:0)

从2.1版开始,Spacy的培训似乎只用一个核心完成。 (https://github.com/explosion/spaCy/issues/3507)当矩阵乘法的并行化在其他框架中值得探讨时,我觉得有些奇怪。