я создал кластер 48-узел, состоящий из host0
в host47
(все узлы g2.2xlarge
Amazon EC2 экземпляры с не NFS). Согласно https://ipyparallel.readthedocs.io/en/latest/process.html, я создал контроллер на host0
и 47 двигателях на host1
до host47
. Я скопировал большую часть конфигурации для кластера ssh
ipyparallel
из проекта StarCluster (но, как я уже сказал, без NFS). Кластер работает и, кажется, дает правильные результаты, но загрузка модулей иногда занимает очень много времени. Например,Ipyparallel модуль нагрузки на кластере очень медленный
import ipyparallel as ipp
client = ipp.Client('/path/to/ipcontroller-client.json',sshkey='mykey')
view = client[:]
view.block=True
with view.sync_imports():
import time
import numpy
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.regularizers import l1
from keras.optimizers import SGD
from subprocess import check_output
занимает более 30 минут, пока она не будет закончена. Это не изменяется, если я перехожу на block=False
и view.wait()
. Также использование view.execute("import time; import numpy; import keras.models ...")
не помогает. Я знаю, что загрузка модулей keras
происходит несколько медленно, но на моей локальной машине это обычно делается менее чем за 1 минуту. Я попробовал как pickle
, так и json
(un). Следует отметить, что загрузка модулей работает нормально, когда я использую такой же кластер для другого расчета. Я предполагаю, что загруженные модули где-то кэшированы. Но когда я заканчиваю экземпляры, создаю новые и настраиваю новый кластер ipyparallel
, у меня такие же проблемы с загрузкой модуля.
Глядя в журнал ipcontroller
, я могу найти, что большинство запросов, соответствующего sync_imports
2016-08-25 12:12:02.310 [IPControllerApp] queue::client '\x00"_\x0b\x0b'
submitted request '46244cf0-ad0a-4748-a84c-8d3d69d8252c' to 0
закончат в течение нескольких минут. Тем не менее, некоторые из них занимают около 30 минут. См. Следующую гистограмму complete_time - submit_time
, полученную из журнала ipcontroller
.
Я только недавно начал использовать Python, и я понятия не имею, что эта проблема может быть здесь. Похоже, что максимальная разница во времени между временем завершения и отправки увеличивается с размером кластера. Любые указания на возможные проблемы приветствуются.
BTW: Я использую Python 2.7.6 и Ipyparallel 5.1.1