2016-11-10 10 views
11

Oceniam narzędzia do produkcji aplikacji opartych na ML, a jedną z naszych opcji jest Spark MLlib, ale mam kilka pytań dotyczących sposobu obsługi modelu po jego przeszkoleniu?Jak obsługiwać model Spark MLlib?

Na przykład w modelu Azure ML, po wyszkoleniu model jest prezentowany jako usługa internetowa, którą można wykorzystać z dowolnej aplikacji, i podobnie jest w przypadku Amazon ML.

W jaki sposób obsługujesz/wdrażasz modele ML w Apache Spark?

Odpowiedz

11

Z jednej strony, model uczenia maszynowego zbudowany z iskry nie może być obsługiwany w sposób tradycyjny w usługach Azure ML lub Amazon ML.

Databricks twierdzi, że może wdrażać modele przy użyciu swojego notatnika, ale jeszcze tego nie próbowałem.

Z drugiej strony, można użyć modelu na trzy sposoby:

  • Szkolenie w locie wewnątrz aplikacji następnie zastosowanie prognozy. Można to zrobić w aplikacji iskrowej lub notebooku.
  • Wyszkol model i zapisz go, jeśli implementuje MLWriter, a następnie załaduj go do aplikacji lub notebooka i uruchom na podstawie danych.
  • Wyszkol model ze Spark i wyeksportuj go do formatu PMML, używając jpmml-spark. PMML pozwala różnym narzędziom statystycznym i eksploracji danych mówić w tym samym języku. W ten sposób rozwiązanie predykcyjne może być łatwo przenoszone pomiędzy narzędziami i aplikacjami bez potrzeby stosowania niestandardowego kodowania. np. od Spark ML do R.

To są trzy możliwe sposoby.

Oczywiście można pomyśleć o architekturze, w której można korzystać z usługi REST, za którą można budować za pomocą programu iskrobezpiecznego na przykład w celu szkolenia i wdrażania, ale wymaga to pewnych ulepszeń.To nie jest gotowe rozwiązanie.

Możesz także użyć projektów takich jak Oryx 2, aby stworzyć pełną architekturę lambda do szkolenia, wdrażania i obsługi modelu.

Niestety, opisanie każdego z wyżej wymienionych rozwiązań jest dość szerokie i nie mieści się w zakresie SO.

+0

Chciałbym dać szansę iskrowi. Możesz buforować model (kompletny iskiernik nawet) łatwo i szybko odpowiedzieć na ML - odpowiednie zapytania, takie jak klasyfikacje lub zapytania. Daje także możliwość buforowania zagregowanych tabel i szybkiego zwracania json zawierających te dane lub ich części w celu wizualizacji lub dalszego przetwarzania w innej aplikacji. –

4

Porównywasz dwie różne rzeczy. Apache Spark jest silnikiem obliczeniowym, podczas gdy wspomniane przez Ciebie rozwiązania Amazon i Microsoft oferują usługi. Te usługi mogą równie dobrze mieć Spark z MLlib za sceną. Pozwalają one zaoszczędzić na kłopotach z budowaniem usługi sieciowej, ale dodatkowo płacisz.

Liczba firm, takich jak Domino Data Lab, Cloudera lub IBM oferuje produkty, które można wdrożyć we własnym klastrze Spark i łatwo budować usługi wokół swoich modeli (z różnym stopniem elastyczności).

Oczywiście sam tworzysz usługę za pomocą różnych narzędzi open source. Które konkretnie? Wszystko zależy od tego, czego szukasz. Jak użytkownik powinien wchodzić w interakcję z modelem? Czy powinien istnieć jakiś interfejs użytkownika lub interfejs REST API? Czy chcesz zmienić niektóre parametry modelu lub samego modelu? Czy praca ma charakter bardziej partyjny czy w czasie rzeczywistym? Możesz oczywiście zbudować kompleksowe rozwiązanie, ale to będzie ogromny wysiłek.

Moja osobista rekomendacja to skorzystanie, jeśli możesz, z jednej z dostępnych usług Amazon, Google, Microsoft lub cokolwiek innego. Potrzebujesz wdrożenia na miejscu? Sprawdź Domino Data Lab, ich produkt jest dojrzały i pozwala na łatwą pracę z modelami (od budowy do wdrożenia). Cloudera koncentruje się bardziej na klastrze obliczeniowym (w tym na Sparku), ale minie trochę czasu, zanim dojdą do czegoś dojrzałego.

[EDYTOWANIE] Polecam przyjrzeć się Apache PredictionIO, serwerowi uczącemu się open source - niesamowity projekt z wieloma potencjalnymi możliwościami.

Powiązane problemy