Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu testarea umbră Amazon SageMaker

Amazon SageMaker acum vă permite să comparați performanța unei noi versiuni a unui model de stivă de servire cu versiunea implementată în prezent înainte de lansarea completă a producției, folosind o practică de siguranță a implementării cunoscută sub numele de testarea în umbră. Testarea umbră vă poate ajuta să identificați potențialele erori de configurare și probleme de performanță înainte ca acestea să afecteze utilizatorii finali. Cu SageMaker, nu trebuie să investiți în construirea infrastructurii de testare umbră, permițându-vă să vă concentrați pe dezvoltarea modelului. SageMaker se ocupă de implementarea noii versiuni alături de versiunea actuală care deservește cererile de producție, direcționând o parte din solicitări către versiunea umbră. Apoi puteți compara performanța celor două versiuni folosind valori precum latența și rata de eroare. Acest lucru vă oferă o mai mare încredere că lansările de producție către punctele finale de inferență SageMaker nu vor provoca regresii de performanță și vă ajută să evitați întreruperile din cauza configurărilor greșite accidentale.

În această postare, demonstrăm această nouă capacitate SageMaker. Exemplul de notebook corespunzător este disponibil în acest GitHub depozit.

Prezentare generală a soluției

Infrastructura dvs. de difuzare a modelului constă din modelul de învățare automată (ML), containerul de difuzare sau instanța de calcul. Să luăm în considerare următoarele scenarii:

  • Vă gândiți să promovați un nou model care a fost validat offline în producție, dar doriți să evaluați valorile de performanță operațională, cum ar fi latența, rata de eroare și așa mai departe, înainte de a lua această decizie.
  • Luați în considerare modificări ale containerului infrastructurii de difuzare, cum ar fi corecțiile vulnerabilităților sau actualizarea la versiuni mai noi și doriți să evaluați impactul acestor modificări înainte de promovarea în producție.
  • Vă gândiți să vă schimbați instanța ML și doriți să evaluați modul în care ar performa noua instanță cu solicitările de inferență live.

Următoarea diagramă ilustrează arhitectura soluției noastre.

Pentru fiecare dintre aceste scenarii, selectați o variantă de producție cu care doriți să testați și SageMaker implementează automat noua variantă în modul umbră și direcționează către aceasta o copie a solicitărilor de inferență în timp real în același punct final. Numai răspunsurile variantei de producție sunt returnate aplicației apelante. Puteți alege să renunțați sau să înregistrați răspunsurile variantei umbră pentru comparare offline. Opțional, puteți monitoriza variantele printr-un tablou de bord încorporat, cu o comparație alăturată a valorilor de performanță. Puteți utiliza această capacitate fie prin intermediul API-urilor de actualizare a punctelor finale de inferență SageMaker, fie prin consola SageMaker.

Variantele umbră se bazează pe capacitatea variantei de producție în punctele finale de inferență SageMaker. Pentru a reitera, a varianta de productie constă din modelul ML, containerul de servire și instanța ML. Deoarece fiecare variantă este independentă de altele, puteți avea diferite modele, containere sau tipuri de instanțe în diferite variante. SageMaker vă permite să specificați politicile de scalare automată pentru fiecare variantă, astfel încât acestea să poată scala independent în funcție de încărcarea primită. SageMaker acceptă până la 10 variante de producție per punct final. Puteți fie să configurați o variantă pentru a primi o parte din traficul de intrare setând ponderi ale variantei, fie să specificați varianta țintă în cererea de intrare. Răspunsul din varianta de producție este transmis înapoi către invocator.

A varianta umbra (noua) are aceleași componente ca o variantă de producție. O porțiune a solicitărilor specificată de utilizator, cunoscută sub numele de procentul de eșantionare a traficului, este redirecționat către varianta umbră. Puteți alege să înregistrați răspunsul variantei umbră Serviciul Amazon de stocare simplă (Amazon S3) sau aruncați-l.

Rețineți că SageMaker acceptă maximum o variantă umbră per punct final. Pentru un punct final cu o variantă umbră, poate exista maximum o variantă de producție.

După ce ați configurat variantele de producție și umbră, puteți monitoriza metrici de invocare atât pentru variantele de producție, cât și pentru variantele umbră în Amazon CloudWatch în temeiul AWS/SageMaker spatiu de nume. Toate actualizările pentru punctul final SageMaker sunt orchestrate folosind implementări albastre/verzi și apar fără nicio pierdere a disponibilității. Punctele finale vor continua să răspundă la solicitările de producție pe măsură ce adăugați, modificați sau eliminați variante umbre.

Puteți utiliza această capacitate într-unul din două moduri:

  • Testare umbră gestionată folosind Consola SageMaker – Puteți folosi consola pentru o experiență ghidată pentru a gestiona călătoria de la capăt la cap a testării în umbră. Acest lucru vă permite să configurați teste umbre pentru o durată de timp predefinită, să monitorizați progresul printr-un tablou de bord live, să curățați după finalizare și să acționați asupra rezultatelor.
  • Testare umbră cu autoservire folosind API-urile SageMaker Inference – Dacă fluxul dvs. de lucru de implementare utilizează deja API-uri create/update/delete-endpoint, puteți continua să le utilizați pentru a gestiona Shadow Variants.

În secțiunile următoare, vom parcurge fiecare dintre aceste scenarii.

Scenariul 1 – Testare umbră gestionată folosind Consola SageMaker

Dacă doriți să alegeți SageMaker pentru a gestiona fluxul de lucru end-to-end de creare, gestionare și acționare asupra rezultatelor testelor umbră, luați în considerare utilizarea capacității testelor Shadow din secțiunea Inferență a Consolei SageMaker. După cum sa menționat mai devreme, acest lucru vă permite să configurați teste umbră pentru o durată de timp predefinită, să monitorizați progresul printr-un tablou de bord live, să prezentați opțiuni de curățare după finalizare și să acționați în funcție de rezultate. Pentru a afla mai multe, vă rugăm să vizitați testele umbră secțiune din documentația noastră pentru o prezentare pas cu pas a acestei capabilități.

Pre-rechizite

Modelele pentru producție și umbră trebuie create pe SageMaker. Vă rugăm să consultați CreateModel API aici.

Pasul 1 – Creați un test umbră

Navigați către deducție secțiunea din panoul de navigare din stânga al consolei SageMaker și apoi alegeți Teste umbră. Acest lucru vă va duce la un tablou de bord cu toate testele umbră programate, în curs de desfășurare și finalizate. Faceți clic pe 'creați un test umbră'. Introduceți un nume pentru test și alegeți următorul.

Aceasta vă va duce la pagina de setări pentru testul umbră. Puteți alege un rol IAM existent sau puteți crea unul care are AmazonSageMakerFullAccess Politica IAM atașată. Apoi, alegeți „Creați un nou punct final' și introduceți un nume (xgb-prod-shadow-1). Puteți adăuga o variantă de producție și o variantă umbră asociată cu acest punct final făcând clic pe „Adăuga' în secțiunea Variante. Puteți selecta modelele pe care le-ați creat în „Adăugați modelul" căsuță de dialog. Aceasta creează o producție sau o variantă. Opțional, puteți modifica tipul instanței și numărul asociat fiecărei variante.

Tot traficul merge către varianta de producție și răspunde solicitărilor de invocare. Puteți controla o parte a cererilor care este direcționată către varianta umbră prin modificarea Traffic Sampling Percentage.

Puteți controla durata testului de la o oră la 30 de zile. Dacă nu este specificat, valoarea implicită este de 7 zile. După această perioadă, testul este marcat ca finalizat. Dacă executați un test pe un punct final existent, acesta va fi revenit la starea anterioară începerii testului la finalizare.

Puteți captura opțional cererile și răspunsurile variantei Shadow folosind Captarea datelor Opțiuni. Dacă sunt lăsate nespecificate, răspunsurile variantei umbră sunt eliminate.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pasul 2 – Monitorizați un test de umbră

Puteți vizualiza lista de teste umbră navigând la Shadow Tests secțiunea de sub Inferență. Faceți clic pe testul de umbră creat în pasul anterior pentru a vedea detaliile unui test de umbră și pentru a-l monitoriza în timp ce acesta este în desfășurare sau după finalizarea acestuia.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Secțiunea Metrics oferă o comparație a valorilor cheie și oferă grafice suprapuse între variantele de producție și umbră, împreună cu statistici descriptive. Puteți compara valorile de invocare, cum ar fi ModelLatency și Invocation4xxErrors precum și valori ale instanțelor precum CPUUtilization și DiskUtilization.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pasul 3 – Promovați varianta Shadow la noua variantă de producție

După comparare, puteți alege fie să promovați varianta umbră ca noua variantă de producție, fie să eliminați varianta umbră. Pentru ambele opțiuni, selectați „Marcați finalizat' în partea de sus a paginii. Aceasta vă oferă o opțiune fie de a promova, fie de a elimina varianta umbră.

Dacă alegeți să promovați, veți fi direcționat către o pagină de implementare, unde puteți confirma setările variantei înainte de implementare. Înainte de implementare, vă recomandăm să dimensionați variantele umbră pentru a putea gestiona 100% din traficul de invocare. Dacă nu utilizați testarea umbră pentru a evalua tipuri sau dimensiuni ale instanțelor alternative, puteți utiliza opțiunea de alegere „păstrează setările variantei de producție. În caz contrar, puteți alege să „păstrează setările variantei de umbră. Dacă alegeți această opțiune, asigurați-vă că eșantionarea traficului este setată la 100%. Alternativ, puteți specifica tipul și numărul instanței dacă doriți să înlocuiți aceste setări.

Odată ce confirmați implementarea, SageMaker va iniția o actualizare a punctului final pentru a promova varianta umbră la noua variantă de producție. Ca și în cazul tuturor actualizărilor SageMaker, punctul final va fi în continuare operațional în timpul actualizării.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Scenariul 2: testare în umbră folosind API-urile de inferență SageMaker

Această secțiune acoperă modul de utilizare a API-urilor existente pentru crearea/actualizarea/ștergerea punctului final SageMaker pentru a implementa variante umbră.

Pentru acest exemplu, avem două modele XGBoost care reprezintă două versiuni diferite ale modelelor care au fost pre-antrenate. model.tar.gz este modelul implementat în prezent în producție. model2 este modelul mai nou și dorim să-i testăm performanța în ceea ce privește metricile operaționale, cum ar fi latența, înainte de a decide să-l folosim în producție. Noi implementăm model2 ca variantă de umbră a model.tar.gz. Ambele modele pre-antrenate sunt depozitate în găleata S3 publică s3://sagemaker-sample-files. Mai întâi descarcăm instanța de calcul local model și apoi încărcăm în S3.

Modelele din acest exemplu sunt folosite pentru a prezice probabilitatea ca un client de telefonie mobilă să părăsească operatorul de telefonie mobilă actual. Setul de date pe care îl folosim este disponibil public și a fost menționat în carte Descoperirea cunoștințelor în date de Daniel T. Larose. Aceste modele au fost instruite folosind Caietul de predicții XGB Churn în SageMaker. De asemenea, puteți utiliza propriile modele pre-antrenate, caz în care puteți sări peste descărcare de la s3://sagemaker-sample-files și copiați propriile modele direct în model/dosar.

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

Pasul 1 – Creați modele

Încărcăm fișierele model în propriul nostru bucket S3 și creăm două modele SageMaker. Vezi următorul cod:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

Pasul 2 – Implementați cele două modele ca variante de producție și umbră la un punct final de inferență în timp real

Creăm o configurare a punctului final cu variantele de producție și umbră. The ProductionVariants și ShadowProductionVariants prezintă un interes deosebit. Ambele variante au instanțe ml.m5.xlarge cu 4 vCPU și 16 GiB de memorie, iar numărul inițial de instanțe este setat la 1. Consultați următorul cod:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

În cele din urmă, creăm varianta de producție și umbră:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

Pasul 3 – Invocați punctul final pentru testare

După ce punctul final a fost creat cu succes, puteți începe să îl invocați. Trimitem aproximativ 3,000 de cereri într-un mod secvenţial:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

Pasul 4 – Comparați valorile

Acum că am implementat atât modelele de producție, cât și modelele umbră, să comparăm valorile de invocare. Pentru o listă de valori de invocare disponibile pentru comparație, consultați Monitorizați Amazon SageMaker cu Amazon CloudWatch. Să începem prin a compara invocările între variantele de producție și umbră.

InvocationsPerInstance metrica se referă la numărul de invocări trimise la varianta de producție. O fracțiune din aceste invocări, specificate în greutatea variantei, sunt trimise la varianta umbră. Invocarea per instanță se calculează împărțind numărul total de invocări la numărul de instanțe dintr-o variantă. După cum se arată în diagramele următoare, putem confirma că atât variantele de producție, cât și variantele umbră primesc solicitări de invocare conform ponderilor specificate în configurația punctului final.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

În continuare, să comparăm latența modelului (ModelLatency metrică) între variantele producție și umbră. Latența modelului este timpul necesar unui model pentru a răspunde așa cum este vizualizat din SageMaker. Putem observa cum se compară latența modelului variantei umbră cu varianta de producție fără a expune utilizatorii finali la varianta umbră.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Ne așteptăm la latența generală (OverheadLatency metric) să fie comparabil între variantele de producție și umbră. Latența generală este intervalul măsurat din momentul în care SageMaker primește cererea până când returnează un răspuns clientului, minus latența modelului.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pasul 5- Promovează-ți varianta de umbră

Pentru a promova modelul umbră în producție, creați o nouă configurație de punct final cu curent ShadowProductionVariant ca nou ProductionVariant și scoateți ShadowProductionVariant. Acest lucru va elimina curentul ProductionVariant și promovați varianta umbră pentru a deveni noua variantă de producție. Ca întotdeauna, toate actualizările SageMaker sunt orchestrate ca implementări albastre/verzi sub capotă și nu există nicio pierdere a disponibilității în timpul efectuării actualizării.

Opțional, puteți face pârghie Balustrade de desfășurare dacă doriți să utilizați deplasarea totală a traficului și derularea automată în timpul actualizării.

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

Pasul 6 – Curățați

Dacă nu intenționați să utilizați acest punct final în continuare, ar trebui să ștergeți punctul final pentru a evita costuri suplimentare și pentru a curăța alte resurse create în acest blog.

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

Concluzie

În această postare, am introdus o nouă capacitate de inferență SageMaker pentru a compara performanța unei noi versiuni a unei stive de servire a modelului cu versiunea implementată în prezent înainte de lansarea completă a producției, folosind o practică de siguranță a implementării cunoscută sub numele de testare umbră. V-am prezentat avantajele utilizării variantelor și metodelor umbră pentru a configura variantele cu un exemplu de la capăt la capăt. Pentru a afla mai multe despre variantele de umbră, consultați testele de umbră documentaţie.


Despre Autori

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Raghu Ramesha este arhitect de soluții de învățare automată cu echipa Amazon SageMaker Service. El se concentrează pe a ajuta clienții să construiască, să implementeze și să migreze sarcinile de lucru de producție ML către SageMaker la scară. El este specializat în domeniile învățarea automată, AI și viziunea pe computer și deține o diplomă de master în Informatică de la UT Dallas. În timpul liber, îi place să călătorească și să fotografieze.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Qingwei Li este specialist în învățare automată la Amazon Web Services. Și-a primit doctoratul. în Cercetare operațională, după ce a spart contul de grant de cercetare al consilierului său și nu a reușit să dea Premiul Nobel pe care l-a promis. În prezent, ajută clienții din industria serviciilor financiare și a asigurărilor să construiască soluții de învățare automată pe AWS. În timpul liber, îi place să citească și să predea.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Qiyun Zhao este inginer senior de dezvoltare software cu echipa Amazon SageMaker Inference Platform. El este dezvoltatorul principal al Deployment Guardrails și Shadow Deployments și se concentrează pe a ajuta clienții să gestioneze sarcinile de lucru ML și implementările la scară cu disponibilitate ridicată. De asemenea, lucrează la evoluțiile arhitecturii platformei pentru implementarea rapidă și sigură a joburilor ML și rularea cu ușurință a experimentelor ML online. În timpul liber, îi place să citească, să se joace și să călătorească.

Minimizați impactul asupra producției al actualizărilor modelelor ML cu Amazon SageMaker testarea umbră PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Tarun Sairam este Senior Product Manager pentru Amazon SageMaker Inference. El este interesat să afle despre cele mai recente tendințe în învățarea automată și să ajute clienții să le folosească. În timpul liber, îi place să meargă cu bicicleta, să schieze și să joace tenis.

Timestamp-ul:

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