Gensim рабочий поток застрял - PullRequest
0 голосов
/ 29 апреля 2018

Я тренирую вложения документов на ~ 20 миллионов предложений и использую параллельную обработку в gensim. Я создаю свою модель и тренируюсь со следующим кодом

class read_corpus(object):

    def __init__(self, fname, n):
        self.fname = fname
        self.n = n

    def __iter__(self):
        num_notes = 0
        with open(self.fname, 'r') as f:
            while num_notes < n:
                note = next(f)
                sentence_id, sentence = note.split('\t')

                # remove the newline character after each line and split into words
                sentence = sentence[:-1].split(' ')

                # some processing


                yield TaggedDocument(sentence, [sentence_id])
                num_notes += 1


def model(fname, vector_size, min_count,
          n_epochs, model_name,
          n, prev_model_name=None):


    data = read_corpus(fname, n)

    if prev_model_name is not None:
        model = Doc2Vec.load(prev_model_name)
    else:
        model = Doc2Vec(vector_size=vector_size,
                        min_count=min_count,
                        workers=4,
                        window=8,
                        alpha=0.1,
                        min_alpha=0.0001)

        model.build_vocab(data)

    model.train(data, total_examples=model.corpus_count, epochs=n_epochs)
    model.save(model_name)

После 6 - 8 эпох информация журнала показывает, что обучение застревает в ожидании рабочего потока. Примечание: в информации журнала указано «EPOCH 1», потому что я тренируюсь в цикле for.

... INFO : EPOCH 1 - PROGRESS: at 99.71% examples, 162493 words/s, in_qsize 8, out_qsize 0 INFO : EPOCH 1 - PROGRESS: at 99.81% examples, 162528 words/s, in_qsize 7, out_qsize 0 INFO : EPOCH 1 - PROGRESS: at 99.91% examples, 162560 words/s, in_qsize 7, out_qsize 0 INFO : worker thread finished; awaiting finish of 3 more threads INFO : worker thread finished; awaiting finish of 2 more threads

Он застрял здесь на несколько часов.

У меня был похожий вывод при предыдущем запуске. Но запись остановилась на INFO : worker thread finished; awaiting finish of 3 more threads

...