Szukam zbudować aplikację internetową, która musi uruchomić obliczenia MCMC (na żądanie w R) (Markov chain Monte Carlo) na żądanie, aby wygenerować wykresy prawdopodobieństwa dla użytkownika.Pracownicy Amazon na żądanie dla krótkich zadań
Ograniczenia:
Oczywiście nie chcę uruchomić obliczenia zasobochłonne na tym samym serwerze jako front-end web app, więc te zadania muszą być przekazany do pracownika instancja.
Te obliczenia podjąć dobrą ilość CPU do uruchomienia i chciałbym zachować latencję jak najniżej (oby sekund, a nie minut), więc wolałbym, aby uruchomić obliczenia na beefier sprzętu.
nie może pozwolić na uruchomienie beefy wystąpienie EC2 w temperaturze około 66 ¢/h x 24hrs/dzień, tak na żądanie lub przypadkach żądanie dodatkowe są prawdopodobnie konieczne.
Oto opcje mam pochodzić z:
uruchomić tanie, przystępne pracownik instancji 24 godziny na dobę, które trwa jedno zadanie naraz zarządzanego przez Amazon SWF (lub SQS).
Wady:- wysokiej latencji - Tańsze sprzętu, dłuższy czas oczekiwania.
- wysokiej latencji - Tańsze sprzętu, dłuższy czas oczekiwania.
ikra mocniejsze przykład pracownika per zadania (zatrzymywania się, gdy praca jest dodawany do kolejki) i zakończyć wystąpienia po zakończeniu.
Wady:- drogie/marnotrawstwem - będę płacić za godzinę na serwerze każdym razem i tylko przy użyciu sekund moich obliczeń napowietrznej
- startup - Włączy się nowa instancja EC2 na żądanie wprowadzi niezauważalne opóźnienie (skompensowanie całkowania cel wykorzystania bardziej rozbudowanego sprzętu)?
- drogie/marnotrawstwem - będę płacić za godzinę na serwerze każdym razem i tylko przy użyciu sekund moich obliczeń napowietrznej
jak # 2, ale z niskiej stawki wniosków spot EC2.
Wady:- startowy napowietrzne - Zobacz # 2
- inconsistancy? - Nigdy wcześniej nie pracowałem z żądaniami spotów, , więc nie mam pojęcia, jak niestabilne i praktyczne rozwiązanie, takie jak , byłoby ... czy muszę stale dostosowywać moje oferty, aby uzyskać , czy nadal mogę wykonywać zadania Sporządzono w godzinach szczytu? Ponadto, przypuszczam, że musiałbym ściśle monitorować moje procesy, aby upewnić się, że nie są one przerywane w połowie obliczeń.
- startowy napowietrzne - Zobacz # 2
Jakiś rozwiązanie hybrydowe, gdzie aktywnie monitorować instancji pracownik mięsisty-sprzętowych i ich ładunków i inteligentnie rozpędzają i zakończenia wystąpień na godzinę, aby utrzymać optymalną bilans kosztów i dostępność
Wady:- skomplikowana i kosztowna konfiguracja - O ile nie jest to dobry serwis udało tam obsłużyć rzeczy, jak to, że będę musiał ustawić wszystkie całej tej infrastruktury się siebie ...
- skomplikowana i kosztowna konfiguracja - O ile nie jest to dobry serwis udało tam obsłużyć rzeczy, jak to, że będę musiał ustawić wszystkie całej tej infrastruktury się siebie ...
Żałuję, że nie było usługi, w której mógłbym zapłacić za wysoce dostępny sprzęt na żądanie z minuty na minutę, a nie co godzinę.
więc moje pytania są następujące:
Jak można polecić rozwiązanie tego problemu?
Czy istnieje dobre rozwiązanie do zarządzania instancjami EC2, które może zasiadać na Amazon SWF i pomóc mi załadować saldo i zakończyć bezczynnych pracowników?
Czy wnioski o zamówienie na miejscu rozwiążą mój problem lub czy są bardziej odpowiednie do zadań, które niekoniecznie muszą być wykonane od razu?
Jeśli istnieje możliwość wdrożenia MCMC w Pythonie, możesz użyć Google App Engine. Fakturowanie w App Engine opiera się głównie na zasobach, z których korzysta twoja aplikacja, zamiast na wynajmie instancji EC2. – jthetzel
Niestety, utknąłem na R ... obsługuje większość ciężkiego podnoszenia, a chłopaki, z którymi pracuję, są matematykami, a nie programistami, więc musiałem to utrzymać. – mikegreiling
Istnieje również projekt [projekt renjin] (http://code.google.com/p/renjin/), który ma być interpreterem JVM R. Ostatecznie powinieneś być w stanie użyć go do uruchomienia R na silniku aplikacji Java, ale nie wiem, jak stabilny jest w tej chwili. – jthetzel