Wdrażanie modeli uczenia maszynowego w Heroku

Opublikowany: 2021-01-05

Uczenie maszynowe to ciągły proces, który obejmuje wyodrębnianie danych, czyszczenie, wybieranie ważnych funkcji, budowanie modelu, walidację i wdrażanie w celu przetestowania modelu na niewidocznych danych.

Chociaż początkowa faza inżynierii danych i budowania modelu jest dość żmudnym procesem i wymaga dużo czasu, aby spędzić z danymi, wdrożenie modelu może wydawać się proste, ale jest to proces krytyczny i zależy od przypadku użycia, do którego chcesz dotrzeć. Możesz dostosować model do użytkowników mobilnych, stron internetowych, urządzeń inteligentnych lub za pośrednictwem dowolnego innego urządzenia IoT.

Można zdecydować się na zintegrowanie modelu w głównej aplikacji, włączenie go do SDLC lub w chmurze. Istnieją różne strategie wdrażania i uruchamiania modelu na platformie chmurowej, co w większości przypadków wydaje się lepszym rozwiązaniem ze względu na dostępność narzędzi, takich jak Google Cloud Platform, Azure, Amazon Web Services i Heroku.

Chociaż możesz zdecydować się na udostępnienie modelu w sposób Pub/Sub, API (interfejs programu aplikacji) lub opakowanie REST są częściej używane do wdrażania modelu w środowisku produkcyjnym. Wraz ze wzrostem złożoności modelu, różne zespoły są przydzielane do obsługi takich sytuacji powszechnie znanych jako inżynierowie uczenia maszynowego. Po tym obszernym wprowadzeniu przyjrzyjmy się, jak wdrożyć model uczenia maszynowego jako interfejs API na platformie Heroku.

Spis treści

Czym jest Heroku?

Heroku to platforma jako narzędzie serwisowe, które umożliwia programistom hostowanie ich kodu bezserwerowego. Oznacza to, że można opracować skrypty służące jednemu lub drugiemu do określonych celów. Platforma Heroku sama jest hostowana na AWS (Amazon Web Services), który jest narzędziem infrastruktury jako usługi.

Heroku to darmowa platforma, ale ograniczona do 500 godzin pracy. Aplikacje są hostowane jako hamownia, która po 30 minutach bezczynności przechodzi w tryb uśpienia. Gwarantuje to, że Twoja aplikacja nie zużywa całego wolnego czasu podczas braku aktywności. Platforma obsługuje Ruby, Java, PHP, Python, Node, Go, Scala. Większość początkujących Data Science odnosi się do tej platformy, aby mieć doświadczenie w uruchamianiu i wdrażaniu modelu w chmurze.

Przygotowanie modelu

Teraz, gdy znasz tę platformę, przygotujmy model na to samo. Gdy model uczenia maszynowego jest trenowany, odpowiednie parametry są przechowywane w samej pamięci. Ten model należy wyeksportować w osobnym pliku, abyśmy mogli bezpośrednio załadować ten model, przekazać niewidoczne dane i uzyskać dane wyjściowe.

Zwykle stosuje się różne formaty modeli, takie jak Pickle, biblioteka zadań, która konwertuje model obiektowy Pythona na strumień bitów, ONNX, PMML lub MOJO, który jest formatem eksportu H20.ai i oferuje model do integracji z aplikacjami Java. Dla uproszczenia rozważ, że chcemy wyeksportować model za pomocą pickle, możesz to zrobić przez:

importuj marynatę

Pkl_Filename = „model.pkl”

z open(Pkl_Filename, 'wb') jako plik:

pickle.dump(nazwa_modelu, plik)

Model jest teraz przechowywany w osobnym pliku i gotowy do użycia w integracji z API.

Logika serwera

Aby zapewnić dostęp do tego modelu w celu prognozowania, potrzebujemy kodu serwera, który może przekierowywać i obsługiwać wszystkie żądania po stronie klienta. Python obsługuje frameworki do tworzenia stron internetowych, a słynnym z nich jest Flask.

Jest to minimalistyczny framework, który pozwala na postawienie serwera za pomocą kilku linijek kodu. Ponieważ jest to pakiet minimalny, wiele funkcji, takich jak uwierzytelnianie i natura RESTful, nie jest wyraźnie obsługiwanych. Można je zintegrować z rozszerzeniami.

Inną opcją jest wybór nowo wydanego frameworka FastAPI. Jest znacznie szybszy, skalowalny, dobrze udokumentowany i zawiera wiele zintegrowanych pakietów. Na razie przejdźmy do kolby, aby ustawić prostą trasę przewidywania.

z kolby importu Flask

importuj marynatę

aplikacja = Kolba(__nazwa__)

z open(Nazwa pliku, 'rb') jako plik:

model = pickle.load(plik)

@app.route('/predict', method = ['GET', 'POST'])

def pred():

# zaimplementuj logikę, aby uzyskać parametry za pomocą zapytania lub ładunku

przewidywanie = model.predict([uzyskane parametry])

return {'wynik': prognoza}

To jest przybliżony kod pokazujący, jak postępować z logiką serwera. Istnieją różne strategie, które możesz wybrać dla lepszej implementacji.

Wyewidencjonuj: Przewodnik po wdrażaniu modeli ML za pomocą Streamlit

Konfigurowanie plików wdrożeniowych

Heroku wymaga wykazu wszystkich zależności wymaganych przez naszą aplikację. Nazywa się to plikiem wymagań. Jest to plik tekstowy zawierający listę wszystkich zewnętrznych bibliotek, z których korzysta aplikacja. W tym przykładzie zawartość pliku zawierałaby:

kolba

szorstko

Nudny </p>

pandy

Gunicorn

Ostatnia biblioteka, gunicorn, pozwala nam skonfigurować implementację serwera WSGI, która stanowi interfejs dla klienta i serwera obsługującego ruch HTTP. Heroku wymaga również innego pliku znanego jako Procfile, który służy do określenia punktu wejścia aplikacji. Weź pod uwagę, że plik logiki serwera jest zapisany pod nazwą main.py, to polecenie, które należy umieścić w tym pliku to:

sieć: gunicorn główna: aplikacja

„sieć” to rodzaj hamowni, którą wdrażamy, „gunicorn” działa jako mediator, przekazując żądanie do serwera o kodzie „main” i wyszukiwaniu „app” w „main”. Aplikacja obsługuje tutaj wszystkie trasy.

Ostateczne wdrożenie

Wszystkie przygotowania już za nami, teraz czas na uruchomienie aplikacji w chmurze. Utwórz konto, jeśli nie w Heroku, kliknij Utwórz aplikację, wybierz dowolny region. Następnie połącz swoje konto GitHub i wybierz repozytorium zawierające te pliki: kod serwera, model.pkl, wymagania.txt i Procfile.

Po tym po prostu naciśnij gałąź wdrażania! Jeśli się powiedzie, odwiedź wygenerowany link, a Twoja aplikacja powinna być aktywna. Teraz możesz wysyłać żądania do appname.herokuapp.com/predict route i powinna ona podawać prognozy. Dowiedz się więcej o modelach uczenia maszynowego.

Wniosek

To było wprowadzenie do tego, czym jest Heroku, dlaczego jest wymagane i jak wdrożyć model za pomocą Flask. Istnieje wiele platform hostingowych, które oferują bardziej zaawansowane funkcje, takie jak potoki danych, przesyłanie strumieniowe, ale Heroku jako platforma bezpłatna jest nadal dobrym wyborem dla początkujących, którzy chcą po prostu zasmakować wdrażania.

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, sprawdź dyplom PG IIIT-B i upGrad w uczeniu maszynowym i sztucznej inteligencji, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznego szkolenia, ponad 30 studiów przypadków i zadań, IIIT- Status absolwenta B, ponad 5 praktycznych, praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Jakie są wady korzystania z platformy Heroku?

Heroku nie jest idealnym rozwiązaniem dla dużych przedsiębiorstw, ponieważ dokumentacja platformy nie jest obszerna. Inną kwestią jest system plików tylko do odczytu, który utrudnia przesyłanie dużych plików, takich jak filmy lub zdjęcia w wysokiej rozdzielczości. Heroku to dostawca platformy jako usługi z ograniczoną możliwością dostosowania. Heroku akceptuje tylko płatności w USD, a nie w innych walutach, takich jak EUR. Dla właścicieli firm, którzy wolą płacić we własnej walucie, może to być niewielka niedogodność. Ponadto w ramach CRE (Common Runtime Environment) Heroku nie zapewnia statycznych adresów IP.

Czym Heroku różni się od AWS?

Procedura wdrożenia w AWS nie jest prosta, a co za tym idzie nie jest szczególnie przyjazna dla użytkownika pod względem złożoności. Heroku zapewnia gotowe do użycia środowisko, które jest proste w obsłudze. Heroku jest droższe niż AWS, ponieważ wymaga mniej interwencji człowieka. AWS może obsłużyć wysokie lub bardzo wysokie wymagania obliczeniowe, podczas gdy Heroku może obsłużyć skromne wymagania obliczeniowe. Heroku w przeciwieństwie do AWS nie wymaga regularnej konserwacji infrastruktury. AWS i Heroku są błyskawicznie szybkie, jeśli chodzi o wdrażanie.

Jak długo mogę bezpłatnie korzystać z Heroku?

Konta Heroku mają pulę bezpłatnych godzin na dyno, z których można korzystać w bezpłatnych aplikacjach. Zastępuje to 18-godzinny limit bezpłatnych programów, umożliwiając w razie potrzeby działanie przez 24 godziny na dobę. Nowe konta otrzymują 550 darmowych godzin na dyno, z dodatkowymi 450 godzinami, jeśli potwierdzisz swoją tożsamość za pomocą karty kredytowej. Heroku zapewnia bezpłatny plan, który pomoże Ci poznać technologię i zacząć. Wiele dodatków Heroku zapewnia darmowy plan, podobnie jak przyciski Heroku i Buildpacks.