Ien aspekt fan it senario is it meitsjen fan in masine-learmodel. It moat brûkber wêze yn 'e echte wrâld en beskikber foar konsuminten en ûntwikkelders.
De ienfâldichste en populêrste manier om masine-learmodellen yn te setten is om se yn te sluten yn in REST API.
Mei in populêre bibleteek neamd FastAPI, dat is krekt wat wy hjoed sille berikke.
Mar, wat is FastAPI?
It FastAPI Python-webkader is fan 'e grûn ôf makke om te profitearjen fan hjoeddeistige Python-mooglikheden.
Foar asynchrone, tagelyk kommunikaasje mei kliïnten, hâldt it him oan 'e ASGI-standert, wylst it ek by steat is om WSGI te brûken.
Einpunten en rûtes kinne beide asyngronisaasjefunksjes brûke. Derneist makket FastAPI it produktive oanmeitsjen fan webapps mooglik yn type-oantsjutte, skjinne, hjoeddeistige Python-koade.
It haadgebrûk fan FastAPI is, lykas de namme al fermoeden docht, it meitsjen fan API-einpunten.
It brûken fan de OpenAPI-standert, dy't in ynteraktive Swagger UI omfettet, of it leverjen fan Python-wurdboekgegevens as JSON binne beide ienfâldige manieren om dit te berikken. FastAPI is lykwols net allinich foar API's.
It kin brûkt wurde om standert websiden oan te bieden mei de Jinja2-sjabloanmotor en om apps te tsjinjen mei WebSockets, neist sawat alles wat in webramt kin dwaan.
Yn dit artikel sille wy in ienfâldich model foar masine learen ûntwikkelje en dan FastAPI brûke om it yn te setten. Litte wy begjinne.
Ynstallaasje fan FastAPI en oanmeitsjen fan de earste API
It ynstallearjen fan de bibleteek en in ASGI-tsjinner is earst nedich; itsij Uvuicorn of Hypercorn sil wurkje. It wurket troch it folgjende kommando yn te fieren yn it terminal:
No't de API is oanmakke, kinne jo jo foarkar koade-bewurker brûke en der troch blêdzje. Meitsje in Python-skript mei de namme ml_model.py om te begjinnen. Jo binne wolkom om josels in oare namme te jaan, mar om 'e wille fan dizze post sil ik dizze triem ferwize as ml_model.py.
Om in ienfâldige API te meitsjen mei twa einpunten, moatte jo de folgjende taken foltôgje:
- Ymportearje de FastAPI en Uvicorn bibleteken.
- Stel in FastAPI klasse eksimplaar op.
- Ferklearje de earste rûte, dy't op 'e yndeksside in ienfâldich JSON-objekt produsearret.
- Ferklearje de twadde rûte, dy't in ienfâldich JSON-objekt leveret mei in oanpast berjocht. De nammeparameter wurdt direkt fan 'e URL nommen (bygelyks https://127.0.0.1:8000/Jay).
- Brûk Uvicorn om de API út te fieren.
It útfieren fan dizze fiif stadia wurdt werjûn yn it folgjende bit fan koade ie. it meitsjen fan in ienfâldige API
Alles klear! Litte wy ús API fuortendaliks starte. Iepenje in terminalfinster neist it ml model.py-bestân om dit te berikken. Fier dan it folgjende yn:
de Enter kaai. Foardat wy fierder geane, litte wy dizze bewearing debunk. De earste app makket allinich gebrûk fan de Python-bestânnamme, sûnder de útwreiding. De twadde app moat deselde namme hawwe as jo FastAPI-eksimplaar.
Troch -reload te brûken, fertelle jo de API dat jo wolle dat it automatysk opnij laden as jo it bestân bewarje ynstee fan fanôf it begjin te begjinnen.
Start no in browser en navigearje nei https://127.0.0.1:8000; it resultaat moat as folget ferskine:
Jo begripe no hoe't jo in ienfâldige API kinne meitsje mei FastAPI.
Bouwe en training fan it Machine Learning-model
Sûnder gegevens te sammeljen of te analysearjen, sille wy gewoan in ienfâldich model traine. Dizze binne net relatearre oan de ynset fan modellen en binne net essensjeel foar it ûnderwerp oan 'e hân.
In model basearre op de Iris-dataset kin ynstalleare wurde mei deselde neuronale netwurk ynstallaasje metoade.
En wy sille dwaan krekt dat: download de Iris dataset en traine it model. Dat sil net ienfâldich wêze. Om te begjinnen, meitsje in bestân mei de namme jaysmlmodel.py.
Dêryn sille jo it folgjende dwaan:
- Ymporten - Jo sille panda's, scikit-RandomForecastClassifier nedich hawwe, it BaseModel fan pydantic fan lear (jo sille ûntdekke wêrom yn 'e folgjende stap), en joblib foar it opslaan en laden fan modellen.
- Ferklearje in IrisSpecies-klasse dy't erft fan it basismodel. Dizze klasse befettet allinich fjilden dy't nedich binne om ien blomsoarte te foarsizzen (mear dêroer yn 'e folgjende paragraaf)
- Meitsje in klasse. IrisModel is in modeltrainings- en foarsizzingsark.
- Ferklearje in metoade neamd _train model binnen IrisModel. It wurdt brûkt om modellen te trenen mei de Random Forests-technyk. It oplaat model wurdt weromjûn troch de proseduere.
- Ferklearje in foarsein soarte funksje binnen IrisModel. It wurdt brûkt om te foarsizzen basearre op 4 ynfierfaktoaren (blommjittingen). Sawol de foarsizzing (blomsoarten) as de foarsizzingskâns wurde weromjûn troch it algoritme.
- Feroarje de konstruktor yn IrisModel sadat it de Iris-dataset laadt en it model traint as it ûntbrekt yn 'e map. Dit lost it probleem op fan it werheljen fan nije modellen. De joblib-bibleteek wurdt brûkt foar it laden en bewarjen fan modellen.
Hjir is de hiele koade:
Ik hoopje dat de boppesteande list en de opmerkingen it maklik makken te begripen, ek al wie dit in grutte hoemannichte koade om te meitsjen. No't dit model is ûntwikkele, litte wy syn foarsizzingsmooglikheden publisearje oer a REST API.
It bouwen fan in folsleine REST API
Gean werom nei it ml_model.py-bestân en wiskje alle gegevens. De boilerplate sil yn wêzen itselde wêze as wat jo earder hiene, mar wy moatte opnij begjinne mei in lege bestân.
Jo sille dizze kear mar ien einpunt definiearje, dat is dejinge dy't wurdt brûkt om it type blom te bepalen. IrisModel.predict species(), dat waard ferklearre yn de foargeande paragraaf, wurdt neamd troch dit einpunt foar in útfiere de foarsizzing.
It fersyktype is de oare grutte feroaring. Om parameters yn JSON te ferstjoeren ynstee fan URL, wurdt it oanrikkemandearre dat jo POST brûke by it brûken masine learen APIs.
De boppesteande sin kin hawwe klonk as gibberish as jo binne in gegevens wittenskipper, mar dat is goed. Om modellen te ûntwerpen en yn te setten, hoecht men net needsaaklik in ekspert te wêzen op HTTP-oanfragen en REST API's.
De taken foar ml model.py binne in pear en ienfâldich:
- Jo moatte it folgjende ymportearje út it earder oanmakke jaymlmodel.py-bestân: uvicorn, FastAPI, IrisModel, en IrisSpecies.
- Meitsje eksimplaren fan FastAPI en IrisModel.
- Ferklearje in funksje op https://127.0.0.1:8000/predict om foarsizzingen te meitsjen.
- De metoade IrisModel.predict species() ûntfangt in objekt fan it type IrisSpecies, transformearret it yn in wurdboek en jout it dan werom. Returns binne de ferwachte klasse en foarsein kâns.
- Brûk uvicorn om de API út te fieren.
Nochris, hjir is de hiele koade fan it bestân tegearre mei syn opmerkingen:
Dat is alles wat jo hoege te dwaan. Litte wy yn 'e folgjende stap de API testen.
Testje de API
Fier de folgjende rigel opnij yn yn 'e terminal om de API út te fieren: uvicorn ml_model: app -reload
Dit is hoe't de dokumintaasjeside ferskynt:
Dus dat is it foar hjoed. Yn it diel nei dit, litte wy konkludearje.
Konklúzje
Tsjintwurdich hawwe jo leard wat FastAPI is en hoe't jo it kinne brûke, mei sawol in ienfâldich API-foarbyld as in ienfâldich foarbyld fan masine-learen. Jo hawwe ek leard hoe't jo API-dokumintaasje oanmeitsje en besjen, lykas hoe't jo it kinne testen.
Dat is in soad foar ien stik, dus wês net fernuvere as it in pear lêzingen duorret om goed te begripen.
Lokkich kodearring.
Leave a Reply