Я использую starcluster с плагином Ipython. Когда я запускаю кластер Kmeans из ноутбука Ipython с режимом баланса нагрузки. Его всегда Мастер с 100% -ным использованием ЦП постоянно. И другие экземпляры EC2 никогда не принимают нагрузку.Использование распределенного вычислительного экземпляра с помощью плагина Starcluster Ipython parallel
Я пробовал с большими наборами данных и 20 узлами. Результат такой же, как и на Load. Я попробовал прямое представление с node001, но даже тогда мастер имеет всю нагрузку.
Я устанавливаю любую вещь неправильно. Нужно ли отключать Queue true в config ?. Как я могу распределить нагрузку на все экземпляры.
Я не могу опубликовать изображение, потому что я стартер в stackoverflow. Вот HTOP для мастера и node001
Ссылка на изображение: https://drive.google.com/file/d/0BzfdmaY9JuagT0lmX29xY1RiUmM/view?usp=sharing
Любая помощь будет высоко оценен.
С уважением, Tej.
Мой файл шаблона:
[cluster iptemplate]
KEYNAME = ********
CLUSTER_SIZE = 2
CLUSTER_USER = ipuser
CLUSTER_SHELL = bash
REGION = us-west-2
NODE_IMAGE_ID = ami-04bedf34
NODE_INSTANCE_TYPE = m3.medium
#DISABLE_QUEUE = True
PLUGINS = pypackages,ipcluster
[plugin ipcluster]
SETUP_CLASS = starcluster.plugins.ipcluster.IPCluster
ENABLE_NOTEBOOK = True
NOTEBOOK_PASSWD = *****
[plugin ipclusterstop]
SETUP_CLASS = starcluster.plugins.ipcluster.IPClusterStop
[plugin ipclusterrestart]
SETUP_CLASS = starcluster.plugins.ipcluster.IPClusterRestartEngines
[plugin pypackages]
setup_class = starcluster.plugins.pypkginstaller.PyPkgInstaller
packages = scikit-learn, psutil, scikit-image, numpy, pyzmq
[plugin opencvinstaller]
setup_class = ubuntu.PackageInstaller
pkg_to_install = cmake
[plugin pkginstaller]
SETUP_CLASS = starcluster.plugins.pkginstaller.PackageInstaller
# list of apt-get installable packages
PACKAGES = python-mysqldb
Код:
from IPython import parallel
clients = parallel.Client()
rc = clients.load_balanced_view()
def clustering(X_digits):
from sklearn.cluster import KMeans
kmeans = KMeans(20)
mu_digits = kmeans.fit(X_digits).cluster_centers_
return mu_digits
rc.block = True
rc.apply(clustering, X_digits)
Если мое понимание верное, один вызов 'apply()' создает только одно задание, поэтому он может работать только на одном движке. Обычно вы используете 'map()' для отправки заданий нескольким движкам, но вам нужно создать свой код, чтобы было более одного задания. –