doc2vec: измерение производительности и параметра «рабочие» - PullRequest
0 голосов
/ 05 декабря 2018

У меня очень большие корпуса в качестве входных данных для моего тренинга по doc2vec, около 23 миллионов документов передавались с использованием итерируемой функции.Мне было интересно, можно ли вообще увидеть развитие моего прогресса в обучении, возможно, через выяснение того, какая итерация идет в данный момент, слов в секунду или какой-то подобной метрики.

Мне также было интересно, как ускоритьпроизводительность doc2vec, кроме уменьшения размера корпуса.Я обнаружил параметр working , и в настоящее время я тренируюсь по 4 процессам;Интуиция за этим числом заключалась в том, что многопроцессорность не может использовать преимущества виртуальных ядер.Мне было интересно, был ли это случай для параметра doc2vec working или я мог бы использовать вместо него 8 рабочих или даже потенциально выше (у меня есть четырехъядерный процессор с Ubuntu).

Я должен добавить, что при использовании команды unix top -H сообщается только о 15% использования ЦП на процесс python с использованием 8 рабочих и около 27% использования ЦП на процесс на 4 рабочих.

1 Ответ

0 голосов
/ 07 декабря 2018

Если вы включите ведение журнала на уровне INFO, вы должны увидеть обильный вывод прогресса.

Оптимальная пропускная способность для моделей Word2Vec или Doc2Vec компании gensim часто находится на некотором уровне workers между 3 и 12, но никогда не превышает количества доступных процессорных ядер.(Существует дополнительная оптимизация, которая особенно полезна для машин с большим количеством ядер, если вы используете определенный формат корпуса на диске, который доступен в самой последней версии 3.6.0 gensim - см. примечания к выпуску для получения дополнительной информации.info.)

Если вы видите такое низкое использование на установке с 4 ядрами и 4 работниками, узким местом может быть ваш итератор корпуса.Если он выполняет какой-либо сложный ввод-вывод или обработку текста на основе регулярных выражений, то часто обучающие рабочие потоки бездействуют, ожидая, пока один основной поток корпуса-итератора произведет больше текста, ограничивая общее использование и эффективность.

Вы должныпопробуйте выполнить сложную работу один раз и переписать результаты с тегами / токенами на диск в виде более простого файла.Затем прочитайте это с помощью очень простого итератора, разделенного строкой и пробелом, для фактического обучения модели.

(Если ваши 4 ядра на самом деле поддерживают больше виртуальных ядер, возможно, что некоторое значение workers до 8 может достичь более высокой пропускной способности ... но только метод проб и ошибок, с вашими индивидуальными параметрами модели, можетв настоящее время найдите свой локальный оптимум. Оптимальное значение может варьироваться в зависимости от других параметров, таких как size, window, negative и т. д.)

...