Yksi skenaarion osa on koneoppimismallin luominen. Sen on oltava käyttökelpoinen todellisessa maailmassa ja kuluttajien ja kehittäjien saatavilla.
Yksinkertaisin ja suosituin tapa ottaa käyttöön koneoppimismalleja on liittää ne REST-sovellusliittymään.
Suositun FastAPI-kirjaston avulla saavutamme juuri sen tänään.
Mutta mikä on FastAPI?
FastAPI Python -verkkokehys luotiin alusta alkaen hyödyntämään nykyaikaisia Python-ominaisuuksia.
Asynkronisessa, samanaikaisessa viestinnässä asiakkaiden kanssa se noudattaa ASGI-standardia, mutta pystyy myös käyttämään WSGI:tä.
Päätepisteet ja reitit voivat molemmat käyttää asynkronointitoimintoja. Lisäksi FastAPI mahdollistaa verkkosovellusten tuottavan luomisen tyyppivihjeellisellä, puhtaalla ja nykyaikaisella Python-koodilla.
FastAPI:n pääkäyttötapaus on, kuten nimestä voi päätellä, API-päätepisteiden luominen.
OpenAPI-standardin käyttäminen, joka sisältää interaktiivisen Swagger-käyttöliittymän, tai Python-sanakirjatietojen tarjoaminen JSON-muodossa ovat molemmat yksinkertaisia tapoja saavuttaa tämä. FastAPI ei kuitenkaan ole vain API:lle.
Sitä voidaan käyttää tavallisten verkkosivujen tarjoamiseen Jinja2-mallimoottorilla ja WebSocketsia hyödyntävien sovellusten palvelemiseen sen lisäksi, mitä kaikkea verkkokehys voi tehdä.
Tässä artikkelissa kehitämme suoraviivaisen koneoppimismallin ja käytämme sitten FastAPI:tä sen käyttöönottamiseksi. Aloitetaanpa.
FastAPI:n asennus ja ensimmäisen API:n luominen
Ensin on asennettava kirjasto ja ASGI-palvelin; joko Uvuicorn tai Hypercorn toimii. Se toimii syöttämällä seuraava komento terminaaliin:
Nyt kun API on luotu, voit käyttää haluamaasi koodieditoria ja selata sitä. Aloita luomalla Python-skripti nimeltä ml_model.py. Voit antaa omallesi eri nimen, mutta tämän viestin vuoksi viittaan tähän tiedostoon nimellä ml_model.py.
Jos haluat luoda yksinkertaisen sovellusliittymän, jossa on kaksi päätepistettä, sinun on suoritettava seuraavat tehtävät:
- Tuo FastAPI- ja Uvicorn-kirjastot.
- Määritä FastAPI-luokan ilmentymä.
- Ilmoita ensimmäinen reitti, joka hakemistosivulla tuottaa selkeän JSON-objektin.
- Ilmoita toinen reitti, joka tarjoaa suoraviivaisen JSON-objektin mukautetulla viestillä. Nimiparametri on otettu suoraan URL-osoitteesta (esimerkiksi https://127.0.0.1:8000/Jay).
- Käytä Uvicornia API:n suorittamiseen.
Näiden viiden vaiheen toteuttaminen on esitetty seuraavassa koodibitissä eli. yksinkertaisen API:n luominen
Valmista! Aloitetaan API välittömästi. Suorita tämä avaamalla Terminal-ikkuna ml model.py-tiedoston vieressä. Kirjoita seuraavaksi seuraava:
Enter-näppäintä. Ennen kuin siirrymme eteenpäin, kumotaan tämä väite. Ensimmäinen sovellus käyttää Python-tiedoston nimeä yksin ilman laajennusta. Toisella sovelluksella on oltava sama nimi kuin FastAPI-instanssillasi.
Käyttämällä -reload-toimintoa kerrot API:lle, että haluat sen latautuvan automaattisesti uudelleen, kun tallennat tiedoston sen sijaan, että aloitat alusta.
Käynnistä nyt selain ja siirry osoitteeseen https://127.0.0.1:8000; tuloksen pitäisi näyttää seuraavalta:
Ymmärrät nyt kuinka luoda yksinkertainen API FastAPI:n avulla.
Koneoppimismallin rakentaminen ja koulutus
Keräämättä tai analysoimatta mitään tietoja, koulutamme vain yksinkertaisen mallin. Nämä eivät liity mallien käyttöön eivätkä ole olennaisia käsiteltävän aiheen kannalta.
Iris-tietosarjaan perustuva malli voidaan asentaa käyttämällä samaa neuroverkkomallien asennustapa.
Ja me teemme juuri sen: lataa Iris-tietojoukko ja kouluttaa mallia. Se ei tule olemaan yksinkertaista. Aloita luomalla tiedosto nimeltä jaysmlmodel.py.
Siinä teet seuraavat:
- Tuonti — Tarvitset pandat, scikit-RandomForecastClassifierin, learning pydanticin BaseModelin (syy selviää seuraavassa vaiheessa) ja joblibin mallien tallentamiseen ja lataamiseen.
- Ilmoita IrisSpecies-luokka, joka perii perusmallista. Tämä luokka sisältää vain kenttiä, joita tarvitaan yhden kukkalajin ennustamiseen (lisätietoja seuraavassa osiossa)
- Luo luokka. IrisModel on mallin koulutus- ja ennustustyökalu.
- Ilmoita menetelmä nimeltä _train model IrisModelissa. Sitä käytetään mallien kouluttamiseen Random Forests -tekniikalla. Koulutettu malli palautetaan menettelyllä.
- Ilmoita ennustettu lajitoiminto IrisModelin sisällä. Sitä käytetään ennustamiseen perustuen 4 syöttötekijään (kukkamittaukset). Algoritmi palauttaa sekä ennusteen (kukkalaji) että ennusteen todennäköisyyden.
- Muuta IrisModelin konstruktoria niin, että se lataa Iris-tietojoukon ja kouluttaa mallin, jos se puuttuu kansiosta. Tämä ratkaisee uusien mallien toistuvan koulutuksen ongelman. Joblib-kirjastoa käytetään mallien lataamiseen ja tallentamiseen.
Tässä koko koodi:
Toivon, että yllä oleva luettelo ja kommentit tekivät sen helposti ymmärrettävän, vaikka luotavaa koodia olikin melkoinen määrä. Nyt kun tämä malli on kehitetty, julkaistaan sen ennustusominaisuudet yli a REST API.
Täydellisen REST API:n rakentaminen
Palaa ml_model.py-tiedostoon ja tyhjennä kaikki tiedot. Kattilalevy on olennaisesti sama kuin aiemmin, mutta meidän pitäisi aloittaa alusta tyhjällä tiedostolla.
Tällä kertaa määrität vain yhden päätepisteen, jota käytetään kukkatyypin määrittämiseen. Tämä päätepiste kutsuu IrisModel.predict species(), joka ilmoitettiin edellisessä osassa, suorittamaan ennusteen.
Pyyntötyyppi on toinen suuri muutos. Jotta parametrit voidaan lähettää JSON-muodossa URL-osoitteen sijaan, on suositeltavaa käyttää POST-testiä, kun käytät koneoppiminen API.
Yllä oleva lause on saattanut kuulostaa hölynpölyltä, jos olet a tietojen tutkija, mutta ei hätää. Mallien suunnittelua ja käyttöönottoa varten ei välttämättä tarvitse olla HTTP-pyyntöjen ja REST-sovellusliittymien asiantuntija.
Ml model.py:n tehtäviä on vähän ja ne ovat yksinkertaisia:
- Sinun on tuotava seuraavat tiedostot aiemmin luodusta jaymlmodel.py-tiedostosta: uvicorn, FastAPI, IrisModel ja IrisSpecies.
- Luo FastAPI- ja IrisModel-esiintymiä.
- Ilmoita funktio osoitteessa https://127.0.0.1:8000/predict tehdäksesi ennusteita.
- IrisModel.predict species()-metodi vastaanottaa IrisSpecies-tyypin objektin, muuntaa sen sanakirjaksi ja palauttaa sen sitten. Tuotot ovat odotettua luokkaa ja ennustettua todennäköisyyttä.
- Käytä uvicornia API:n suorittamiseen.
Jälleen kerran, tässä on koko tiedoston koodi kommenteineen:
Se on kaikki mitä sinun tarvitsee tehdä. Seuraavassa vaiheessa testataan API.
Testataan sovellusliittymää
Suorita API kirjoittamalla seuraava rivi uudelleen terminaaliin: uvicorn ml_model:app –reload
Dokumentaatiosivu näyttää tältä:
Siinä se tälle päivälle. Päätetään tämän jälkeisessä osassa.
Yhteenveto
Tänään opit, mitä FastAPI on ja miten sitä käytetään, käyttämällä sekä yksinkertaista API-esimerkkiä että yksinkertaista koneoppimisesimerkkiä. Olet myös oppinut luomaan ja tarkastelemaan API-dokumentaatiota sekä testaamaan sitä.
Se on paljon yhdelle kappaleelle, joten älä ihmettele, jos sen ymmärtäminen vaatii muutaman lukemisen.
Hyvää koodausta.
Jätä vastaus