Pe măsură ce învățarea automată (ML) devine mainstream și câștigă o adoptare mai largă, aplicațiile de inferență bazate pe ML devin din ce în ce mai comune pentru a rezolva o serie de probleme complexe de afaceri. Soluția la aceste probleme complexe de afaceri necesită adesea utilizarea mai multor modele și pași ML. Această postare vă arată cum să creați și să găzduiți o aplicație ML cu containere personalizate activate Amazon SageMaker.
Oferte Amazon SageMaker algoritmi încorporați și SageMaker preconstruit imagini docker pentru implementarea modelului. Dar, dacă acestea nu se potrivesc nevoilor dvs., vă puteți aduce propriile containere (BYOC) pentru găzduire pe Amazon SageMaker.
Există mai multe cazuri de utilizare în care utilizatorii ar putea avea nevoie de BYOC pentru găzduire pe Amazon SageMaker.
- Cadre sau biblioteci ML personalizate: dacă intenționați să utilizați un cadru ML sau biblioteci care nu sunt acceptate de algoritmi încorporați Amazon SageMaker sau containere pre-construite, atunci va trebui să creați un container personalizat.
- Modele specializate: pentru anumite domenii sau industrii, este posibil să aveți nevoie de arhitecturi de model specifice sau pași de preprocesare personalizați care nu sunt disponibili în ofertele încorporate Amazon SageMaker.
- Algoritmi proprietari: dacă v-ați dezvoltat propriii algoritmi proprietari, atunci veți avea nevoie de un container personalizat pentru a-i implementa pe Amazon SageMaker.
- Conducte complexe de inferență: dacă fluxul de lucru de inferență ML implică o logică de afaceri personalizată - o serie de pași complexi care trebuie executați într-o anumită ordine - atunci BYOC vă poate ajuta să gestionați și să orchestrați acești pași mai eficient.
Prezentare generală a soluțiilor
În această soluție, arătăm cum să găzduim o aplicație de inferență serială ML pe Amazon SageMaker cu puncte finale în timp real, folosind două containere de inferență personalizate cu cele mai recente scikit-learn
și xgboost
pachete.
Primul container folosește a scikit-learn
model pentru a transforma datele brute în coloane caracteristice. Se aplică StandardScaler pentru coloanele numerice și OneHotEncoder la cele categorice.
Al doilea container găzduiește un pre-antrenat XGboost
model (adică, predictor). Modelul predictor acceptă predicțiile de intrare și ieșire prezentate.
În cele din urmă, implementăm caracterizator și prezicător într-o conductă de inferență în serie către un punct final în timp real Amazon SageMaker.
Iată câteva considerații diferite cu privire la motivul pentru care este posibil să doriți să aveți containere separate în aplicația dvs. de inferență.
- Decuplare – Diferiți pași ai conductei au un scop clar definit și trebuie să fie rulați pe containere separate din cauza dependențelor implicate. Acest lucru ajută, de asemenea, să mențină conducta bine structurată.
- cadrele – Diverse etape ale conductei utilizează cadre specifice potrivite pentru scop (cum ar fi scikit sau Spark ML) și, prin urmare, trebuie să fie rulate pe containere separate.
- Izolarea resurselor – Diverse etape ale conductei au cerințe diferite de consum de resurse și, prin urmare, trebuie să fie rulate pe containere separate pentru mai multă flexibilitate și control.
- Întreținere și upgrade-uri – Din punct de vedere operațional, acest lucru promovează izolarea funcțională și puteți continua să actualizați sau să modificați pașii individuali mult mai ușor, fără a afecta alte modele.
În plus, construirea locală a containerelor individuale ajută la procesul iterativ de dezvoltare și testare cu instrumentele preferate și medii de dezvoltare integrate (IDE). Odată ce containerele sunt gata, le puteți utiliza implementarea în cloud-ul AWS pentru inferență folosind punctele finale Amazon SageMaker.
Implementarea completă, inclusiv fragmentele de cod, este disponibilă în acest depozit Github aici.
Cerințe preliminare
Pe măsură ce testăm mai întâi aceste containere personalizate la nivel local, vom avea nevoie de docker desktop instalat pe computerul dvs. local. Ar trebui să fiți familiarizați cu construirea de containere docker.
De asemenea, veți avea nevoie de un cont AWS cu acces la Amazon SageMaker, Amazon ECR și Amazon S3 pentru a testa această aplicație de la capăt la capăt.
Asigurați-vă că aveți cea mai recentă versiune a Boto3
și pachetele Amazon SageMaker Python instalate:
Soluție pasională
Construiți un container personalizat cu caracteristici
Pentru a construi primul container, containerul featurizer, antrenăm a scikit-learn
model pentru a procesa caracteristici brute în scoică abalone set de date. Scriptul de preprocesare folosește SimpleImputer pentru gestionarea valorilor lipsă, StandardScaler pentru normalizarea coloanelor numerice și OneHotEncoder pentru transformarea coloanelor categorice. După montarea transformatorului, salvăm modelul joblib format. Apoi comprimăm și încărcăm acest artefact model salvat într-un serviciu Amazon Simple Storage (Amazon S3) găleată.
Iată un exemplu de fragment de cod care demonstrează acest lucru. A se referi la featurizer.ipynb pentru implementare completă:
Apoi, pentru a crea un container de inferență personalizat pentru modelul featurizer, construim o imagine Docker cu pachete nginx, gunicorn, flask, împreună cu alte dependențe necesare pentru modelul featurizer.
Nginx, gunicorn și aplicația Flask vor servi drept model de stivă de servire pe punctele finale în timp real Amazon SageMaker.
Când aducem containere personalizate pentru găzduire pe Amazon SageMaker, trebuie să ne asigurăm că scriptul de inferență îndeplinește următoarele sarcini după ce a fost lansat în interiorul containerului:
- Încărcare model: Script de inferență (
preprocessing.py
) ar trebui să se refere la/opt/ml/model
director pentru a încărca modelul în container. Artefactele modelului din Amazon S3 vor fi descărcate și montate pe container la cale/opt/ml/model
. - Variabile de mediu: Pentru a transmite variabile de mediu personalizate containerului, trebuie să le specificați în timpul Model etapa de creare sau în timpul Punct final crearea dintr-un loc de muncă de formare.
- Cerințe API: Scriptul Inference trebuie să le implementeze pe ambele
/ping
și/invocations
rute ca aplicație Flask. The/ping
API-ul este folosit pentru verificări de sănătate, în timp ce/invocations
API gestionează solicitările de inferență. - Logare: Jurnalele de ieșire din scriptul de inferență trebuie scrise la ieșirea standard (stdout) și eroare standard (stderr) fluxuri. Aceste jurnale sunt apoi transmise în flux Amazon CloudWatch de Amazon SageMaker.
Iată un fragment din preprocessing.py
care arată implementarea /ping
și /invocations
.
A se referi la preprocesare.py sub folderul featurizer pentru implementare completă.
Creați o imagine Docker cu caracteristici și stivă de servire a modelelor
Acum să construim un Dockerfile folosind o imagine de bază personalizată și să instalăm dependențele necesare.
Pentru aceasta, folosim python:3.9-slim-buster
ca imagine de bază. Puteți modifica aceasta orice altă imagine de bază relevantă pentru cazul dvs. de utilizare.
Copiem apoi configurația nginx, fișierul gateway al serverului web al lui Gunicorn și scriptul de inferență în container. De asemenea, creăm un script python numit serve care lansează procesele nginx și gunicorn în fundal și setează scriptul de inferență (adică aplicația preprocessing.py Flask) ca punct de intrare pentru container.
Iată un fragment din Dockerfile pentru găzduirea modelului featurizer. Pentru implementarea completă consultați Dockerfile în caracterizator dosar.
Testați imaginea de inferență personalizată cu caracteristici la nivel local
Acum, construiți și testați containerul de inferență personalizat cu featurizer local, folosind Amazon Modul local SageMaker. Modul local este perfect pentru testarea scripturilor de procesare, antrenare și inferență fără a lansa lucrări pe Amazon SageMaker. După confirmarea rezultatelor testelor locale, puteți adapta cu ușurință scripturile de instruire și inferență pentru implementare pe Amazon SageMaker cu modificări minime.
Pentru a testa imaginea personalizată a caracteristicilor la nivel local, mai întâi creați imaginea folosind imaginea definită anterior Dockerfile. Apoi, lansați un container prin montarea directorului care conține modelul featurizer (preprocess.joblib
) la /opt/ml/model
directorul din interiorul containerului. În plus, mapați portul 8080 de la container la gazdă.
Odată lansat, puteți trimite cereri de inferență către http://localhost:8080/invocations.
Pentru a construi și a lansa containerul, deschideți un terminal și executați următoarele comenzi.
Rețineți că ar trebui să înlocuiți <IMAGE_NAME>
, după cum se arată în codul următor, cu numele imaginii containerului dvs.
Următoarea comandă presupune, de asemenea, că antrenat scikit-learn
model (preprocess.joblib
) este prezent sub un director numit models
.
După ce containerul este în funcțiune, putem testa atât /ping și /invocari trasee folosind comenzi curl.
Rulați comenzile de mai jos de pe un terminal
Când datele brute (netransformate) sunt trimise către http://localhost:8080/invocations, punctul final răspunde cu date transformate.
Ar trebui să vedeți un răspuns similar cu următorul:
Acum terminăm containerul care rulează, apoi etichetăm și împingem imaginea personalizată locală într-un registru privat Amazon Elastic Container (Amazon ECR) depozit.
Consultați următoarele comenzi pentru a vă conecta la Amazon ECR, care etichetează imaginea locală cu calea completă a imaginii Amazon ECR și apoi împinge imaginea către Amazon ECR. Asigurați-vă că înlocuiți region
și account
variabile care să se potrivească cu mediul dvs.
A se referi la creați un depozit și trimite o imagine către Amazon ECR Interfață de linie de comandă AWS (AWS CLI) pentru mai multe informații.
Pas optional
Opțional, puteți efectua un test live prin implementarea modelului featurizer la un punct final în timp real cu imaginea docker personalizată în Amazon ECR. A se referi la featurizer.ipynb notebook pentru implementarea completă a construcției, testării și transmiterii imaginii personalizate către Amazon ECR.
Amazon SageMaker inițializează punctul final de inferență și copiază artefactele modelului în /opt/ml/model
directorul din interiorul containerului. Vedea Cum încarcă SageMaker artefactele modelului dvs.
Construiți un container de predictori XGBoost personalizat
Pentru construirea containerului de inferență XGBoost, urmăm pași similari cu care am făcut-o în timpul construirii imaginii pentru containerul featurizer:
- Descărcați pre-instruit
XGBoost
model de la Amazon S3. - Creați
inference.py
script care încarcă preantrenatXGBoost
model, convertește datele de intrare transformate primite de la featurizer și le convertește înXGBoost.DMatrix
format, ruleazăpredict
pe booster și returnează predicții în format json. - Scripturi și fișiere de configurare care formează stiva de servire a modelului (de exemplu,
nginx.conf
,wsgi.py
, șiserve
rămân la fel și nu necesită modificare. - Noi folosim
Ubuntu:18.04
ca imagine de bază pentru fișierul Docker. Aceasta nu este o condiție prealabilă. Folosim imaginea de bază ubuntu pentru a demonstra că containerele pot fi construite cu orice imagine de bază. - Pașii pentru construirea imaginii docker a clientului, testarea imaginii la nivel local și transmiterea imaginii testate către Amazon ECR rămân aceleași ca înainte.
Pentru concizie, deoarece pașii sunt similari indicați anterior; cu toate acestea, arătăm doar codarea modificată în cele ce urmează.
În primul rând, inference.py
scenariu. Iată un fragment care arată implementarea /ping
și /invocations
. A se referi la deducere.py în temeiul prezicător folder pentru implementarea completă a acestui fișier.
Iată un fragment din fișierul Docker pentru găzduirea modelului de predictor. Pentru implementarea completă, consultați Dockerfile în dosarul predictor.
Apoi continuăm să construim, să testăm și să împingem această imagine de predictor personalizată într-un depozit privat în Amazon ECR. A se referi la predictor.ipynb notebook pentru implementarea completă a construirii, testarii și împingerii imaginii personalizate către Amazon ECR.
Implementați o conductă de inferență în serie
După ce am testat atât imaginile de caracteristică, cât și cele de predicție și le-am trimis la Amazon ECR, acum încărcăm artefactele modelului nostru într-o găleată Amazon S3.
Apoi, creăm două obiecte model: unul pentru featurizer
(De exemplu, preprocess.joblib
) și altele pentru predictor
(De exemplu, xgboost-model
) prin specificarea URI a imaginii personalizate pe care am construit-o mai devreme.
Iată un fragment care arată asta. A se referi la serial-inference-pipeline.ipynb pentru implementare completă.
Acum, pentru a implementa aceste containere în serie, mai întâi creăm un PipelineModel obiect și trece featurizer
model și predictor
model la un obiect listă Python în aceeași ordine.
Apoi, numim .deploy()
metoda pe PipelineModel specificând tipul instanței și numărul de instanțe.
În această etapă, Amazon SageMaker implementează conducta de inferență serială la un punct final în timp real. Așteptăm ca punctul final să fie InService
.
Acum putem testa punctul final prin trimiterea unor solicitări de inferență către acest punct final live.
A se referi la serial-inference-pipeline.ipynb pentru implementare completă.
A curăța
După ce ați terminat testarea, urmați instrucțiunile din secțiunea de curățare a notebook-ului pentru a șterge resursele furnizate în această postare pentru a evita taxele inutile. A se referi la Prețuri Amazon SageMaker pentru detalii privind costul instanțelor de inferență.
Concluzie
În această postare, am arătat cum putem construi și implementa o aplicație de inferență ML în serie folosind containere de inferență personalizate la punctele finale în timp real pe Amazon SageMaker.
Această soluție demonstrează modul în care clienții își pot aduce propriile containere personalizate pentru găzduire pe Amazon SageMaker într-un mod eficient din punct de vedere al costurilor. Cu opțiunea BYOC, clienții își pot construi și adapta rapid aplicațiile ML pentru a fi implementate pe Amazon SageMaker.
Vă încurajăm să încercați această soluție cu un set de date relevant pentru Indicatorii cheie de performanță (KPI) al afacerii dvs. Puteți consulta întreaga soluție în aceasta GitHub depozit.
Referinte
Despre autor
Praveen Chamarthi este un Senior AI/ML Specialist cu Amazon Web Services. Este pasionat de AI/ML și de toate lucrurile AWS. El îi ajută pe clienții din America să extindă, să inoveze și să opereze eficient sarcinile de lucru ML pe AWS. În timpul liber, lui Praveen îi place să citească și îi plac filmele SF.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/
- :are
- :este
- :nu
- :Unde
- $UP
- 08
- 09
- 1
- 10
- 100
- 11
- 13
- 14
- 150
- 16
- 17
- 20
- 200
- 2023
- 25
- 28
- 30
- 500
- 7
- 8
- 87
- 9
- a
- Despre Noi
- Accept
- acceptă
- acces
- în consecință
- Cont
- peste
- adapta
- În plus,
- Adoptare
- care afectează
- După
- AI / ML
- algoritmi
- TOATE
- de-a lungul
- de asemenea
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Americi
- an
- și
- Orice
- api
- aplicaţia
- aplicație
- aplicatii
- se aplică
- aprilie
- SUNT
- Mulțime
- AS
- presupune
- At
- disponibil
- evita
- AWS
- fundal
- de bază
- bazat
- BE
- devenire
- înainte
- fiind
- de mai jos
- corp
- rapel
- atât
- aduce
- Aducere
- construi
- Clădire
- construit
- construit-in
- Pachet
- afaceri
- dar
- by
- apel
- denumit
- CAN
- caz
- cazuri
- CAT
- sigur
- Schimbare
- si-a schimbat hainele;
- Modificări
- taxe
- verifica
- Verificări
- clar
- Cloud
- cod
- Codificare
- Coloană
- Coloane
- COM
- Comun
- complex
- calculator
- Configuraţie
- legat
- conexiune
- Considerații
- constant
- construi
- consum
- Recipient
- Containere
- conţinut
- conținut
- continua
- Control
- converti
- A costat
- ar putea
- crea
- Crearea
- creaţie
- scrisori de acreditare
- personalizat
- client
- clienţii care
- de date
- Data
- defini
- definit
- demonstra
- demonstrează
- dependențe
- implementa
- dislocate
- Implementarea
- desfășurarea
- implementează
- desktop
- detalii
- determinat
- dezvoltat
- Dezvoltare
- DICT
- FĂCUT
- diferit
- Docher
- domenii
- făcut
- Dont
- două
- în timpul
- e
- Mai devreme
- cu ușurință
- eficient
- altfel
- încuraja
- un capăt la altul
- Punct final
- asigura
- Întreg
- intrare
- Mediu inconjurator
- medii
- eroare
- etc
- exemplu
- Cu excepția
- excepție
- executat
- familiar
- Modă
- Favorite
- DESCRIERE
- puțini
- Fișier
- Fişiere
- First
- potrivi
- montaj
- Flexibilitate
- urma
- următor
- Pentru
- formă
- format
- găsit
- Cadru
- cadre
- din
- Complet
- funcţie
- funcțional
- câștig
- poartă
- obține
- GitHub
- GMT
- Merge
- manipula
- Mânere
- Manipularea
- Avea
- he
- Sănătate
- înălțime
- ajutor
- ajută
- lui
- gazdă
- găzduire
- Gazdele
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- i
- if
- imagine
- imagini
- punerea în aplicare a
- implementarea
- import
- in
- include
- Inclusiv
- tot mai mult
- Indicatorii
- individ
- industrii
- informații
- inhouse
- inova
- intrare
- în interiorul
- instala
- instalat
- instanță
- instrucțiuni
- integrate
- interfaţă
- în
- implicat
- izolare
- IT
- Loc de munca
- Locuri de munca
- jpg
- JSON
- A pastra
- Cheie
- Etichetă
- Ultimele
- lansa
- a lansat
- lansează
- lansare
- învăţare
- stânga
- Lungime
- biblioteci
- Linie
- Listă
- listat
- trăi
- încărca
- încărcare
- loturile
- local
- la nivel local
- logică
- Logare
- iubeste
- maşină
- masina de învățare
- Mainstream
- FACE
- Efectuarea
- administra
- manieră
- Hartă
- marca
- Meci
- Mai..
- metodă
- ar putea
- minim
- dispărut
- ML
- mod
- model
- Modele
- modifica
- mai mult
- Filme
- mult
- multiplu
- trebuie sa
- nume
- nume
- Nevoie
- nevoilor
- Nu.
- Nici unul
- caiet
- acum
- număr
- NumPy
- obiect
- obiecte
- of
- ofertele
- promoții
- de multe ori
- on
- dată
- ONE
- cele
- afară
- pe
- deschide
- funcionar
- operațional
- Opțiune
- or
- comandă
- OS
- Altele
- al nostru
- producție
- propriu
- ofertele
- panda
- parametrii
- special
- trece
- pasionat
- cale
- Perfect
- Efectua
- performanță
- efectuează
- conducte
- plan
- Plato
- Informații despre date Platon
- PlatoData
- "vă rog"
- Punct
- Post
- prezicere
- Predictii
- Predictor
- prezenta
- în prealabil
- privat
- probleme
- proces
- procese
- prelucrare
- procesor
- promovează
- proprietate
- scop
- Împinge
- împins
- împingerea
- Piton
- repede
- ridica
- gamă
- Crud
- Citeste
- gata
- în timp real
- primit
- trimite
- registru
- rămâne
- înlocui
- depozit
- solicita
- cereri de
- necesita
- necesar
- Cerinţe
- Necesită
- resursă
- Resurse
- răspuns
- rezultat
- REZULTATE
- reveni
- revenind
- Returnează
- Inel
- Traseul
- rute
- RÂND
- Alerga
- funcţionare
- ruleaza
- sagemaker
- acelaşi
- Economisiți
- salvate
- Scară
- Sci-Fi
- zgâria
- scenariu
- script-uri
- Al doilea
- Secțiune
- vedea
- trimite
- trimitere
- senior
- trimis
- distinct
- de serie
- serie
- servi
- serverul
- serviciu
- Servicii
- servire
- sesiune
- set
- Seturi
- câteva
- sex
- să
- Arăta
- a arătat
- indicat
- Emisiuni
- asemănător
- simplu
- fragment
- So
- soluţie
- REZOLVAREA
- unele
- ceva
- Scânteie
- specialist
- specific
- stivui
- Etapă
- standard
- punct de vedere
- Stare
- Pas
- paşi
- depozitare
- transmise în flux
- fluxuri
- Şir
- structurat
- Reușit
- astfel de
- soare
- Suportat
- De sprijin
- Sprijină
- TAG
- adaptate
- ia
- sarcini
- Terminal
- test
- testat
- Testarea
- teste
- acea
- lor
- Lor
- apoi
- Acolo.
- prin urmare
- Acestea
- lucruri
- acest
- timp
- la
- Unelte
- Tren
- dresat
- Pregătire
- Transforma
- transformat
- transformator
- transformatoare
- transformare
- încerca
- încercat
- Două
- tip
- Ubuntu
- în
- care stau la baza
- inutil
- upgrade-ul
- utilizabil
- utilizare
- carcasa de utilizare
- utilizat
- utilizatorii
- utilizări
- folosind
- Valori
- diverse
- variabil
- verificarea
- versiune
- aștepta
- vrea
- a fost
- we
- web
- server de web
- servicii web
- BINE
- care
- în timp ce
- de ce
- mai larg
- voi
- cu
- în
- fără
- flux de lucru
- de lucru
- scris
- X
- XGBoost
- Tu
- Ta
- zephyrnet