2012-04-19 26 views
5

Mam model naukowy Python, który wywołuje niektóre kod C i używa numpy, scipy i wiele modułów analizy geograficznej. Chciałbym go wdrożyć na EC2, ale jeszcze nie wiem wiele na temat EC2.Wdrażanie algorytmu python naukowych na Amazon ec2

Sprawdziłem, czy mogę użyć pakietu StarCluster do rozmieszczenia stosu po ustawieniu AMI, które pochodzą z AMI StarCluster. Te mają już numpy, scipy i ipython, więc wszystko, co muszę zrobić, to dodać moduły geograficzne.

Mój plan polegał na napisaniu samodzielnego GUI, który działa na komputerach klientów i upewnia się, że ich dane wejściowe są ważne dla mojego modelu. Następnie autonomiczny interfejs GUI wysyła do zarchiwizowanych archiwów o wielkości około 10 GB do lokalizacji FTP. Następnie logują się na moją stronę uruchamiam na EC2, gdzie konfigurują właściwości run (liczba instancji, liczba uruchomień modelu). Ta strona internetowa uruchamia skrypt, który wykonuje zadanie klienta w określonym klastrze. Procesor post przetwarza dane wyjściowe modelu i zapisuje strony wyników i wykresy, które są początkowo chronione hasłem tylko dla podglądu klienta. Moje przebiegi modelu składają się z pojedynczych iteracji, które mogą trwać od 5 minut do 3 godzin.

Czy każdy może zaoferować jakąkolwiek poradę dotyczącą idealnego ustawienia tego modelu? Myślę, że mogę dowiedzieć się część naukową, ale nie widzę, co jest punktem wyjścia do uruchomienia interfejsu sieci ...

Dzięki

+0

Wow, to dość pytanie! Myślę, że trudno byłoby zapewnić ci prostą i zwięzłą odpowiedź obejmującą wszystkie aspekty planowanego systemu, o którym wspomniałeś, więc może mógłbyś zamieścić kilka mniejszych, bardziej szczegółowych pytań na temat poszczególnych komponentów? – ThePhysicist

Odpowiedz

2

ciekawy projekt!

Dodawanie modułów do AMI wdrożonego w AWS EC2 można wykonać za pomocą pip. Najpierw będziesz potrzebować dostępu do swojej instancji przez SSH. Dokumentacja ta jest tutaj: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html Następnie, jeśli nie masz już zainstalowany, można zainstalować PIP & swoim dodatkowych pakietów & moduły następująco:

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 & Debiana sudo apt-get install python -numpy python-scipy python-matplotlib ipython ipython-notebook python-pandy python-sympy python-nose

Wersje w Ubuntu 12.10 i Debian 7.0 spełniają bieżącą specyfikację stosu Scipy. Użytkownicy mogą również chcieć dodać repozytorium NeuroDebian dla dodatkowych pakietów Scipy. Fedora sudo yum install python-numpy scipy matplotlib ipython python-pandy sympy python-nos

Użytkownicy Fedory 17 i wcześniej powinien następnie uaktualnić ipython użyciu pip: sudo pip zainstalować --upgrade ipython (info powyżej znalezione przez scipy dokumentacja: http://www.scipy.org/install.html)

Jeśli chodzi o plany na GUI & duży plik wysyłania, przyjrzeć AWS S3 (choć ma pewne ograniczenia) do przechowywania plików & w zależności od tego, jak daleko chcesz wcisnąć swoje rozwiązanie cię może użyć chunkowanego pliku do przesłania lub przesłania wieloczęściowego żądania podobnego do tych rozwiązań dla pliku tran sfers:

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/ 

(szybkie wyszukiwanie „podzielonych na kawałki wysyłania plików github” lub „Kod pakietowego przesyłania plików google” powinien pojawić się wiele opcji w zakresie dostępnego kodu & szczegółowych informacji.)

jednak łatwiejszy kierunek dla wysyłania plików/przelewu może spojrzeć na rozwiązania takie jak:

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/ 

Niezależnie od tego, będziemy chcieli, aby upewnić się, że środowisko na przykład EC2 &/lub Twoje wiaderka S3 są skonfigurowane tak, aby umożliwić przetwarzanie dużych plików w celu ich przesyłania &. Na przykład, twoja wersja php AMI musi zostać skompilowana za pomocą php.ini, aby przesłać pliki w określonych rozmiarach - są też czasy oczekiwania, o których musisz wiedzieć - i prawdopodobnie będziesz potrzebował 64-bitowego AMI wraz z dużym EBS aby to wszystko wzmocnić.

Co do mniej złożonych komponentów frontonu GUI, jQuery lub node.js to dobry punkt wyjścia. Istnieje również mnóstwo pakietów kodowych & dokumentacja na Github lub na forach AWS EC2/S3, takie jak:

https://github.com/josegonzalez/upload 

Bez znajomości specyficznych wymagań, planuje & ograniczenia czasu/budżetu, to najbardziej rada mogę dać. Możesz jednak odpowiedzieć na ten wątek lub przesłać mi bezpośrednio odpowiedzi na wszelkie inne pytania.