Modele de găzduire a modelelor în SageMaker: Cele mai bune practici în testarea și actualizarea modelelor pe SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Modele de găzduire a modelelor în SageMaker: cele mai bune practici în testarea și actualizarea modelelor pe SageMaker

Amazon SageMaker este un serviciu complet gestionat care oferă dezvoltatorilor și cercetătorilor de date capacitatea de a construi, antrena și implementa rapid modele de învățare automată (ML). Cu SageMaker, vă puteți implementa modelele ML pe punctele finale găzduite și puteți obține rezultate de inferență în timp real. Puteți vizualiza cu ușurință valorile de performanță pentru punctele dvs. finale în Amazon CloudWatch, scala automat punctele finale pe baza traficului și actualizați-vă modelele în producție fără a pierde disponibilitatea. SageMaker oferă o mare varietate de opțiuni pentru a implementa modele ML pentru inferență în oricare dintre următoarele moduri, în funcție de cazul dvs. de utilizare:

  • Pentru predicții sincrone care trebuie difuzate în ordinea milisecundelor, utilizați SageMaker inferență în timp real
  • Pentru sarcinile de lucru care au perioade de inactivitate între accesele de trafic și care pot tolera pornirile la rece, utilizați Inferență fără server
  • Pentru solicitări cu încărcături mari de până la 1 GB, timpi lungi de procesare (până la 15 minute) și cerințe de latență în timp aproape real (de la secunde la minute), utilizați SageMaker Inferență asincronă
  • Pentru a obține predicții pentru un întreg set de date, utilizați SageMaker transformarea lotului

Inferența în timp real este ideală pentru sarcinile de lucru de inferență în care aveți cerințe în timp real, interactive și cu latență scăzută. Implementați modelul dvs. în serviciile de găzduire SageMaker și obțineți un punct final care poate fi utilizat pentru inferență. Aceste puncte finale sunt susținute de o infrastructură și suport complet gestionate scalare automată. Puteți îmbunătăți eficiența și costurile combinând mai multe modele într-un singur punct final folosind puncte finale multi-model or puncte finale cu mai multe containere.

Există anumite cazuri de utilizare în care doriți să implementați mai multe variante ale aceluiași model în producție pentru a le evalua performanța, a măsura îmbunătățirile sau a rula teste A/B. În astfel de cazuri, punctele finale cu mai multe variante SageMaker sunt utile deoarece vă permit să implementați mai multe variante de producție ale unui model la același punct final SageMaker.

În această postare, discutăm punctele finale cu mai multe variante SageMaker și cele mai bune practici pentru optimizare.

Compararea opțiunilor de inferență în timp real SageMaker

Următoarea diagramă oferă o imagine de ansamblu rapidă a opțiunilor de inferență în timp real cu SageMaker.

Un punct final cu un singur model vă permite să implementați un model pe un container găzduit pe instanțe dedicate sau fără server pentru o latență scăzută și un randament ridicat. Puteți crea un model și recupera a Imagine suportată de SageMaker pentru cadre populare, cum ar fi TensorFlow, PyTorch, Scikit-learn și multe altele. Dacă lucrați cu un cadru personalizat pentru modelul dvs., puteți, de asemenea aduceți-vă propriul recipient care vă instalează dependențele.

SageMaker acceptă, de asemenea, opțiuni mai avansate, cum ar fi punctele finale cu mai multe modele (MME) și punctele finale cu mai multe containere (MCE). MME-urile sunt utile atunci când aveți de-a face cu sute până la zeci de mii de modele și în care nu trebuie să implementați fiecare model ca punct final individual. MME-urile vă permit să găzduiți mai multe modele într-un mod rentabil, scalabil în același punct final, folosind un container de servire partajat găzduit pe o instanță. Infrastructura de bază (container și instanță) rămâne aceeași, dar modelele sunt încărcate și descărcate dinamic dintr-o locație comună S3, în funcție de utilizare și de cantitatea de memorie disponibilă pe endpoint. Aplicația dvs. trebuie pur și simplu să includă un apel API cu modelul țintă către acest punct final pentru a obține o inferență cu latență scăzută și debit mare. În loc să plătiți pentru un punct final separat pentru fiecare model, puteți găzdui multe modele la prețul unui singur punct final.

MCE-urile vă permit să rulați până la 15 containere ML diferite pe un singur punct final și să le invocați independent. Puteți construi aceste containere ML pe diferite stive de servire (cum ar fi cadru ML, server model și algoritm), pentru a fi rulate pe același punct final pentru economii de costuri. Puteți coase recipientele împreună într-un conductă de inferență în serie sau invocați containerul în mod independent. Acest lucru poate fi ideal atunci când aveți mai multe modele ML diferite care au modele de trafic diferite și nevoi similare de resurse. Exemplele de utilizare a MCE includ, dar nu se limitează la, următoarele:

  • Modele de găzduire în diferite cadre (cum ar fi TensorFlow, PyTorch și Scikit-learn) care nu au suficient trafic pentru a satura întreaga capacitate a unei instanțe
  • Găzduire modele din același cadru cu algoritmi ML diferiți (cum ar fi recomandări, prognoză sau clasificare) și funcții de gestionare
  • Comparații ale arhitecturilor similare care rulează pe diferite versiuni de cadru (cum ar fi TensorFlow 1.x vs. TensorFlow 2.x) pentru scenarii precum testarea A/B

Punctele finale multivariante (MVE) SageMaker vă permit să testați mai multe modele sau versiuni de model în spatele aceluiași punct final folosind variante de producție. Fiecare variantă de producție identifică un model ML și resursele implementate pentru găzduirea modelului, cum ar fi containerul de servire și instanța.

Prezentare generală a punctelor finale cu mai multe variante SageMaker

În fluxurile de lucru ML de producție, oamenii de știință de date și inginerii ML perfecționează modelele printr-o varietate de metode, cum ar fi recalificarea bazată pe deriva de date/model/concept, reglarea hiperparametrilor, selecția caracteristicilor, selecția cadrului și multe altele. Efectuarea testării A/B între un model nou și un model vechi cu trafic de producție poate fi un pas final eficient în procesul de validare pentru un model nou. În testarea A/B, testați diferite variante ale modelelor dvs. și comparați performanța fiecărei variante una față de cealaltă. Apoi alegeți modelul cu cele mai bune performanțe pentru a înlocui modelul anterior cu o versiune nouă care oferă performanțe mai bune decât versiunea anterioară. Folosind variante de producție, puteți testa aceste modele ML și diferite versiuni de model în spatele aceluiași punct final. Puteți antrena aceste modele ML utilizând diferite seturi de date, diferiți algoritmi și cadre ML; implementați-le în diferite tipuri de instanțe; sau orice combinație a acestor opțiuni. Echilibratorul de sarcină conectat la punctul final SageMaker oferă posibilitatea de a distribui cererile de invocare în mai multe variante de producție. De exemplu, puteți distribui traficul între variantele de producție specificând distribuția traficului pentru fiecare variantă sau puteți invoca o anumită variantă direct pentru fiecare solicitare.

De asemenea, puteți configura politica de scalare automată pentru a vă scala automat variantele în funcție de valori, cum ar fi solicitările pe secundă.

Următoarea diagramă ilustrează modul în care funcționează MVE mai detaliat.

Punct final cu mai multe variante SageMaker

Implementarea unui MVE este, de asemenea, foarte simplă. Tot ce trebuie să faceți este să definiți obiecte model cu imaginea și datele modelului folosind create_model construiți din SageMaker Python SDK și definiți configurațiile punctelor finale folosind production_variant constructe pentru a crea variante de producție, fiecare cu propriul model și cerințe de resurse diferite (tipul și numărul de instanțe). Acest lucru vă permite să testați și modele pe diferite tipuri de instanțe. Pentru implementare, utilizați endpoint_from_production_variant construcție pentru a crea punctul final.

În timpul creării punctului final, SageMaker furnizează instanța de găzduire specificată în setările punctului final și descarcă modelul și containerul de inferență specificate de varianta de producție în instanța de găzduire. Dacă un răspuns de succes este returnat după pornirea containerului și efectuarea unei verificări de sănătate cu un ping, un mesaj care indică faptul că crearea punctului final este finalizată este trimis utilizatorului. Vezi următorul cod:

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

În exemplul precedent, am creat două variante, fiecare cu propriul model diferit (acestea ar putea avea, de asemenea, tipuri și număr de instanțe diferite). Am stabilit un initial_weight de 1 pentru ambele variante: aceasta înseamnă că 50% din solicitările noastre se adresează Variant1, iar restul de 50% la Variant2. Suma ponderilor din ambele variante este 2 și fiecare variantă are o atribuire de pondere de 1. Aceasta înseamnă că fiecare variantă primește 50% din traficul total.

Invocarea punctului final este similară cu construcția comună SageMaker invoke_endpoint; puteți apela punctul final direct cu datele ca sarcină utilă:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker emite valori precum Latency și Invocations pentru fiecare variantă din CloudWatch. Pentru o listă completă de valori pe care le emite SageMaker, consultați Monitorizați Amazon SageMaker cu Amazon CloudWatch. Puteți interoga CloudWatch pentru a obține numărul de invocări per variantă, pentru a vedea cum invocările sunt împărțite între variante în mod implicit.

Pentru a invoca o anumită versiune a modelului, specificați o variantă ca TargetVariant în apelul la invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Puteți evalua performanța fiecărei variante de producție examinând valori precum acuratețea, precizia, rechemarea, scorul F1 și caracteristica/aria de funcționare a receptorului sub curbă pentru fiecare variantă folosind Monitor de model Amazon SageMaker. Puteți decide apoi să creșteți traficul către cel mai bun model actualizând ponderile atribuite fiecărei variante prin apel Actualizați EndpointWeightsAndCapacities. Acest lucru modifică distribuția traficului către variantele dvs. de producție fără a necesita actualizări la punctul final. Deci, în loc de 50% din trafic din configurația inițială, transferăm 75% din trafic către Variant2 prin atribuirea de noi ponderi fiecărei variante folosind UpdateEndpointWeightsAndCapacities. Consultați următorul cod:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Când ești mulțumit de performanța unei variante, poți direcționa 100% din trafic către varianta respectivă. De exemplu, puteți seta greutatea pentru Variant1 la 0 iar greutatea pt Variant2 la 1. SageMaker trimite apoi 100% din toate cererile de inferență către Variant2. Puteți apoi să vă actualizați în siguranță punctul final și să îl ștergeți Variant1 de la punctul final. De asemenea, puteți continua să testați modele noi în producție adăugând noi variante la punctul final. De asemenea, puteți configura aceste puncte finale pentru a scala automat în funcție de traficul pe care îl primesc punctele finale.

Avantajele punctelor finale cu mai multe variante

SageMaker MVE vă permit să faceți următoarele:

  • Implementați și testați mai multe variante ale unui model folosind același punct final SageMaker. Acest lucru este util pentru testarea variațiilor unui model în producție. De exemplu, să presupunem că ați implementat un model în producție. Puteți testa o variantă a modelului direcționând o cantitate mică de trafic, să zicem 5%, către noul model.
  • Evaluați performanța modelului în producție fără a întrerupe traficul prin monitorizarea valorilor operaționale pentru fiecare variantă în CloudWatch.
  • Actualizați modelele în producție fără a pierde disponibilitatea. Puteți modifica un punct final fără a scoate din funcțiune modelele care sunt deja implementate în producție. De exemplu, puteți adăuga noi variante de model, puteți actualiza configurațiile instanțelor de calcul ML ale variantelor de model existente sau puteți modifica distribuția traficului între variantele de model. Pentru mai multe informații, vezi UpdateEndpoint și Actualizați EndpointWeightsAndCapacities.

Provocări la utilizarea punctelor finale cu mai multe variante

SageMaker MVE vin cu următoarele provocări:

  • Efort de testare a încărcăturii – Trebuie să depuneți o cantitate suficientă de efort și resurse pentru testarea și compararea matricei modelului pentru fiecare variantă. Pentru ca un test A/B să fie considerat reușit, trebuie să efectuați o analiză statistică a valorilor adunate din test pentru a determina dacă există un rezultat semnificativ statistic. Ar putea deveni dificil să minimizezi explorarea variantelor cu performanțe slabe. Ați putea folosi banditul cu mai multe brate tehnică de optimizare pentru a evita trimiterea de trafic către experimente care nu funcționează și pentru a optimiza performanța pe măsură ce testați. Pentru testarea încărcăturii, puteți, de asemenea, să explorați Recomandator de inferențe Amazon SageMaker pentru a efectua benchmark-uri extinse bazate pe cerințele de producție pentru latență și debit, modele de trafic personalizate și instanțe (până la 10) pe care le selectați.
  • Cuplare strânsă între varianta modelului și punctul final – Ar putea deveni dificil în funcție de frecvența de implementare a modelului, deoarece punctul final poate ajunge în updating starea fiecărei variante de producție în curs de actualizare. SageMaker acceptă și balustrade de desfășurare, pe care îl puteți folosi pentru a trece cu ușurință de la modelul actual în producție la unul nou într-un mod controlat. Această opțiune introduce canar și liniar moduri de schimbare a traficului, astfel încât să puteți avea un control granular asupra deplasării traficului de la modelul actual la cel nou pe parcursul actualizării. Cu măsuri de siguranță încorporate, cum ar fi derularea automată, puteți detecta problemele din timp și puteți lua automat măsuri corective înainte ca acestea să provoace un impact semnificativ asupra producției.

Cele mai bune practici pentru punctele finale cu mai multe variante

Când găzduiți modele folosind SageMaker MVE, luați în considerare următoarele:

  • SageMaker este excelent pentru testarea modelelor noi, deoarece le puteți implementa cu ușurință într-un mediu de testare A/B și plătiți doar pentru ceea ce utilizați. Sunteți taxat pe oră de instanță consumată pentru fiecare instanță în timp ce punctul final rulează. Când ați terminat cu testele și nu mai folosiți endpoint-ul sau variantele în mod extensiv, ar trebui să îl ștergeți pentru a economisi costuri. Îl puteți recrea oricând când aveți nevoie din nou, deoarece modelul este stocat Serviciul Amazon de stocare simplă (Amazon S3).
  • Ar trebui să utilizați cel mai optim tip și dimensiune de instanță pentru a implementa modele. SageMaker oferă în prezent Instanțele de calcul ML pe diverse familii de instanţă. O instanță de punct final rulează tot timpul (în timp ce instanța este în serviciu). Prin urmare, selectarea tipului potrivit de instanță poate avea un impact semnificativ asupra costului total și a performanței modelelor ML. Testare de sarcină este cea mai bună practică pentru a determina tipul de instanță adecvat și dimensiunea flotei, cu sau fără scalare automată pentru punctul final live pentru a evita supraprovizionarea și plata suplimentară pentru capacitatea de care nu aveți nevoie.
  • Puteți monitoriza performanța modelului și utilizarea resurselor în CloudWatch. Puteți configura o ProductionVariant să utilizeze Scalare automată a aplicației. Pentru a specifica valorile și valorile țintă pentru o politică de scalare, configurați o politică de scalare de urmărire țintă. Puteți utiliza fie o valoare predefinită, fie o valoare personalizată. Pentru mai multe informații despre sintaxa de configurare a politicii, consultați TargetTrackingScalingPolicyConfiguration. Pentru informații despre configurarea scalării automate, consultați Scalați automat modelele Amazon SageMaker. Pentru a defini rapid o politică de scalare a urmăririi țintei pentru o variantă, puteți alege o anumită măsură CloudWatch și puteți seta valori de prag. De exemplu, utilizați metric SageMakerVariantInvocationsPerInstance pentru a monitoriza numărul mediu de ori pe minut în care fiecare instanță pentru o variantă este invocată sau pentru a utiliza metrica CPUUtilization pentru a monitoriza suma de lucru gestionată de un CPU. Următorul exemplu folosește SageMakerVariantInvocationsPerInstance valoare predefinită pentru a ajusta numărul de instanțe variante, astfel încât fiecare instanță să aibă un InvocationsPerInstance metrica de 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Modificarea sau ștergerea artefactelor modelului sau modificarea codului de inferență după implementarea unui model produce rezultate imprevizibile. Înainte de a implementa modele în producție, este o bună practică să verificați dacă modelul de găzduire în modul local are succes după depanarea suficientă a fragmentelor de cod de inferență (cum ar fi model_fn, input_fn, predict_fn, și output_fn) în mediul de dezvoltare locală, cum ar fi o instanță de notebook SageMaker sau un server local. Dacă trebuie să modificați sau să ștergeți artefactele modelului sau să modificați codul de inferență, modificați punctul final prin furnizarea unei noi configurații a punctului final. După ce furnizați noua configurație a punctului final, puteți modifica sau șterge artefactele modelului corespunzătoare configurației veche a punctului final.
  • Puteți utiliza SageMaker transformarea lotului pentru a testa variante de producție. Transformarea în lot este ideală pentru a obține inferențe din seturi de date mari. Puteți crea un job de transformare separat pentru fiecare variantă nouă de model și puteți utiliza un set de date de validare pentru a testa. Pentru fiecare lucrare de transformare, specificați un nume unic de model și o locație în Amazon S3 pentru fișierul de ieșire. Pentru a analiza rezultatele, utilizați jurnalele și valorile conductei de inferență.

Concluzie

SageMaker vă permite să testați cu ușurință A/B modele ML în producție, rulând mai multe variante de producție pe un punct final. Puteți utiliza capacitățile SageMaker pentru a testa modele care au fost antrenate folosind diferite seturi de date de antrenament, hiperparametri, algoritmi sau cadre ML; cum funcționează pe diferite tipuri de instanțe; sau o combinație a tuturor celor de mai sus. Puteți furniza distribuția traficului între variantele de pe un punct final, iar SageMaker împarte traficul de inferență în variante pe baza distribuției specificate. Alternativ, dacă doriți să testați modele pentru anumite segmente de clienți, puteți specifica varianta care ar trebui să proceseze o cerere de inferență, furnizând TargetVariant antet, iar SageMaker va direcționa cererea către varianta pe care ați specificat-o. Pentru mai multe informații despre testarea A/B, consultați Actualizați în siguranță modelele în producție.

Referinte


Despre autori

Modele de găzduire a modelelor în SageMaker: Cele mai bune practici în testarea și actualizarea modelelor pe SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Deepali Rajale este manager de cont tehnic de specialitate AI/ML la Amazon Web Services. Lucrează cu clienții întreprinderi, oferind îndrumări tehnice pentru implementarea soluțiilor de învățare automată cu cele mai bune practici. În timpul liber, îi place drumețiile, filmele și petrecerea timpului cu familia și prietenii.

Modele de găzduire a modelelor în SageMaker: Cele mai bune practici în testarea și actualizarea modelelor pe SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dhawal Patel este arhitect principal de învățare automată la AWS. El a lucrat cu organizații, de la întreprinderi mari până la startup-uri mijlocii, pe probleme legate de calculul distribuit și inteligența artificială. El se concentrează pe învățarea profundă, inclusiv pe domeniile NLP și Computer Vision. El îi ajută pe clienți să obțină inferențe de model de înaltă performanță pe SageMaker.

Modele de găzduire a modelelor în SageMaker: Cele mai bune practici în testarea și actualizarea modelelor pe SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai. Saurabh Trikande este Senior Product Manager pentru Amazon SageMaker Inference. Este pasionat de lucrul cu clienții și este motivat de obiectivul democratizării învățării automate. El se concentrează pe provocările de bază legate de implementarea de aplicații ML complexe, modele ML multi-locatari, optimizări ale costurilor și de a face implementarea modelelor de învățare profundă mai accesibilă. În timpul liber, lui Saurabh îi place să facă drumeții, să învețe despre tehnologii inovatoare, să urmeze TechCrunch și să petreacă timpul cu familia sa.

Timestamp-ul:

Mai mult de la Învățare automată AWS