Импортировать код с локального на все удаленные механизмы
Я работаю над распараллеливанием поиска по сетке sklearn, используя три параметра, но у меня возникают проблемы с рефакторингом проекта для работы с ipython.parallel. Мой нынешний подход к мысли заключался в создании простой функции, которая:
- Принимает параметр гребня
- Загружает набор данных для обучения модели с
- Тренирует модель, сохраняя счет и полученную модель на S3?
Имеет ли это смысл в качестве подхода к распараллеливанию поиска в сетке?
Если да, есть ли способ поделиться кодом между моей локальной машиной и удаленными движками?
Например, у меня есть исходное дерево, содержащее несколько разных модулей:
/exploration
/log_regression/
/log_regression/experiments.py
/log_regression/make_model.py
/linear_regression/
/linear_regression/experiments.py
/linear_regression/make_model.py
/linear_regression/parallel.py
Используя StarCluster, я развернул кластер в EC2 и хотел распараллелить процесс запуска sklearn grid search по параметрам гребня. Однако я не нашел простого способа поделиться всеми моими локальными модулями с удаленными механизмами. Есть ли способ сделать это или как мне перестроить свое мышление?
1 ответ
Если речь идет о развертывании кода на нескольких узлах, а не о разработке вашего кода для параллельной обработки, то вы можете рассмотреть вопрос о том, чтобы сделать свой код доступным через локальное (для вашей сети) управление исходным кодом (git или mercurial сервер), а затем выполнить сценарий развертывание: некоторая утилита, которая подключается ко всем узлам перед запуском обработки и подготавливает рабочую среду. И, конечно, это будет включать в себя проверку самой последней версии вашего кода вместе с необходимыми зависимостями. Предполагая, что вы используете Unix-подобную ОС, есть несколько утилит python, которые помогут с этим:
virtualenv
, для автономных сред python с доступом ко многим библиотекам python через pip.paramiko
, для сценариев подключения SSH и взаимодействия оболочкиvcstools
библиотека, которая абстрагирует общие операции с исходным кодом для нескольких scms (svn, git, mercurial, ...)
Также, если вы не хотите проходить через настройку управления исходным кодом с нуля, вы можете разместить свой код на github или если вы не хотите, чтобы ваш код был общедоступным, вы можете перейти на bitbucket (который предлагает бесплатно частные репозитории, а также выбор между git и mercurial).