Un aspecte de l'escenari és crear un model d'aprenentatge automàtic. Ha de ser utilitzable al món real i disponible per als consumidors i desenvolupadors.
La manera més senzilla i popular de desplegar models d'aprenentatge automàtic és incloure'ls en una API REST.
Amb una biblioteca popular anomenada FastAPI, això és exactament el que aconseguirem avui.
Però, què és FastAPI?
El marc web FastAPI Python es va crear des de principis per aprofitar les capacitats contemporànies de Python.
Per a la comunicació asíncrona i concurrent amb clients, s'adhereix a l'estàndard ASGI, alhora que també és capaç d'utilitzar WSGI.
Els punts finals i les rutes poden utilitzar funcions asíncrones. A més, FastAPI permet la creació productiva d'aplicacions web en codi Python actual, net i amb indicacions de tipus.
El cas d'ús principal de FastAPI és, com el seu nom indica, la creació de punts finals de l'API.
Utilitzar l'estàndard OpenAPI, que inclou una interfície d'usuari interactiva de Swagger, o proporcionar dades del diccionari de Python com a JSON són maneres senzilles d'aconseguir-ho. Tanmateix, FastAPI no és només per a API.
Es pot utilitzar per oferir pàgines web estàndard mitjançant el motor de plantilles Jinja2 i per servir aplicacions que utilitzen WebSockets, a més de pràcticament tot el que pot fer un marc web.
En aquest article, desenvoluparem un model d'aprenentatge automàtic senzill i després utilitzarem FastAPI per implementar-lo. Anem a començar.
Instal·lació de FastAPI i creació de la primera API
Primer cal instal·lar la biblioteca i un servidor ASGI; o Uvuicorn o Hypercorn funcionaran. Funciona introduint la següent comanda al terminal:
Ara que s'ha creat l'API, podeu utilitzar el vostre editor de codi preferit i navegar-hi. Creeu un script de Python anomenat ml_model.py per començar. Us convidem a donar-li un nom diferent al vostre, però pel bé d'aquesta publicació, em referiré a aquest fitxer com a ml_model.py.
Per crear una API senzilla amb dos punts finals, heu de completar les tasques següents:
- Importa les biblioteques FastAPI i Uvicorn.
- Configureu una instància de classe FastAPI.
- Declara la primera ruta, que, a la pàgina d'índex, produeix un objecte JSON senzill.
- Declara la segona ruta, que proporciona un objecte JSON senzill amb un missatge personalitzat. El paràmetre de nom es pren directament de l'URL (per exemple, https://127.0.0.1:8000/Jay).
- Utilitzeu Uvicorn per executar l'API.
La implementació d'aquestes cinc etapes es mostra al següent bit de codi, és a dir. creant una API senzilla
Tot fet! Llancem la nostra API immediatament. Obriu una finestra de terminal al costat del fitxer ml model.py per aconseguir-ho. A continuació, introduïu el següent:
la tecla Enter. Abans de continuar, desmentirem aquesta afirmació. La primera aplicació fa ús només del nom del fitxer Python, sense l'extensió. La segona aplicació ha de tenir el mateix nom que la vostra instància FastAPI.
Amb -reload, dieu a l'API que voleu que es recarregui automàticament quan deseu el fitxer en lloc de començar des de zero.
Ara inicieu un navegador i navegueu a https://127.0.0.1:8000; el resultat hauria de ser el següent:
Ara enteneu com crear una API senzilla mitjançant FastAPI.
Construcció i formació del model d'aprenentatge automàtic
Sense recollir ni analitzar cap dada, només entrenarem un model senzill. Aquests no estan relacionats amb el desplegament de models i no són essencials per al tema en qüestió.
Un model basat en el conjunt de dades Iris es pot instal·lar amb el mateix xarxa neural mètode d'instal·lació.
I farem exactament això: descarregar el Conjunt de dades de l'iris i entrenar el model. Això no serà senzill. Per començar, feu un fitxer anomenat jaysmlmodel.py.
En ell, fareu el següent:
- Importacions: necessitareu pandes, scikit-RandomForecastClassifier, el BaseModel de Learn's pydantic (descobriu per què al pas següent) i joblib per emmagatzemar i carregar models.
- Declarar una classe IrisSpecies que hereta del model base. Aquesta classe només conté els camps necessaris per predir una sola espècie de flor (més sobre això a la secció següent)
- Crear una classe. IrisModel és una eina d'entrenament i predicció de models.
- Declarar un mètode anomenat _train model dins d'IrisModel. S'utilitza per entrenar models mitjançant la tècnica Random Forests. El model entrenat es retorna pel procediment.
- Declarar una funció d'espècie prevista dins IrisModel. S'utilitza per fer pronòstics en funció de 4 factors d'entrada (mesures de flors). Tant la previsió (espècie de flors) com la probabilitat de predicció són retornades per l'algorisme.
- Canvieu el constructor a IrisModel perquè carregui el conjunt de dades Iris i entreni el model si no hi ha a la carpeta. Això resol el problema de la formació repetida de nous models. La biblioteca joblib s'utilitza per carregar i desar models.
Aquí teniu el codi sencer:
Espero que la llista anterior i els comentaris siguin fàcils d'entendre tot i que es tractava d'una quantitat considerable de codi per crear. Ara que s'ha desenvolupat aquest model, publiquem les seves capacitats de predicció sobre a REST API.
Construcció d'una API REST completa
Torneu al fitxer ml_model.py i purgueu totes les dades. El boilerplate serà essencialment el mateix que el que teníeu abans, però hauríem de començar de nou amb un fitxer en blanc.
Aquesta vegada només definireu un punt final, que és el que s'utilitza per determinar el tipus de flor. Aquest punt final crida IrisModel.predict species(), que es va declarar a la secció anterior, per dur a terme la predicció.
El tipus de sol·licitud és l'altre gran canvi. Per transmetre paràmetres en JSON en lloc d'URL, es recomana que utilitzeu POST quan feu servir màquina d'aprenentatge API.
La frase anterior pot haver sonat a galimat si sou a científic de dades, però això està bé. Per dissenyar i desplegar models, no cal ser necessàriament un expert en sol·licituds HTTP i API REST.
Les tasques per a ml model.py són poques i senzilles:
- Heu d'importar el següent del fitxer jaymlmodel.py creat anteriorment: uvicorn, FastAPI, IrisModel i IrisSpecies.
- Creeu instàncies de FastAPI i IrisModel.
- Declara una funció a https://127.0.0.1:8000/predict per fer prediccions.
- El mètode IrisModel.predict species() rep un objecte del tipus IrisSpecies, el transforma en un diccionari i després el retorna. Els rendiments són la classe esperada i la probabilitat prevista.
- Utilitzeu uvicorn per executar l'API.
Un cop més, aquí teniu el codi complet del fitxer juntament amb els seus comentaris:
Això és tot el que has de fer. En el següent pas, provem l'API.
Prova de l'API
Torneu a introduir la línia següent al terminal per executar l'API: uvicorn ml_model:app –reload
Així és com apareix la pàgina de documentació:
Així que això és tot per avui. A la part posterior a això, concloem.
Conclusió
Avui, heu après què és FastAPI i com utilitzar-lo, utilitzant tant un exemple simple d'API com un exemple senzill d'aprenentatge automàtic. També heu après a crear i veure la documentació de l'API, així com a provar-la.
Això és molt per a una sola peça, així que no us estranyeu si calen unes quantes lectures per entendre's correctament.
Feliç codificació.
Deixa un comentari