LDA genism использует только одно ядро ​​из 16 - PullRequest
0 голосов
/ 20 марта 2019

Огромная проблема с тренировкой с LdaMulticore.Требуется 2,5 часа, чтобы получить только 25 тем.Пока активно только одно ядро, а у меня 16 из них на Amazon EC2.Как я могу оптимизировать это?

Что-то узкое место в этом процессе ... Когда я смотрю на процессы, активным является только одно ядро, но через некоторое время все ядра становятся активными в течение пары секунд, а затем снова одно ядро.

numberTopics = 25   #Number of topics
model_gensim = LdaMulticore(num_topics=numberTopics,
                        id2word=dictionary,
                        iterations=10,
                        passes=1,
                        chunksize=50,
                        eta='auto',
                        workers=12)


perp_gensim = []
times_gensim = []
i=0
max_it = 5
min_prep = np.inf
start = time()
for _ in tqdm_notebook(range(100)):
    model_gensim.update(corpus)
    tmp = np.exp(-1 * model_gensim.log_perplexity(corpus))
    perp_gensim.append(tmp)
    times_gensim.append(time() - start)
    if(tmp<min_prep):
        min_prep = tmp;
        i = 0
    else:
        i = i + 1;
        if (i==max_it):
            break                
model_gensim.save('results/model_genism/model_genism.model')
with open('results/model_genism/perp_gensim.pickle', 'wb') as f:
    pickle.dump(perp_gensim, f)
with open('results/model_genism/time_gensim.pickle', 'wb') as f:
    pickle.dump(times_gensim, f)

for i, topic in enumerate(model_gensim.get_topics().argsort(axis=1)[:, -10:][:, ::-1], 1):
    print('Topic {}: {}'.format(i, ' '.join([vocabulary[id] for id in topic])))
...