Jednym z aspektów scenariusza jest stworzenie modelu uczenia maszynowego. Musi być użyteczny w prawdziwym świecie i dostępny dla konsumentów i programistów.
Najprostszym i najpopularniejszym sposobem wdrażania modeli uczenia maszynowego jest umieszczenie ich w interfejsie API REST.
Dzięki popularnej bibliotece o nazwie FastAPI właśnie to osiągniemy dzisiaj.
Ale co to jest? FastAPI?
Framework sieciowy FastAPI Python został stworzony od podstaw, aby wykorzystać współczesne możliwości Pythona.
Do asynchronicznej, współbieżnej komunikacji z klientami jest zgodny ze standardem ASGI, a także może korzystać z WSGI.
Zarówno punkty końcowe, jak i trasy mogą wykorzystywać funkcje asynchroniczne. Ponadto FastAPI umożliwia produktywne tworzenie aplikacji internetowych w czystym, współczesnym kodzie Pythona ze wskazówkami typu.
Głównym zastosowaniem FastAPI jest, jak sama nazwa wskazuje, tworzenie punktów końcowych API.
Korzystanie ze standardu OpenAPI, który obejmuje interaktywny interfejs użytkownika Swagger, lub dostarczanie danych słownikowych Pythona w formacie JSON to proste sposoby na osiągnięcie tego. Jednak FastAPI to nie tylko API.
Może być używany do oferowania standardowych stron internetowych za pomocą silnika szablonów Jinja2 i do obsługi aplikacji korzystających z WebSockets, oprócz prawie wszystkiego, co może zrobić framework sieciowy.
W tym artykule opracujemy prosty model uczenia maszynowego, a następnie użyjemy FastAPI do jego wdrożenia. Zaczynajmy.
Instalacja FastAPI i stworzenie pierwszego API
Najpierw wymagana jest instalacja biblioteki i serwera ASGI; zadziała albo Uvuicorn, albo Hypercorn. Działa poprzez wprowadzenie następującego polecenia do terminala:
Teraz, gdy interfejs API został utworzony, możesz użyć preferowanego edytora kodu i przeglądać go. Aby rozpocząć, utwórz skrypt Pythona o nazwie ml_model.py. Możesz nadać swojej innej nazwie, ale na potrzeby tego posta będę nazywać ten plik ml_model.py.
Aby utworzyć prosty interfejs API z dwoma punktami końcowymi, musisz wykonać następujące zadania:
- Zaimportuj biblioteki FastAPI i Uvicorn.
- Skonfiguruj instancję klasy FastAPI.
- Zadeklaruj pierwszą trasę, która na stronie indeksu tworzy prosty obiekt JSON.
- Zadeklaruj drugą trasę, która zapewnia prosty obiekt JSON z dostosowanym komunikatem. Parametr name jest pobierany bezpośrednio z adresu URL (na przykład https://127.0.0.1:8000/Jay).
- Wykorzystaj Uvicorn do uruchomienia API.
Realizacja tych pięciu etapów jest pokazana w poniższym fragmencie kodu tj. tworzenie prostego API
Wszystko gotowe! Zacznijmy od razu nasze API. Otwórz okno Terminal obok pliku ml model.py, aby to zrobić. Następnie wprowadź następujące informacje:
klawisz Enter. Zanim przejdziemy dalej, podważmy to twierdzenie. Pierwsza aplikacja korzysta z samej nazwy pliku Pythona, bez rozszerzenia. Druga aplikacja musi mieć taką samą nazwę jak instancja FastAPI.
Używając -reload, informujesz API, że chcesz, aby automatycznie przeładowywał się po zapisaniu pliku, zamiast zaczynać od zera.
Teraz uruchom przeglądarkę i przejdź do https://127.0.0.1:8000; wynik powinien wyglądać następująco:
Teraz rozumiesz, jak stworzyć prosty interfejs API za pomocą FastAPI.
Budowanie i szkolenie modelu uczenia maszynowego
Bez zbierania i analizowania jakichkolwiek danych, po prostu wytrenujemy prosty model. Nie są one związane z wdrażaniem modeli i nie są niezbędne do omawianego tematu.
Model oparty na zestawie danych Iris można zainstalować przy użyciu tego samego sieci neuronowe metoda instalacji.
I właśnie to zrobimy: pobierz Zbiór danych tęczówki i trenuj model. To nie będzie proste. Aby rozpocząć, utwórz plik o nazwie jaysmlmodel.py.
W nim wykonasz następujące czynności:
- Importy — będziesz potrzebować pand, scikit-RandomForecastClassifier, BaseModel firmy Learn's pydantic (dlaczego dowiesz się w następnym kroku) oraz biblioteki zadań do przechowywania i ładowania modeli.
- Zadeklaruj klasę IrisSpecies, która dziedziczy z modelu podstawowego. Ta klasa zawiera tylko pola potrzebne do prognozowania pojedynczego gatunku kwiatów (więcej na ten temat w następnej sekcji)
- Utwórz klasę. IrisModel to narzędzie do trenowania i przewidywania modeli.
- Zadeklaruj metodę o nazwie _train model w ramach IrisModel. Służy do trenowania modeli przy użyciu techniki Losowych Lasów. Wyszkolony model jest zwracany przez procedurę.
- Zadeklaruj funkcję przewidywanego gatunku w IrisModel. Służy do prognozowania na podstawie 4 czynników wejściowych (pomiary kwiatów). Zarówno prognoza (gatunki kwiatów), jak i prawdopodobieństwo prognozy są zwracane przez algorytm.
- Zmień konstruktora w IrisModel tak, aby ładował zestaw danych Iris i trenował model, jeśli nie ma go w folderze. To rozwiązuje problem wielokrotnego trenowania nowych modeli. Biblioteka joblib służy do ładowania i zapisywania modeli.
Oto cały kod:
Mam nadzieję, że powyższa lista i komentarze ułatwiły zrozumienie, mimo że była to spora ilość kodu do stworzenia. Teraz, gdy ten model został już opracowany, opublikujmy jego możliwości przewidywania w ciągu kilku dni REST API.
Konstruowanie pełnego REST API
Wróć do pliku ml_model.py i wyczyść wszystkie dane. Szablon będzie zasadniczo taki sam, jak poprzednio, ale powinniśmy zacząć od nowa z pustym plikiem.
Tym razem zdefiniujesz tylko jeden punkt końcowy, który jest wykorzystywany do określenia rodzaju kwiatu. IrisModel.predict species(), która została zadeklarowana w poprzedniej sekcji, jest wywoływana przez ten punkt końcowy w celu wykonania prognozy.
Typ żądania to kolejna duża zmiana. Aby przesyłać parametry w formacie JSON zamiast adresu URL, zaleca się użycie metody POST podczas używania uczenie maszynowe Pszczoła.
Powyższe zdanie może brzmieć jak bełkot, jeśli jesteś naukowiec danych, ale to w porządku. Aby zaprojektować i wdrożyć modele, niekoniecznie trzeba być ekspertem w zakresie żądań HTTP i REST API.
Zadania dla ml model.py są nieliczne i proste:
- Należy zaimportować następujące elementy z wcześniej utworzonego pliku jaymlmodel.py: uvicorn, FastAPI, IrisModel i IrisSpecies.
- Twórz instancje FastAPI i IrisModel.
- Zadeklaruj funkcję pod adresem https://127.0.0.1:8000/predict, aby tworzyć prognozy.
- Metoda IrisModel.predict species() odbiera obiekt typu IrisSpecies, przekształca go w słownik, a następnie zwraca. Zwroty to oczekiwana klasa i przewidywane prawdopodobieństwo.
- Użyj uvicorn, aby uruchomić API.
Jeszcze raz, oto kod całego pliku wraz z jego komentarzami:
To wszystko, co musisz zrobić. W następnym kroku przetestujmy API.
Testowanie API
Ponownie wprowadź następujący wiersz do terminala, aby uruchomić API: uvicorn ml_model:app –reload
Tak wygląda strona dokumentacji:
Więc to tyle na dzisiaj. W kolejnej części zakończmy.
Wnioski
Dzisiaj dowiedziałeś się, czym jest FastAPI i jak z niego korzystać, korzystając zarówno z prostego przykładu API, jak i prostego przykładu uczenia maszynowego. Nauczyłeś się również, jak tworzyć i przeglądać dokumentację API, a także jak ją testować.
To dużo jak na jeden kawałek, więc nie zdziw się, jeśli potrzeba kilku odczytów, aby właściwie zrozumieć.
Udanego kodowania.
Dodaj komentarz