Развертывание научного алгоритма Python на Amazon ec2

У меня есть научная модель Python, которая вызывает некоторый код C и использует numpy, scipy и многие модули географического анализа. Я хотел бы развернуть его на EC2, но я пока мало что знаю о EC2.

Я проверил, могу ли я использовать пакет StarCluster для развертывания своего стека после настройки AMI, производных от AMI StarCluster. У них уже есть numpy, scipy и ipython, поэтому все, что мне нужно сделать, это добавить географические модули.

Мой план состоял в том, чтобы написать автономный графический интерфейс, который работает на машинах клиентов и гарантирует, что их входные данные действительны для моей модели. Затем автономный графический интерфейс отправляет заархивированные архивы размером до 10 ГБ на FTP-сервер. Затем они входят на мою веб-страницу, которую я запускаю на EC2, где они настраивают свойства запуска (количество экземпляров, количество запусков модели). Эта веб-страница запускает сценарий, который выполняет работу клиента в кластере указанного размера. Постпроцессор обрабатывает выходные данные модели и записывает результаты на веб-страницы и графики, которые изначально защищены паролем только для просмотра пользователем. Прогоны моей модели состоят из отдельных итераций, которые могут занимать от 5 минут до 3 часов.

Может ли кто-нибудь дать какие-либо советы для идеальной настройки с этой моделью? Я думаю, что могу понять научную часть этого, но я не вижу отправной точки для запуска веб-интерфейса...

Спасибо


person PeterS    schedule 19.04.2012    source источник
comment
Вау, вот это вопрос! Я думаю, что будет сложно дать вам простой и краткий ответ, охватывающий все аспекты запланированной системы, которые вы упомянули, поэтому, может быть, вы могли бы вместо этого опубликовать несколько небольших, более конкретных вопросов об отдельных компонентах?   -  person ThePhysicist    schedule 13.08.2013


Ответы (1)


Интересный проект!

Добавление модулей в AMI, который вы развернули на AWS EC2, можно выполнить с помощью pip. Сначала вам понадобится SSH-доступ к вашему экземпляру. Документация по этому вопросу находится здесь: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html Затем, если он еще не установлен, вы можете установить pip и дополнительные пакеты и модули следующим образом:

sudo apt-get install -y python-pip
sudo pip install numpy (already installed so no need for this)
sudo pip install scipy (same as above)

Ubuntu и Debian sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Версии в Ubuntu 12.10 и Debian 7.0 соответствуют текущей спецификации стека Scipy. Пользователи также могут захотеть добавить репозиторий NeuroDebian для дополнительных пакетов Scipy. Fedora sudo yum установить numpy scipy python-matplotlib ipython python-pandas sympy python-nose

Пользователи Fedora 17 и более ранних версий должны обновить IPython с помощью pip: sudo pip install --upgrade ipython (информация выше найдена в документации scipy: http://www.scipy.org/install.html)

Что касается ваших планов по графическому интерфейсу и загрузке больших файлов, взгляните на AWS S3 (хотя у него есть некоторые ограничения) для хранения файлов, и в зависимости от того, насколько далеко вы хотите продвинуть свое решение, вы можете использовать загрузку файлов по частям или потоковую передачу. многокомпонентный запрос, аналогичный этим решениям для передачи файлов:

https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads
https://devcenter.heroku.com/articles/paperclip-s3
https://github.com/heiflo/play21-file-upload-streaming
https://github.com/netty/netty/issues/845
https://github.com/playframework/playframework/pull/884
https://github.com/floatingfrisbee/amazonfileupload
http://blog.assimov.net/blog/2011/04/03/multi-file-upload-with-uploadify-and--carrierwave-on-rails-3/

(быстрый поиск по фразам «загрузка файлов по частям на github» или «загрузка файлов по частям в код Google» должен открыть множество вариантов с точки зрения доступного кода и подробной информации.)

Однако более простым направлением для загрузки/передачи файлов может быть рассмотрение таких решений:

http://www.bucketexplorer.com/be-download.html
https://forums.aws.amazon.com/thread.jspa?messageID=258228&tstart=0
https://forums.aws.amazon.com/thread.jspa?messageID=257781&tstart=0
http://www.jfileupload.com/products/js3upload/index.html
http://codeonaboat.wordpress.com/2011/04/22/uploading-a-file-to-amazon-s3-using-an-asp-net-mvc-application-directly-from-the-users-browser/

В любом случае вам нужно убедиться, что ваша среда на вашем экземпляре EC2 и/или ваши корзины S3 настроены на загрузку и обработку больших файлов. Например, php-версия вашего AMI должна быть скомпилирована и настроена через php.ini для загрузки файлов определенного размера — есть также тайм-ауты, о которых вам нужно знать — и вам, вероятно, понадобится 64-битный AMI вместе с большим EBS. для питания всего этого.

Что касается менее сложных интерфейсных компонентов вашего графического интерфейса, jQuery или node.js являются хорошей отправной точкой. На Github или на форумах AWS EC2/S3 также есть множество пакетов кода и документации, например:

https://github.com/josegonzalez/upload

Не зная ваших конкретных требований, планов и ограничений по времени/бюджету, это лучший совет, который я могу дать. Тем не менее, не стесняйтесь отвечать в этой теме или пинговать меня напрямую с любыми другими вопросами.

person JaT5    schedule 14.08.2013