gensim.LDAMulticore бросает исключение: - PullRequest
0 голосов
/ 30 января 2019

Я запускаю LDAMulticore из библиотеки Python Gensim, и сценарий не может создать более одного потока.Вот ошибка:

  Traceback (most recent call last):
  File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 97, in worker
    initializer(*initargs)
  File "/usr/lib64/python2.7/site-packages/gensim/models/ldamulticore.py", line 333, in worker_e_step
    worker_lda.do_estep(chunk)  # TODO: auto-tune alpha?
  File "/usr/lib64/python2.7/site-packages/gensim/models/ldamodel.py", line 725, in do_estep
    gamma, sstats = self.inference(chunk, collect_sstats=True)
  File "/usr/lib64/python2.7/site-packages/gensim/models/ldamodel.py", line 655, in inference
    ids = [int(idx) for idx, _ in doc]
TypeError: 'int' object is not iterable
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib64/python2.7/threading.py", line 812, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.7/threading.py", line 765, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 325, in _handle_workers
    pool._maintain_pool()
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 229, in _maintain_pool
    self._repopulate_pool()
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 222, in _repopulate_pool
    w.start()
  File "/usr/lib64/python2.7/multiprocessing/process.py", line 130, in start
    self._popen = Popen(self)
  File "/usr/lib64/python2.7/multiprocessing/forking.py", line 121, in __init__
    self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

Я создаю свою модель LDA следующим образом:

ldamodel = LdaMulticore(corpus, num_topics=50, id2word = dictionary, workers=3)

На самом деле я задал еще один вопрос об этом скрипте, чтобы найти полный скриптздесь:

Многофункциональный скрипт Python Gensim работает слишком медленно

Если это уместно, я запускаю это на сервере CentOS.Дайте мне знать, если я должен включить любую другую информацию.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 30 января 2019

OSError: [Errno 12] Cannot allocate memory звучит так, как будто у вас заканчивается ОЗУ.

Проверьте доступную свободную память и поменяйте местами.

Вы можете попытаться уменьшить количество потоков с помощью workersпараметр или количество документов, которые будут использоваться в каждом обучающем блоке с параметром chunksize.

...