Een aspek van die scenario is om 'n masjienleermodel te skep. Dit moet bruikbaar wees in die regte wêreld en beskikbaar wees vir verbruikers en ontwikkelaars.
Die eenvoudigste en gewildste manier om masjienleermodelle te ontplooi, is om dit in 'n REST API in te sluit.
Met 'n gewilde biblioteek genaamd FastAPI, is dit presies wat ons vandag sal bereik.
Maar, wat is FastAPI?
Die FastAPI Python-webraamwerk is van die grond af geskep om voordeel te trek uit kontemporêre Python-vermoëns.
Vir asynchrone, gelyktydige kommunikasie met kliënte, voldoen dit aan die ASGI-standaard, terwyl dit ook in staat is om WSGI te gebruik.
Eindpunte en roetes kan albei asinkroniseerfunksies gebruik. Boonop maak FastAPI die produktiewe skepping van webtoepassings moontlik in tikgemerkte, skoon, kontemporêre Python-kode.
FastAPI se hoofgebruiksgeval is, soos die naam aandui, die skep van API-eindpunte.
Die gebruik van die OpenAPI-standaard, wat 'n interaktiewe Swagger UI insluit, of die verskaffing van Python-woordeboekdata as JSON is albei eenvoudige maniere om dit te bereik. FastAPI is egter nie net vir API's nie.
Dit kan gebruik word om standaard webblaaie aan te bied met behulp van die Jinja2-sjabloonenjin en om toepassings te bedien wat WebSockets gebruik, bykomend tot feitlik alles anders wat 'n webraamwerk kan doen.
In hierdie artikel sal ons 'n eenvoudige masjienleermodel ontwikkel en dan FastAPI gebruik om dit te ontplooi. Laat ons begin.
Installering van FastAPI en skepping van die eerste API
Die installering van die biblioteek en 'n ASGI-bediener word eers vereis; óf Uvuicorn óf Hypercorn sal werk. Dit werk deur die volgende opdrag in die Terminal in te voer:
Noudat die API geskep is, kan jy jou voorkeurkode-redigeerder gebruik en daardeur blaai. Skep 'n Python-skrip genaamd ml_model.py om te begin. Jy is welkom om joune 'n ander naam te gee, maar ter wille van hierdie pos sal ek na hierdie lêer verwys as ml_model.py.
Om 'n eenvoudige API met twee eindpunte te skep, moet jy die volgende take voltooi:
- Voer die FastAPI- en Uvicorn-biblioteke in.
- Stel 'n FastAPI-klasinstansie op.
- Verklaar die eerste roete, wat op die indeksbladsy 'n eenvoudige JSON-voorwerp produseer.
- Verklaar die tweede roete, wat 'n eenvoudige JSON-voorwerp met 'n pasgemaakte boodskap bied. Die naamparameter word direk vanaf die URL geneem (byvoorbeeld https://127.0.0.1:8000/Jay).
- Gebruik Uvicorn om die API uit te voer.
Die implementering van hierdie vyf fases word in die volgende stukkie kode getoon, bv. die skep van 'n eenvoudige API
Alles klaar! Kom ons begin ons API onmiddellik. Maak 'n Terminal-venster langs die ml model.py-lêer oop om dit te bereik. Voer dan die volgende in:
die Enter-sleutel. Voordat ons verder gaan, laat ons hierdie bewering ontken. Die eerste toepassing maak gebruik van die Python-lêernaam alleen, sonder die uitbreiding. Die tweede toepassing moet dieselfde naam as jou FastAPI-instansie hê.
Deur -herlaai te gebruik, vertel jy die API dat jy wil hê dit moet outomaties herlaai wanneer jy die lêer stoor eerder as om van nuuts af te begin.
Begin nou 'n blaaier en navigeer na https://127.0.0.1:8000; die uitkoms moet soos volg lyk:
Jy verstaan nou hoe om 'n eenvoudige API met FastAPI te skep.
Bou en opleiding van die Masjienleer-model
Sonder om enige data te versamel of te ontleed, sal ons net 'n eenvoudige model oplei. Dit hou nie verband met die ontplooiing van modelle nie en is nie noodsaaklik vir die onderwerp ter sprake nie.
'n Model gebaseer op die Iris-datastel kan met dieselfde geïnstalleer word neurale netwerk installasie metode.
En ons sal net dit doen: laai die af Iris-datastel en lei die model op. Dit sal nie eenvoudig wees nie. Om te begin, maak 'n lêer met die naam jaysmlmodel.py.
Daarin sal jy die volgende doen:
- Invoere - Jy benodig pandas, scikit-RandomForecastClassifier, leer se pydantic se BaseModel (jy sal in die volgende stap ontdek hoekom), en joblib vir die berging en laai van modelle.
- Verklaar 'n IrisSpecies-klas wat van die basismodel erf. Hierdie klas bevat slegs velde wat nodig is om 'n enkele blomspesie te voorspel (meer daaroor in die volgende afdeling)
- Skep 'n klas. IrisModel is 'n model opleiding en voorspelling hulpmiddel.
- Verklaar 'n metode genaamd _train model binne IrisModel. Dit word gebruik om modelle op te lei deur die Random Forests-tegniek te gebruik. Die opgeleide model word deur die prosedure teruggestuur.
- Verklaar 'n voorspelde spesiefunksie binne IrisModel. Dit word gebruik om te voorspel gebaseer op 4 insetfaktore (blommetings). Beide die voorspelling (blomspesies) en die voorspellingswaarskynlikheid word deur die algoritme teruggestuur.
- Verander die konstruktor in IrisModel sodat dit die Iris-datastel laai en die model oplei as dit in die gids ontbreek. Dit los die probleem op om nuwe modelle herhaaldelik op te lei. Die joblib-biblioteek word gebruik vir modellaai en stoor.
Hier is die hele kode:
Ek hoop dat die bogenoemde lys en die opmerkings dit maklik gemaak het om te begryp, selfs al was dit 'n aansienlike hoeveelheid kode om te skep. Noudat hierdie model ontwikkel is, laat ons sy voorspellingsvermoëns oor a publiseer REST API.
Konstruksie van 'n volledige REST API
Keer terug na die ml_model.py-lêer en maak al die data skoon. Die boilerplate sal in wese dieselfde wees as wat jy voorheen gehad het, maar ons moet oor begin met 'n leë lêer.
Jy sal hierdie keer net een eindpunt definieer, wat die een is wat gebruik word om die tipe blom te bepaal. IrisModel.predict species(), wat in die voorafgaande afdeling verklaar is, word deur hierdie eindpunt geroep om die voorspelling uit te voer.
Die versoektipe is die ander groot verandering. Om parameters in JSON eerder as URL oor te dra, word dit aanbeveel dat jy POST gebruik wanneer jy dit gebruik machine learning APIs.
Die sin hierbo het dalk na brabbeltaal geklink as jy a data wetenskaplike, maar dit is in orde. Om modelle te ontwerp en te ontplooi, hoef 'n mens nie noodwendig 'n kenner van HTTP-versoeke en REST API's te wees nie.
Die take vir ml model.py is min en eenvoudig:
- Jy moet die volgende invoer vanaf die voorheen geskepde jaymlmodel.py-lêer: uvicorn, FastAPI, IrisModel en IrisSpecies.
- Skep gevalle van FastAPI en IrisModel.
- Verklaar 'n funksie by https://127.0.0.1:8000/voorspel om voorspellings te maak.
- Die IrisModel.predict species() metode ontvang 'n voorwerp van tipe IrisSpecies, transformeer dit na 'n woordeboek en gee dit dan terug. Opbrengste is die verwagte klas en voorspelde waarskynlikheid.
- Gebruik uvicorn om die API uit te voer.
Weereens, hier is die hele lêer se kode saam met sy opmerkings:
Dit is al wat jy hoef te doen. In die volgende stap, laat ons die API toets.
Toets die API
Voer die volgende reël weer in die terminaal in om die API uit te voer: uvicorn ml_model:app –herlaai
Dit is hoe die dokumentasiebladsy verskyn:
So dit is dit vir vandag. In die gedeelte hierna, kom ons sluit af.
Gevolgtrekking
Vandag het jy geleer wat FastAPI is en hoe om dit te gebruik, deur beide 'n eenvoudige API-voorbeeld en 'n eenvoudige masjienleervoorbeeld te gebruik. Jy het ook geleer hoe om API-dokumentasie te skep en te bekyk, asook hoe om dit te toets.
Dit is baie vir 'n enkele stuk, so moenie verbaas wees as dit 'n paar lesings verg om behoorlik te verstaan nie.
Gelukkige kodering.
Lewer Kommentaar