Datatieteilijöille koneoppimismallien (ML) siirtäminen konseptin todistamisesta tuotantoon on usein merkittävä haaste. Yksi suurimmista haasteista voi olla hyvin toimivan, paikallisesti koulutetun mallin käyttöönotto pilvessä johtopäätösten tekemiseksi ja muissa sovelluksissa käytettäväksi. Prosessin hallinta voi olla hankalaa, mutta oikean työkalun avulla voit vähentää tarvittavaa vaivaa merkittävästi.
Amazon SageMaker johtopäätös, joka julkaistiin yleisesti huhtikuussa 2022, helpottaa ML-mallien käyttöönottoa tuotannossa, jotta voit tehdä ennusteita mittakaavassa. Se tarjoaa laajan valikoiman ML-infrastruktuuria ja mallin käyttöönottovaihtoehtoja, jotka auttavat vastaamaan kaikenlaisiin ML-johtopäätöstarpeisiin. Voit käyttää SageMaker Serverless Inference -päätepisteet työkuormille, joissa on joutojaksoja liikennehuippujen välillä ja jotka kestävät kylmäkäynnistystä. Päätepisteet skaalautuvat automaattisesti liikenteen perusteella ja poistavat palvelinten valintaan ja hallintaan liittyvän erottumattoman raskaan työn. Lisäksi voit käyttää AWS Lambda suoraan esitelläksesi mallisi ja ottaaksesi käyttöön ML-sovelluksesi käyttämällä haluamaasi avoimen lähdekoodin kehystä, joka voi osoittautua joustavammaksi ja kustannustehokkaammaksi.
FastAPI on moderni, suorituskykyinen verkkokehys API:iden rakentamiseen Pythonilla. Se erottuu edukseen, kun on kyse palvelimettomien sovellusten kehittämisestä RESTful-mikropalveluilla ja käyttötapauksissa, jotka edellyttävät ML-päätelmiä laajassa mittakaavassa useilla toimialoilla. Sen helppous ja sisäänrakennetut toiminnot, kuten automaattinen API-dokumentaatio, tekevät siitä suositun valinnan ML-insinöörien keskuudessa tehokkaiden päättelysovellusliittymien käyttöönottamiseksi. Voit määrittää ja järjestää reitit käyttämällä FastAPI:n valmiita toimintoja. Voit skaalata ja käsitellä kasvavaa liiketoimintalogiikkaa tarpeen mukaan, testata paikallisesti ja isännöidä sitä Lambdassa ja paljastaa sen sitten yhden API-yhdyskäytävän kautta, jonka avulla voit tuo avoimen lähdekoodin verkkokehys Lambdaan ilman raskaita nostoja tai koodien muokkaamista.
Tämä viesti näyttää, kuinka voit helposti ottaa käyttöön ja suorittaa palvelimetonta ML-johtopäätöstä paljastamalla ML-mallisi päätepisteeksi FastAPI:n, Dockerin, Lambdan ja Amazon API -yhdyskäytävä. Näytämme myös, kuinka käyttöönotto automatisoidaan käyttämällä AWS Cloud Development Kit (AWS CDK).
Ratkaisun yleiskatsaus
Seuraava kaavio näyttää tässä viestissä käyttämämme ratkaisun arkkitehtuurin.
Edellytykset
Sinulla tulee olla seuraavat edellytykset:
- Python3 asennettu yhdessä
virtualenv
virtuaalisten ympäristöjen luomiseen ja hallintaan Pythonissa - aws-cdk v2 asennettuna järjestelmääsi, jotta voit käyttää AWS CDK CLI:tä
- Docker asennettuna ja käynnissä paikallisella koneellasi
Testaa, onko kaikki tarvittavat ohjelmistot asennettu:
- - AWS-komentoriviliitäntä (AWS CLI) tarvitaan. Kirjaudu tilillesi ja valitse alue, jossa haluat ottaa ratkaisun käyttöön.
- Tarkista Python-versiosi seuraavalla koodilla:
- Tarkista, onko
virtualenv
on asennettu virtuaalisten ympäristöjen luomiseen ja hallintaan Pythonissa. Tarkkaan ottaen tämä ei ole kova vaatimus, mutta se helpottaa elämääsi ja auttaa seuraamaan tätä viestiä helpommin. Käytä seuraavaa koodia: - Tarkista, onko cdk asennettu. Tätä käytetään ratkaisumme käyttöönotossa.
- Tarkista, onko Docker asennettu. Ratkaisumme tekee mallistasi saatavilla Docker-kuvan kautta Lambdalle. Tämän kuvan rakentamiseksi paikallisesti tarvitsemme Dockerin.
- Varmista, että Docker on käynnissä seuraavalla koodilla:
FastAPI-projektisi jäsentäminen AWS CDK:n avulla
Käytämme projektissamme seuraavaa hakemistorakennetta (jätämme huomioimatta jonkin AWS-CDK-koodin, joka on merkityksetön tämän viestin yhteydessä):
Hakemisto seuraa Pythonin AWS CDK -projektien suositeltu rakenne.
Tämän arkiston tärkein osa on fastapi_model_serving
hakemistosta. Se sisältää koodin, joka määrittää AWS CDK -pinon ja resurssit, joita aiotaan käyttää mallin palvelemiseen.
- fastapi_model_serving
hakemisto sisältää model_endpoint
alihakemisto, joka sisältää kaikki tarvittavat resurssit, jotka muodostavat palvelimettoman päätepisteemme, nimittäin Docker-tiedoston Lambdan käyttämän Docker-kuvan luomiseksi, Lambdan toimintokoodin, joka käyttää FastAPI:tä päättelypyyntöjen käsittelemiseen ja reitittämiseen oikeaan päätepisteeseen, sekä mallin. mallin artefakteja, jotka haluamme ottaa käyttöön. model_endpoint
sisältää myös seuraavan:
Docker
– Tämä alihakemisto sisältää seuraavat tiedot:Dockerfile
– Tätä käytetään Lambda-toiminnon kuvan rakentamiseen, jossa kaikki artefaktit (Lambda-toimintokoodi, malliartefaktit jne.) ovat oikeassa paikassa, jotta niitä voidaan käyttää ilman ongelmia.serving.api.tar.gz
– Tämä on tarball, joka sisältää kaikki ajonaikaisen kansion resurssit, joita tarvitaan Docker-kuvan rakentamiseen. Keskustelemme kuinka luodaan.tar.gz
tiedosto myöhemmin tässä viestissä.runtime
– Tämä alihakemisto sisältää seuraavat tiedot:serving_api
– Lambda-funktion koodi ja sen riippuvuudet, jotka on määritetty vaatimusten.txt-tiedostossa.custom_lambda_utils
– Tämä sisältää päättelykomentosarjan, joka lataa tarvittavat mallin artefaktit, jotta malli voidaan välittääserving_api
joka paljastaa sen sitten päätepisteeksi.
Lisäksi meillä on mallihakemisto, joka tarjoaa mallin kansiorakenteista ja tiedostoista, joissa voit määrittää mukautetut koodit ja API:t aiemmin käymämme esimerkin mukaisesti. Mallihakemisto sisältää valekoodin, jonka avulla voit luoda uusia Lambda-funktioita:
dummy
– Sisältää koodin, joka toteuttaa tavallisen Lambda-funktion rakenteen Python-ajoaikaa käyttäenapi
– Sisältää koodin, joka toteuttaa Lambda-funktion, joka kääri FastAPI-päätepisteen olemassa olevan API-yhdyskäytävän ympärille
Ota ratkaisu käyttöön
Oletusarvoisesti koodi otetaan käyttöön eu-west-1-alueella. Jos haluat muuttaa aluetta, voit muuttaa kontekstimuuttujaa DEPLOYMENT_REGION kohdassa cdk.json
tiedosto.
Muista kuitenkin, että ratkaisu yrittää ottaa käyttöön Lambda-toiminnon arm64-arkkitehtuurin päälle ja että tämä ominaisuus ei ehkä ole käytettävissä kaikilla alueilla. Tässä tapauksessa sinun on muutettava arkkitehtuuriparametria fastapi_model_serving_stack.py
tiedosto sekä Docker-tiedoston ensimmäinen rivi Docker-hakemistossa tämän ratkaisun isännöimiseksi x86-arkkitehtuurissa.
Ota ratkaisu käyttöön suorittamalla seuraavat vaiheet:
- Suorita seuraava komento kloonataksesi GitHub-arkiston:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Koska haluamme esitellä, että ratkaisu voi toimia paikallisesti koulutettujen malliartefaktien kanssa, tarjoamme malliesimerkin esiopetetusta artefaktista. DistilBERT malli Hugging Face -mallikeskuksessa kysymykseen vastaustehtävää vartenserving_api.tar.gz
tiedosto. Latausaika voi kestää noin 3–5 minuuttia. Laitetaan nyt ympäristö kuntoon. - Lataa valmiiksi koulutettu malli, joka otetaan käyttöön Hugging Face -mallikeskuksesta
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
hakemistosta. Se myös luo virtuaalisen ympäristön ja asentaa kaikki tarvittavat riippuvuudet. Sinun tarvitsee suorittaa tämä komento vain kerran:make prep
. Tämä komento voi kestää noin 5 minuuttia (riippuen Internetin kaistanleveydestä), koska sen on ladattava mallin artefaktit. - Pakkaa malliesineet a
.tar.gz
arkisto, jota käytetään AWS CDK -pinoon rakennetun Docker-kuvan sisällä. Sinun on suoritettava tämä koodi aina, kun teet muutoksia mallin artefakteihin tai itse sovellusliittymään, jotta käyttöpäätepisteesi viimeisin versio on aina pakattuna:make package_model
. Kaikki esineet ovat paikoillaan. Nyt voimme ottaa AWS CDK -pinon käyttöön AWS-tilillesi. - Suorita cdk bootstrap, jos se on ensimmäinen kerta, kun otat AWS CDK -sovelluksen käyttöön ympäristössä (tilin ja alueen yhdistelmä):
Tämä pino sisältää työkalupakin toimintaan tarvittavat resurssit. Pino sisältää esimerkiksi Amazon Simple Storage Service (Amazon S3) -ämpäri, jota käytetään mallien ja resurssien tallentamiseen käyttöönottoprosessin aikana.
Koska rakennamme Docker-otoksia paikallisesti tässä AWS CDK -asennuksessa, meidän on varmistettava, että Docker-daemon on käynnissä, ennen kuin voimme ottaa tämän pinon käyttöön AWS CDK CLI:n kautta.
- Voit tarkistaa, onko Docker-daemon käynnissä järjestelmässäsi, käyttämällä seuraavaa komentoa:
Jos et saa virheilmoitusta, sinun pitäisi olla valmis ottamaan ratkaisun käyttöön.
- Ota ratkaisu käyttöön seuraavalla komennolla:
Tämä vaihe voi kestää noin 5–10 minuuttia Docker-kuvan rakentamisen ja työntämisen vuoksi.
Ongelmien karttoittaminen
Jos olet Mac-käyttäjä, saatat kohdata virheen kirjautuessasi sisään Amazonin elastisten säiliörekisteri (Amazon ECR) Docker-kirjautumistunnuksella, kuten Error saving credentials ... not implemented
. Esimerkiksi:
Ennen kuin voit käyttää Lambdaa AWS CDK:n sisällä olevien Docker-säiliöiden päällä, sinun on ehkä muutettava ~/docker/config.json
tiedosto. Tarkemmin sanottuna sinun on ehkä muutettava credsStore-parametria ~/.docker/config.json
osxkeychainiin. Tämä ratkaisee Amazon ECR -kirjautumisongelmat Macissa.
Suorita reaaliaikainen päättely
Jälkeen AWS-pilven muodostuminen pino on otettu käyttöön onnistuneesti, siirry kohtaan Lähdöt pinon välilehti AWS CloudFormation -konsolissa ja avaa päätepisteen URL-osoite. Nyt mallimme on käytettävissä päätepisteen URL-osoitteen kautta ja olemme valmiita suorittamaan reaaliaikaisia päätelmiä.
Siirry URL-osoitteeseen nähdäksesi, näetkö "hello world" -viestin ja lisää /docs
osoitteeseen nähdäksesi, näetkö interaktiivisen swagger UI -sivun onnistuneesti. Saattaa olla kylmäkäynnistysaika, joten saatat joutua odottamaan tai päivittämään muutaman kerran.
Kun olet kirjautunut sisään FastAPI swagger UI -sivun aloitussivulle, voit suorittaa pääkäyttäjän /
kautta tai /question
.
alkaen /
, voit käyttää API:ta ja saada "hello world" -viestin.
alkaen /question
, voit ajaa API:n ja suorittaa ML-päätelmän mallille, jonka otimme käyttöön kysymykseen vastaustapauksessa. Käytämme esimerkiksi kysymystä Mikä on autoni väri nyt? ja konteksti on Autoni oli ennen sininen, mutta maalasin punaiseksi.
Kun valitset Suorittaa, annetun kontekstin perusteella malli vastaa kysymykseen vastauksella, kuten seuraavassa kuvakaappauksessa näkyy.
Vastauksen rungossa näet vastauksen mallin luottamuspisteineen. Voit myös kokeilla muita esimerkkejä tai upottaa API:n olemassa olevaan sovellukseesi.
Vaihtoehtoisesti voit suorittaa päättelyn koodin avulla. Tässä on yksi esimerkki kirjoitettu Pythonissa käyttäen requests
kirjasto:
Koodi tulostaa seuraavankaltaisen merkkijonon:
Jos olet kiinnostunut tietämään lisää generatiivisen tekoälyn ja suurten kielimallien käyttöönotosta AWS:ssä, tutustu tähän:
- Ota käyttöön Serverless Generative AI AWS Lambdassa OpenLLaMa:lla
- Ota käyttöön suuria kielimalleja AWS Inferentia2:ssa käyttämällä suuria mallien päättelysäilöjä
Puhdistaa
Suorita arkistosi juurihakemistossa seuraava koodi puhdistaaksesi resurssit:
Yhteenveto
Tässä viestissä esittelimme, kuinka voit käyttää Lambdaa koulutetun ML-mallin käyttöönottamiseksi käyttämällä haluamaasi verkkosovelluskehystä, kuten FastAPI. Olemme tarjonneet yksityiskohtaisen koodivaraston, jonka voit ottaa käyttöön, ja sinulla on edelleen mahdollisuus vaihtaa käsiteltäviin koulutettuihin artefakteihin. Suorituskyky voi riippua siitä, kuinka otat mallin käyttöön ja otat sen käyttöön.
Olet tervetullut kokeilemaan sitä itse, ja olemme innoissamme kuullessamme palautteesi!
Tietoja Tekijät
Tingyi Li on AWS:n Enterprise Solutions -arkkitehti Tukholmassa, Ruotsissa ja tukee pohjoismaisia asiakkaita. Hän mielellään auttaa asiakkaita pilvipalveluille optimoitujen infrastruktuuriratkaisujen arkkitehtuurissa, suunnittelussa ja kehittämisessä. Hän on erikoistunut tekoälyyn ja koneoppimiseen ja on kiinnostunut tarjoamaan asiakkaille älykkyyttä AI/ML-sovelluksissaan. Vapaa-ajallaan hän on myös osa-aikainen kuvittaja, joka kirjoittaa romaaneja ja soittaa pianoa.
Demir Catovic on koneoppimisinsinööri AWS:stä Zürichissä, Sveitsissä. Hän on tekemisissä asiakkaiden kanssa ja auttaa heitä toteuttamaan skaalautuvia ja täysin toimivia ML-sovelluksia. Hän on intohimoinen koneoppimissovellusten rakentamiseen ja tuotantoon asiakkaille ja on aina kiinnostunut tutkimaan uusia trendejä ja huipputeknologioita AI/ML-maailmassa.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. Autot / sähköautot, hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- BlockOffsets. Ympäristövastuun omistuksen nykyaikaistaminen. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :On
- :ei
- :missä
- $ YLÖS
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- pystyy
- Meistä
- saatavilla
- Tili
- poikki
- lisätä
- Lisäksi
- osoite
- AI
- AI / ML
- Kaikki
- mahdollistaa
- pitkin
- Myös
- aina
- Amazon
- Amazon Web Services
- keskuudessa
- an
- ja
- vastaus
- Kaikki
- api
- API
- sovelluksen
- Hakemus
- sovellukset
- huhtikuu
- arkkitehtuuri
- Archive
- OVAT
- noin
- AS
- Varat
- At
- automatisoida
- automaattisesti
- automaattisesti
- saatavissa
- pois
- AWS
- AWS-pilven muodostuminen
- AWS Lambda
- taustaosa
- kaistanleveys
- perustua
- BE
- koska
- ennen
- välillä
- sininen
- elin
- Bootstrap
- tuoda
- laaja
- rakentaa
- Rakentaminen
- rakennettu
- sisäänrakennettu
- liiketoiminta
- mutta
- by
- CAN
- auto
- tapaus
- tapauksissa
- haaste
- haasteet
- muuttaa
- Muutokset
- tarkastaa
- valinta
- Valita
- pilvi
- koodi
- koodit
- kylmä
- väri
- yhdistelmä
- tulee
- täydellinen
- käsite
- luottamus
- kytkeä
- liitäntä
- Console
- sisältää
- Kontti
- Kontit
- sisältää
- tausta
- korjata
- kustannustehokas
- voisi
- luoda
- luo
- Luominen
- Valtakirja
- Asiakkaat
- räätälöityjä
- leikkaamisreuna
- tiedot
- oletusarvo
- Riippuen
- sijoittaa
- käyttöön
- levityspinnalta
- käyttöönotto
- Malli
- yksityiskohtainen
- kehittämällä
- Kehitys
- suoraan
- pohtia
- Satamatyöläinen
- dokumentointi
- Dont
- download
- kaksi
- aikana
- Aikaisemmin
- helpottaa
- helpompaa
- helposti
- helppo
- vaivaa
- Upottaa
- valtuuttamisesta
- loppu
- päätepiste
- tarttuu
- insinööri
- Engineers
- varmistaa
- yritys
- ympäristö
- ympäristöissä
- virhe
- esimerkki
- Esimerkit
- innoissaan
- suorittaa
- olemassa
- poistuminen
- kokeilu
- tutkia
- Kasvot
- Ominaisuus
- harvat
- filee
- Asiakirjat
- Etunimi
- ensimmäistä kertaa
- Joustavuus
- joustava
- seurata
- jälkeen
- seuraa
- varten
- Puitteet
- alkaen
- toiminto
- toiminnallisuudet
- tehtävät
- portti
- yleensä
- generatiivinen
- Generatiivinen AI
- saada
- GitHub
- tietty
- Go
- menee
- Kasvava
- kahva
- Kova
- Olla
- he
- kuulla
- raskas
- raskas nosto
- auttaa
- auttaa
- auttaa
- hänen
- tätä
- korkea suorituskyky
- isäntä
- Miten
- Miten
- Kuitenkin
- HTML
- http
- HTTPS
- Napa
- i
- Idle
- if
- kuva
- kuvien
- toteuttaa
- työkoneet
- tärkeä
- in
- Muilla
- sisältää
- teollisuuden
- Infrastruktuuri
- sisällä
- asennetaan
- Älykkyys
- vuorovaikutteinen
- kiinnostunut
- Internet
- tulee
- käyttöön
- kysymykset
- IT
- SEN
- itse
- json
- Innokas
- tietäen
- lasku
- Kieli
- suuri
- myöhemmin
- oppiminen
- Kirjasto
- elämä
- nosto
- pitää
- linja
- kuormat
- paikallinen
- paikallisesti
- log
- hakkuu
- logiikka
- Kirjaudu sisään
- mac
- kone
- koneoppiminen
- tehty
- tärkein
- tehdä
- TEE
- hoitaa
- toimitusjohtaja
- Saattaa..
- Tavata
- viesti
- microservices
- ehkä
- mielessä
- minuuttia
- ML
- malli
- mallit
- Moderni
- lisää
- eniten
- liikkuvat
- moninkertainen
- täytyy
- my
- nimittäin
- välttämätön
- Tarve
- tarvitaan
- tarpeet
- Uusi
- nyt
- of
- usein
- on
- kerran
- ONE
- vain
- avata
- avoimen lähdekoodin
- toiminta
- Vaihtoehdot
- or
- tilata
- tavallinen
- Muut
- meidän
- ulos
- pakattu
- sivulla
- parametri
- osa
- Hyväksytty
- intohimoinen
- suorituskyky
- aikoja
- Paikka
- Platon
- Platonin tietotieto
- PlatonData
- soittaa
- Suosittu
- Kirje
- Ennusteet
- Suositut
- edellytyksiä
- lahjat
- prosessi
- tuotanto
- projekti
- hankkeet
- todiste
- todiste käsitteestä
- todistaa
- mikäli
- tarjoaa
- tarjoamalla
- Työnnä
- Python
- kysymys
- valmis
- reaaliaikainen
- punainen
- vähentää
- alue
- alueet
- säilytyspaikka
- pyynnöt
- tarvitaan
- vaatimus
- vaatimukset
- Esittelymateriaalit
- vastaus
- johtua
- säilyttää
- oikein
- juuri
- Reitti
- reitit
- ajaa
- juoksu
- sagemaker
- tallentaa
- skaalautuva
- Asteikko
- tutkijat
- laajuus
- pisteet
- nähdä
- valitsemalla
- valinta
- serverless
- servers
- palvelu
- Palvelut
- palvelevat
- setti
- hän
- shouldnt
- näyttää
- näyteikkuna
- esitetty
- Näytä
- merkittävä
- merkittävästi
- samankaltainen
- Yksinkertainen
- single
- So
- Tuotteemme
- ratkaisu
- Ratkaisumme
- Ratkaisee
- jonkin verran
- puhuminen
- erikoistunut
- erityisesti
- määritelty
- pino
- seisoo
- Alkaa
- alkaa
- Tila
- Vaihe
- Askeleet
- Levytila
- verkkokaupasta
- tallentamiseksi
- jono
- rakenne
- Onnistuneesti
- niin
- Tukea
- Ruotsi
- Sveitsi
- järjestelmä
- ottaa
- Tehtävä
- Technologies
- sapluuna
- malleja
- testi
- että
- -
- heidän
- Niitä
- sitten
- Siellä.
- ne
- tätä
- Kautta
- aika
- kertaa
- että
- työkalu
- ylin
- liikenne
- Juna
- koulutettu
- Trendit
- yrittää
- ui
- unix
- ajanmukainen
- URL
- käyttää
- käytetty
- käyttäjä
- käyttötarkoituksiin
- käyttämällä
- versio
- kautta
- Virtual
- odottaa
- haluta
- oli
- we
- verkko
- Web-sovellus
- verkkopalvelut
- tervetuloa
- HYVIN
- meni
- Mitä
- Mikä on
- kun
- aina kun
- onko
- joka
- KUKA
- tulee
- with
- ilman
- Referenssit
- maailman-
- kirjallinen
- Voit
- Sinun
- itse
- zephyrnet
- Zurich