2012-06-10 9 views
18

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:

  1. 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.

  2. 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.

  3. 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:

  1. 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.



  2. 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)?



  3. 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ń.



  4. 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 ...

Ż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?

+0

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

+0

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

+1

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

Odpowiedz

4

Istnieje inna opcja, której możesz nie znać. Właśnie natknąłem się na to: http://multyvac.com

Nie posiadam żadnego doświadczenia z jego używaniem (więc nie mogę ręczyć za to), ale wygląda na to, że pierwsze rozwiązanie, jakie widziałem, faktycznie oferuje prawdziwe "narzędzie komputerowe". Zaczęło się od Pythona, ale teraz obsługuje dowolny język.

+0

To wygląda idealnie! Obliczanie zadań proporcjonalnie do milisekundy ... Będę się z tym bawić i zobaczę, czy uruchomi moją aplikację. – mikegreiling

+0

Doskonały. Byłbym zainteresowany wysłuchaniem śledztwa, aby sprawdzić, czy to coś dobrego. – jman

+0

Edytowałem tę odpowiedź - wygląda na to, że PiCloud jest wyłączony. Myślę, że znalazłem odpowiedni zamiennik: http://docs.multyvac.com/introduction.html#relation-to-picloud – Kobi

2

Szkoda, że ​​nie było pewne usługi, gdzie mogę zapłacić za wysoko dostępnego sprzętu na żądanie na podstawie minuty na minutę zamiast godzinowej.

Usługa jest AWS Lambda, który nie był dostępny, gdy zadał pytanie:

Lambda działa kod na wysokiej dostępności infrastruktury obliczeniowej i wykonuje wszystkie administracja zasobów obliczeniowych, w tym serwer i utrzymanie systemu operacyjnego, zdolność tworzenia rezerw oraz automatyczne skalowanie

Pricing:

Opłata jest naliczana na podstawie liczby wniosków o swoich funkcji i po raz kod wykonuje

Czas liczony jest od chwili kod rozpoczyna wykonującego aż powróci albo w inny sposób kończy, zaokrąglana do najbliższe 100ms.

Można też owinąć funkcji Lambda z HTTP endpoint, ewentualnie usunięcie tej warstwy z aplikacji:

można wywołać funkcję lambda za pośrednictwem protokołu HTTPS przez definiowanie niestandardowych REST API przy użyciu Amazon API Gateway. Daje to punkt końcowy dla twojej funkcji, który może odpowiadać na wywołania REST, takie jak GET, PUT i POST. Przeczytaj więcej o korzystaniu z AWS Lambda z Amazon API Gateway.

Zastrzeżenie: Lambda obsługuje obecnie tylko JavaScript, Java i Python, więc nie jestem pewien, w jaki sposób dostaniesz R do pracy. Być może będziesz musiał umieścić R w jednym z tych środowisk wykonawczych.

Powiązane problemy