Wdrażanie pierwszego interfejsu API uczenia maszynowego

Węzeł źródłowy: 1877941

Srebrny blogWdrażanie pierwszego interfejsu API uczenia maszynowego

Łatwy sposób na opracowanie i wdrożenie interfejsu API uczenia maszynowego przy użyciu FastAPI i Deta.




Zdjęcie autora | Elementy wg sok wektorowy

 

Wprowadzenie

 
 
W tym projekcie dowiemy się, jak zbudować interfejs programowania aplikacji (API) dla Twojego modelu uczenia maszynowego, a następnie wdrożyć go za pomocą prostego kodu. Nauka FastAPI zajęła mi godzinę, a nauczenie się, jak wdrożyć ją na serwerach Deta – pięć minut. Przetestujemy także nasze API zarówno na serwerze lokalnym, jak i na serwerze zdalnym przy użyciu Pythona PROŚBA. Wejdźmy nieco głębiej w technologie, które będziemy wykorzystywać w naszym projekcie.



Zdjęcie autora

 

Przestronny

 
 
spaCy jest bardziej przyjazny w stosowaniu i wdrażaniu w porównaniu ze słynną biblioteką Pythona NLTK, która jest używana do eksperymentów i oceny. spaCy zawiera wstępnie zbudowane statystyczne modele NLP sieci neuronowej z zaawansowanymi funkcjami, które są łatwe w użyciu i implementacji w Twoim projekcie Przestronny. Będziemy używać całkiem prostego i małego, gotowego modelu angielskiego do wyodrębniania elementów z naszego tekstu.

FastAPI

 
 
FastAPI to szybka platforma internetowa do tworzenia interfejsów API w języku Python, zapewnia szybszy czas wykonywania zapytań, łatwy i zminimalizowany kod, dzięki czemu możesz zaprojektować swój pierwszy interfejs API w ciągu kilku minut FastAPI. W naszym projekcie będziemy się uczyć jak działa FastAPI i jak możemy wykorzystać nasz gotowy model do uzyskania encji z tekstu w języku angielskim.

Szczegóły

 
 
Będziemy używać usługi Deta Micros dla naszego API i wdrażać nasz projekt bez plików dokowanych i YAML. Platforma Deta charakteryzuje się łatwym do wdrożenia interfejsem CLI, wysoką skalowalnością, bezpiecznymi kluczami uwierzytelniającymi API, możliwością zmiany subdomeny i rejestrowaniem ruchu sieciowego. Korzystanie z tych funkcji jest całkowicie bezpłatne Deta. W naszym projekcie będziemy używać Deta CLI do wdrożenia naszego Fast API za pomocą kilku linii skryptów.

Code

 
 
Ucząc się FastAPI, natknąłem się na YouTube wideo co zmotywowało mnie do napisania tego artykułu. Sebastiana Ramíreza wyjaśnił, jak działa Fast API i dlaczego jest to najszybszy dostępny framework sieciowy Pythona. Będziemy pisać dwa pliki Pythona. Jeden zawiera model uczenia maszynowego, a drugi plik zawiera kod API.

wymagania

 
 
Zanim zaczniemy, musimy utworzyć nowy katalog z plikiem wymagania.txt plik. Wszystkie niezbędne biblioteki, z których będziemy korzystać, znajdziesz poniżej 👇

fastapi
spacy
uvicorn
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.1.0/en_core_web_sm-3.1.0.tar.gz

Możesz zainstalować je jeden po drugim lub użyć 🔻

$ pip install -r requirements.txt

W tym projekcie będziemy używać wstępnie wytrenowanego modelu NLP, dlatego musimy go pobrać z repozytorium GitHub https://github.com/explosion/spacy-models lub po prostu uruchom plik wymagań, a pobierze go i zainstaluje automatycznie.

Model uczenia maszynowego

 
 
Będziemy używać wstępnie przeszkolonych przestronne Model NLP do wyodrębniania jednostek z tekstu. Jeśli używasz notatnika Jupyter, spróbuj użyć %%plik zapisu aby utworzyć plik Pythona w swoim katalogu.

Najpierw załadowaliśmy model NLP, a następnie wyodrębniliśmy jednostki z CBS Aktualności artykuł. Za pomocą zaledwie kilku linii kodu jesteś w stanie uruchomić swój pierwszy model uczenia maszynowego. Możesz także załadować przeszkolony model przy użyciu tej samej metody.


Plik API

 
 
To jest twój główny plik, który zawiera:

  1. czytaj_główny: posługiwać się GETktóry żąda danych z zasobu, w naszym przypadku wyświetli się komunikat Witamy.
  2. artykuł klasowy: Posługiwać się pidantycy Model podstawowy do definiowania obiektów i zmiennych, które będą używane w Twoim API (helpmanual.io). W naszym przypadku definiujemy treść jako ciąg znaków, a komentarze jako listę ciągów znaków.
  3. analizuj_artykuł: Pobiera listę tekstu z komentarzami i wyświetla elementy używające NLP obiekty z pliku ml.

Wiem, że to dość zagmatwane, więc podzielmy to na mniejsze części, aby dobrze to zrozumieć.



Breaking Down

 
 
Stworzyliśmy obiekt FastAPI, a następnie używamy go jako dekorator na twojej funkcji using @aplikacja Dostawać("/").

  • @aplikacja jest dekoratorem obiektu FastAPI
  • .get lub .post if metody HTTP do zwracania danych lub przetwarzania danych wejściowych
  • („/”) to lokalizacja na serwerze internetowym. W naszym przypadku jest to strona główna. Jeśli chcesz dodać kolejny katalog, możesz użyć („/ /”)

stworzyliśmy czytaj_główny funkcja wyświetlania komunikatu na stronie głównej, to takie proste.



Teraz utworzymy Artykuł klasa, z której dziedziczy funkcje i zmienne Model podstawowy. Ta funkcja pomaga nam utworzyć typ argumentu, którego będziemy używać, jak w POST metoda. W naszym przypadku utworzyliśmy treść jako zmienną łańcuchową, a komentarze jako listę ciągów znaków.



W ostatniej części tworzymy a POST metoda („/article/”) dla naszego API. Oznacza to, że utworzymy nową sekcję, która będzie przyjmować argumenty jako dane wejściowe i zwracać wyniki po ich przetworzeniu.

  • Klasa artykułu jako argument: Tworzenie argumentu Artykuły za pomocą Listy Artykułów, który umożliwi nam dodanie wielu wpisów tekstów.
  • Wyodrębnianie danych z artykułów: Tworzenie pętli wyodrębniających dane z listy artykułów, a następnie z list komentarzy. Dodaje także komentarze do tablicy.
  • Ładowanie tekstu do modelu NLP: ładowanie treści do nlp wstępnie wytrenowany model.
  • Wyodrębnianie jednostek: wyodrębnianie jednostek z nlp obiekt, a następnie dodając go do ent szyk. Spowoduje to złożenie wyników.
  • Pokaz: Funkcja zwróci listę encji i komentarzy.



Testowanie

 
 
Szybkie API zostało zbudowane na Uvicorn, więc serwer działa również na Uvicorn. W notatniku Jupyter możesz uruchomić aplikację za pomocą 👇 lub po prostu wpisać w terminalu uwicorn a później główny plik i obiekt FastAPI, którym jest Aplikacja w naszym przypadku.



Nasz serwer działa płynnie więc korzystajmy żądanie.pobierz sposób uzyskania do niego dostępu. API działa wyświetlając nam komunikat „Witamy” na stronie głównej.



teraz spróbujmy dodać pojedynczy tekst i komentarze jako słownik na liście. Będziemy używać POST metoda żądania i /artykuł/ aby uzyskać dostęp do naszej funkcji modelu NLP. Konwertuj swoje dane wyjściowe na .json() aby ułatwić wyodrębnienie danych.

mamy klucze do słownika: ['enti', 'komentarze']



Sprawdźmy jak wygląda cały nasz wynik. Wygląda na to, że mamy ent z listą etykiet i podmiotów. To samo dotyczy komentarze klucz



Teraz wyodrębnijmy pojedynczą jednostkę z jej tekstem, aby sprawdzić elastyczność naszych wyników. W naszym przypadku wyodrębniamy drugą encję z wyjścia.

Wynik pokazuje doskonałość.



Rozlokowanie

 
 
Przejdź do terminala lub możesz wykonać te same kroki w komórce notatnika Jupyter, ale dodając „!” przed jakimkolwiek scenariuszem. Najpierw musisz uzyskać dostęp do katalogu za pomocą cd gdzie Twój main.py ml.py pliki znajdują się.

cd ~”/FastAPI-ML-Project”

Trzy główne pliki wymagane przez Szczegóły jest ml.pymain.py, wymagania.txt.



Zdjęcie autora | Katalog projektów

 

Jeśli używasz Windows użyj poniższego polecenia w PowerShell, aby pobrać i zainstalować Deta CLI

dla Linux

curl -fsSL https://get.deta.dev/cli.sh | sh

Następnie użyj dane logowania, przeniesie Cię do przeglądarki i poprosi o wejście nazwa użytkownika i password. Jeśli jesteś już zalogowany, uwierzytelnienie zajmie kilka sekund.

deta login



Uwierzytelnienie szczegółów | Twojego

 

Te dwa słowa w twoim terminalu są magiczne słowa, który prześle pliki i wdroży aplikację w ciągu 2 minut.

deta new

Twoja aplikacja została przesłana na łączu punktu końcowego. W naszym przypadku https://93t2gn.deta.dev/

Successfully created a new micro{“name”: “FastAPI-ML-Project”,“runtime”: “python3.7”,“endpoint”: “https://93t2gn.deta.dev/",“visor”: “enabled”,“http_auth”: “disable”}Adding dependencies…Collecting fastapi…Successfully installed ……

Jeśli widzisz błąd, sprawdź dzienniki za pomocą szczegółowe logi, dokonaj pewnych zmian, a następnie użyj szczegółowe wdrożenie aby zaktualizować zmiany.

Jak widać, nasza aplikacja jest wdrożona i działa na serwerach Deta.



Podsumowanie projektu | Twojego

 

Możesz przejść do linku podanego przez Szczegóły i sprawdź to sam.



Zdjęcie autora

 

Testowanie internetowego API

 
 
Na koniec przetestujmy nasze zdalne API jako mikroserwis na platformie Deta. Tym razem zamiast dodawać lokalny adres IP, dodamy łącze do punktu końcowego Deta. Możemy działać bez nagłówka, ponieważ nie mamy włączonego uwierzytelniania API. Deta zapewnia również bezpłatne klucze API, gdy włączone jest uwierzytelnianie. Oznacza to, że tylko Ty lub osoba posiadająca klucz API możesz uzyskać dostęp do serwera WWW. Aby dowiedzieć się więcej na temat uwierzytelniania i subdomeny, sugeruję przeczytanie dokumentacje.

dodamy ten sam parametr i ten sam kod, aby uzyskać ten sam wynik i voilà, to zadziała magicznie. Twoje API jest online i może być z łatwością dostęp za pomocą linku.



Wnioski

 
 
Po zapoznaniu się z FastAPI myślałem o tym, co będzie dalej, więc pewnego dnia przeglądając sieć natknąłem się na Detę, która przykuła moją uwagę. Instalacja zajęła mi kilka minut Więcej CLI i wdróż mój interfejs API na zdalnym serwerze. Jestem pod wrażeniem ich subdomeny i funkcji bezpłatnego klucza API. Szybko zrozumiałem, jak działa ta usługa i jak będę z niej korzystał w moich przyszłych projektach.

Wszyscy zadajemy to pytanie po poznaniu kilku modeli uczenia maszynowego.


Wiem, jak wytrenować mój model i uzyskać prognozy, ale co dalej? Jak udostępnić mój model innym? Aby mogli zobaczyć, co zbudowałem i wykorzystać te funkcje w swoich projektach.


To jest miejsce, w którym podoba się platforma chmurowa HerokuGoogleLazur pojawia się, ale platformy te są dość skomplikowane i trzeba nauczyć się kodować Doker plik, co czasami może być frustrujące. Szczegóły rozwiązuje wszystkie Twoje problemy dzięki prostemu, dwuwyrazowemu skryptowi, który wdroży i uruchomi Twoją aplikację w ciągu kilku sekund.

Możesz także sprawdzić moje repozytorium GitHub dotyczące tego projektu: Projekt kingabzpro/FastAPI-ML.


Możesz mnie śledzić LinkedIn i Poliwork gdzie co tydzień publikuję artykuł.


 
Bio: Abid Ali Awan jest certyfikowanym analitykiem danych, który uwielbia budować modele uczenia maszynowego i blogować o najnowszych technologiach AI.

Oryginalny. Przesłane za zgodą.

Związane z:

Źródło: https://www.kdnuggets.com/2021/10/deploying-first-machine-learning-api.html

Znak czasu:

Więcej z Knuggety