Импортировать код с локального на все удаленные механизмы

Я работаю над распараллеливанием поиска по сетке 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).

Другие вопросы по тегам