Огромная проблема с тренировкой с 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])))