У меня есть вопрос о том, как повысить производительность при выполнении обработки GMM с помощью scikit-learn в Docker.
Я хочу, чтобы процесс подгонки GMM в Docker был таким же быстрым, как и запуск на host.
Подробности
- Я установил scikit-learn (== 0.22.2.post1) в python: 3.8.2-buster Docker image.
- Я применил GMM к вектору Word2Ve c (см. Код ниже)
- Подгонка GMM очень медленная, если эта программа работает в Docker (6〜8мин)
- Если эта программа выполняется на хосте, процесс подгонки GMM завершается в течение 10 секунд.
from gensim.models.word2vec import Word2Vec
from sklearn.mixture import GaussianMixture
...
...
# Loar Word2Vec Model
w2v_model = Word2Vec.load('./w2v.model')
# Vectors of Word2Vec Model
w2v_vectors = w2v_model.wv.vectors
# Fit Gaussian Mixture Model
gmm = GaussianMixture(n_components=N_COMPONENTS, covariance_type='tied', max_iter=50)
gmm.fit(w2v_vectors) <- very slow!!!!!
Среда
- Docker контейнер запущен на Docker для Ma c.
- Ресурсы Расширенные настройки Docker для Mac
- Процессоры: 8
- Память: 10,00 ГБ
- Обмен: 4 ГБ
Тревожная точка
Когда GMM запускался на хосте, монитор активности на Ma c приводил к загрузке ЦП 600%, но при работе на Docker, он достиг максимума в 100% (подтверждаю d со статистикой docker). Поэтому по какой-то причине многопроцессорность может не работать внутри контейнера.