Unu aspekto de la scenaro kreas maŝinlernmodelon. Ĝi devas esti uzebla en la reala mondo kaj disponebla por konsumantoj kaj programistoj.
La plej simpla kaj plej populara maniero deploji maŝinlernajn modelojn estas enfermi ilin en REST-API.
Kun populara biblioteko nomata FastAPI, ĝuste tion ni atingos hodiaŭ.
Sed, kio estas FastAPI?
La FastAPI Python-retkadro estis kreita de la grundo por utiligi nuntempajn Python-kapablojn.
Por nesinkrona, samtempa komunikado kun klientoj, ĝi aliĝas al la ASGI-normo, dum ĝi ankaŭ kapablas uzi WSGI.
Finpunktoj kaj itineroj povas ambaŭ utiligi nesinkronajn funkciojn. Aldone, FastAPI ebligas la produktivan kreadon de TTT-aplikoj en tip-sugestita, pura, nuntempa Python-kodo.
La ĉefa uzokazo de FastAPI estas, kiel la nomo sugestas, krei API-finpunktojn.
Uzi la OpenAPI-normon, kiu inkluzivas interagan Swagger UI, aŭ provizi Python-vortarajn datumojn kiel JSON estas ambaŭ simplaj manieroj atingi tion. Tamen, FastAPI ne estas nur por APIoj.
Ĝi povas esti uzata por oferti normajn retpaĝojn per la ŝablona motoro Jinja2 kaj por servi aplikaĵojn uzante WebSockets, krom preskaŭ ĉio alia, kiun retkadro povas fari.
En ĉi tiu artikolo, ni disvolvos simplan maŝinlerndan modelon kaj poste uzos FastAPI por deploji ĝin. Ni komencu.
Instalado de FastAPI kaj kreado de la unua API
Unue necesas instali la bibliotekon kaj ASGI-servilon; aŭ Uvuicorn aŭ Hypercorn funkcios. Ĝi funkcias per enigo de la sekva komando en la Terminalon:
Nun kiam la API estis kreita, vi povas uzi vian preferatan kodon redaktilon kaj trarigardi ĝin. Kreu Python-skripton nomatan ml_model.py por komenci. Vi bonvenas doni al via malsama nomo, sed pro ĉi tiu afiŝo, mi nomos ĉi tiun dosieron ml_model.py.
Por krei simplan API kun du finpunktoj, vi devas plenumi la sekvajn taskojn:
- Importu la bibliotekojn FastAPI kaj Uvicorn.
- Agordu FastAPI-klasan petskribon.
- Deklaru la unuan itineron, kiu, sur la indeksa paĝo, produktas simplan JSON-objekton.
- Deklaru la duan itineron, kiu provizas simplan JSON-objekton kun personigita mesaĝo. La nomo parametro estas prenita rekte de la URL (ekzemple, https://127.0.0.1:8000/Jay).
- Uzu Uvicorn por ruli la API.
Efektivigo de ĉi tiuj kvin etapoj estas montrita en la sekva kodo te. kreante simplan API
Ĉio farita! Ni lanĉu nian API tuj. Malfermu Terminalan fenestron apud la ml model.py dosiero por plenumi ĉi tion. Poste, enigu la jenon:
la Enigu klavon. Antaŭ ol daŭrigi, ni malkonfirmu ĉi tiun aserton. La unua aplikaĵo uzas la Python-dosiernomon sole, sen la etendaĵo. La dua programo devas havi la saman nomon kiel via FastAPI-instanco.
Uzante -reload, vi diras al la API, ke vi volas, ke ĝi aŭtomate reŝargu kiam vi konservas la dosieron anstataŭ komenci de nulo.
Nun lanĉu retumilon kaj navigu al https://127.0.0.1:8000; la rezulto devus aperi jene:
Vi nun komprenas kiel krei simplan API per FastAPI.
Konstruado kaj trejnado de la Maŝinlernado-modelo
Sen kolekti aŭ analizi ajnajn datumojn, ni nur trejnados simplan modelon. Tiuj estas senrilataj al la deplojo de modeloj kaj ne estas esencaj al la temo ĉe mano.
Modelo bazita sur la Iris-datumserio povas esti instalita uzante la saman Neŭra reto instala metodo.
Kaj ni faros ĝuste tion: elŝutu la Irisa datumaro kaj trejni la modelon. Tio ne estos simpla. Por komenci, faru dosieron nomitan jaysmlmodel.py.
En ĝi, vi faros la jenon:
- Importadoj — Vi bezonos pandojn, scikit-RandomForecastClassifier, lernu la Bazmodelon de pydantic (vi malkovros kial en la sekva paŝo), kaj joblib por stoki kaj ŝargi modelojn.
- Deklaru klason IrisSpecies kiu heredas de la baza modelo. Ĉi tiu klaso enhavas nur kampojn necesajn por prognozi ununuran florspecion (pli pri tio en la sekva sekcio)
- Kreu klason. IrisModel estas modela trejnado kaj prognozilo.
- Deklaru metodon nomitan _train-modelo ene de IrisModel. Ĝi kutimas trejni modelojn uzante la Hazarbarajn teknikojn. La trejnita modelo estas resendita per la proceduro.
- Deklaru antaŭviditan speciofunkcion ene de IrisModel. Ĝi estas uzata por prognozi surbaze de 4 enigfaktoroj (flormezuradoj). Kaj la prognozo (florspecio) kaj la prognozoprobablo estas resenditaj per la algoritmo.
- Ŝanĝu la konstruktilon en IrisModel por ke ĝi ŝarĝu la Iris-datumaron kaj trejnu la modelon se ĝi mankas el la dosierujo. Ĉi tio solvas la problemon de ree trejnado de novaj modeloj. La joblib-biblioteko estas utiligita por modelo-ŝarĝado kaj ŝparado.
Jen la tuta kodo:
Mi esperas, ke la ĉi-supra listo kaj la komentoj faciligis la komprenon kvankam ĉi tio estis konsiderinda kvanto da kodo por krei. Nun kiam ĉi tiu modelo estis evoluigita, ni publikigu ĝiajn antaŭdirajn kapablojn super a REST-API.
Konstruante plenan REST API
Reiru al la dosiero ml_model.py kaj purigu ĉiujn datumojn. La kaldrono estos esence la sama kiel kion vi havis antaŭe, sed ni devus rekomenci kun malplena dosiero.
Vi difinos nur unu finpunkton ĉi-foje, kiu estas tiu uzata por determini la tipon de floro. IrisModel.predict species(), kiu estis deklarita en la antaŭa sekcio, estas vokita de ĉi tiu finpunkto por efektivigi la antaŭdiron.
La peta tipo estas la alia granda ŝanĝo. Por transdoni parametrojn en JSON anstataŭ URL, oni rekomendas ke vi uzu POST kiam vi uzas maŝinlernado APIoj.
La supra frazo eble sonis kiel babelo se vi estas a datuma sciencisto, sed tio estas en ordo. Por desegni kaj deploji modelojn, oni ne nepre bezonas esti fakulo pri HTTP-petoj kaj REST-APIoj.
La taskoj por ml model.py estas malmultaj kaj simplaj:
- Vi devas importi la jenajn el la antaŭe kreita jaymlmodel.py dosiero: uvicorn, FastAPI, IrisModel kaj IrisSpecies.
- Kreu ekzemplojn de FastAPI kaj IrisModel.
- Deklaru funkcion ĉe https://127.0.0.1:8000/predict por fari antaŭdirojn.
- La metodo IrisModel.predict species() ricevas objekton de tipo IrisSpecies, transformas ĝin al vortaro, kaj poste resendas ĝin. Revenoj estas la atendata klaso kaj antaŭvidita probableco.
- Uzu uvicorn por ekzekuti la API.
Denove, jen la kodo de la tuta dosiero kune kun ĝiaj komentoj:
Tio estas ĉio, kion vi bezonas fari. En la sekva paŝo, ni provu la API.
Testante la API
Reenigu la sekvan linion en la Terminalon por ekzekuti la API: uvicorn ml_model:app –reload
Jen kiel aperas la dokumenta paĝo:
Do jen ĝi por hodiaŭ. En la parto post ĉi tio, ni konkludu.
konkludo
Hodiaŭ, vi lernis kio estas FastAPI kaj kiel uzi ĝin, uzante kaj simplan API-ekzemplon kaj simplan maŝinlernadon. Vi ankaŭ lernis kiel krei kaj vidi API-dokumentadon, kaj ankaŭ kiel testi ĝin.
Tio estas multe por unuopa peco, do ne miru se necesas kelkaj legaĵoj por ĝuste kompreni.
Feliĉa kodigo.
Lasi Respondon