Naturlig sprogforståelse anvendes i en bred vifte af brugssager, fra chatbots og virtuelle assistenter til maskinoversættelse og tekstresumé. For at sikre, at disse applikationer kører på et forventet ydeevneniveau, er det vigtigt, at data i trænings- og produktionsmiljøerne kommer fra samme distribution. Når de data, der bruges til inferens (produktionsdata), adskiller sig fra de data, der bruges under modeltræning, støder vi på et fænomen kendt som datadrift. Når datadrift opstår, er modellen ikke længere relevant for data i produktionen og klarer sig sandsynligvis dårligere end forventet. Det er vigtigt løbende at overvåge slutningsdataene og sammenligne dem med de data, der bruges under træningen.
Du kan bruge Amazon SageMaker til hurtigt at bygge, træne og implementere maskinlæringsmodeller (ML) i enhver skala. Som en proaktiv foranstaltning mod modelnedbrydning kan du bruge Amazon SageMaker Model Monitor til løbende at overvåge kvaliteten af dine ML-modeller i realtid. Med Model Monitor kan du også konfigurere advarsler til at underrette og udløse handlinger, hvis der observeres afvigelser i modellens ydeevne. Tidlig og proaktiv detektering af disse afvigelser sætter dig i stand til at tage korrigerende handlinger, såsom at indsamle nye jordsandhedstræningsdata, genoptræningsmodeller og auditering af opstrømssystemer, uden at skulle overvåge modeller manuelt eller bygge yderligere værktøj.
Model Monitor tilbyder fire forskellige typer overvågningsfunktioner til at detektere og afbøde modelafdrift i realtid:
- Datakvalitet – Hjælper med at registrere ændringer i dataskemaer og statistiske egenskaber for uafhængige variabler og advarer, når der registreres en drift.
- Model kvalitet – Til overvågning af modellens ydeevnekarakteristika såsom nøjagtighed eller præcision i realtid giver Model Monitor dig mulighed for at indtage de grundlæggende sandhedsetiketter, der er indsamlet fra dine applikationer. Model Monitor fusionerer automatisk grundsandhedens information med forudsigelsesdata for at beregne modellens ydeevnemålinger.
- Model bias –Model Monitor er integreret med Amazon SageMaker Clarify at forbedre synlighed i potentielle skævheder. Selvom dine oprindelige data eller model muligvis ikke er forudindtaget, kan ændringer i verden forårsage, at bias udvikler sig over tid i en model, der allerede er blevet trænet.
- Modelforklarlighed – Driftsdetektering advarer dig, når der sker en ændring i den relative betydning af funktionstilskrivninger.
I dette indlæg diskuterer vi de typer af datakvalitetsdrift, der er relevante for tekstdata. Vi præsenterer også en tilgang til at detektere datadrift i tekstdata ved hjælp af Model Monitor.
Datadrift i NLP
Datadrift kan klassificeres i tre kategorier afhængigt af, om distributionsskiftet sker på input- eller outputsiden, eller om forholdet mellem input og output har ændret sig.
Kovariatskifte
I en kovariatskifte, fordelingen af input ændres over tid, men den betingede fordeling P(y|x) ændrer sig ikke. Denne type afdrift kaldes kovariatforskydning, fordi problemet opstår på grund af et skift i fordelingen af kovariaterne (træk). For eksempel, i en e-mail-spamklassificeringsmodel, kan distribution af træningsdata (e-mail-corpora) afvige fra distributionen af data under scoring.
Etiketskifte
Mens kovariatskift fokuserer på ændringer i funktionsfordelingen, etiketskift fokuserer på ændringer i fordelingen af klassevariablen. Denne type forskydning er i det væsentlige det modsatte af kovariatskifte. En intuitiv måde at tænke på kan være at overveje et ubalanceret datasæt. Hvis forholdet mellem spam og ikke-spam af e-mails i vores træningssæt er 50 %, men i virkeligheden er 10 % af vores e-mails ikke-spam, så har måletikettefordelingen ændret sig.
Konceptskifte
Konceptskifte er forskellig fra kovariat og etiketskift ved, at det ikke er relateret til datafordelingen eller klassefordelingen, men i stedet er relateret til forholdet mellem de to variable. For eksempel bruger e-mailspammere ofte en række forskellige koncepter til at bestå spamfiltermodellerne, og konceptet med e-mails, der bruges under træning, kan ændre sig som tiden går.
Nu hvor vi forstår de forskellige typer datadrift, lad os se, hvordan vi kan bruge Model Monitor til at detektere kovariatskift i tekstdata.
Løsningsoversigt
I modsætning til tabeldata, som er struktureret og afgrænset, er tekstdata komplekse, højdimensionelle og fri form. For effektivt at detektere drift i NLP, arbejder vi med indlejringer, som er lavdimensionelle repræsentationer af teksten. Du kan få indlejringer ved hjælp af forskellige sprogmodeller såsom Word2Vec og transformer-baserede modeller som f.eks BERTI. Disse modeller projicerer højdimensionelle data ind i lavdimensionelle rum, mens tekstens semantiske information bevares. Resultaterne er tætte og kontekstuelt meningsfulde vektorer, som kan bruges til forskellige downstream-opgaver, herunder overvågning af datadrift.
I vores løsning bruger vi indlejringer til at detektere kovariatforskydningen af engelske sætninger. Vi bruger Model Monitor til at lette kontinuerlig overvågning af en tekstklassifikator, der er implementeret i et produktionsmiljø. Vores tilgang består af følgende trin:
- Finjuster en BERT-model ved hjælp af SageMaker.
- Implementer en finjusteret BERT-klassifikator som et slutpunkt i realtid med datafangst aktiveret.
- Opret et basisdatasæt, der består af et udsnit af de sætninger, der bruges til at træne BERT-klassifikatoren.
- Opret en tilpasset SageMaker overvågningsjob at beregne cosinus-ligheden mellem de data, der er fanget i produktionen, og baseline-datasættet.
Følgende diagram illustrerer løsningens arbejdsgang:
Finjuster en BERT-model
I dette indlæg bruger vi Corpus of Linguistic Acceptability (CoLA), et datasæt med 10,657 engelske sætninger mærket som grammatiske eller ugrammatiske fra offentliggjort lingvistiklitteratur. Vi bruger SageMaker-træning til at finjustere en BERT-model ved hjælp af CoLa-datasættet ved at definere en PyTorch-estimatorklasse. For mere information om, hvordan du bruger denne SDK med PyTorch, se Brug PyTorch med SageMaker Python SDK. Ringer til fit()
estimatorens metode starter træningsopgaven:
Implementer modellen
Efter at have trænet vores model, hoster vi den på et SageMaker-slutpunkt. For at få slutpunktet til at indlæse modellen og tjene forudsigelser implementerer vi et par metoder i train_deploy.py:
- model_fn() – Indlæser den gemte model og returnerer et modelobjekt, der kan bruges til modelservering. SageMaker PyTorch-modelserveren indlæser vores model ved at påkalde
model_fn
. - input_fn() – Deserialiserer og forbereder forudsigelsesinput. I dette eksempel bliver vores anmodningstekst først serialiseret til JSON og derefter sendt til modelserveringsendepunktet. Derfor i
input_fn()
, deserialiserer vi først den JSON-formaterede anmodningstekst og returnerer inputtet som entorch.tensor
, som krævet for BERT. - forudsige_fn() – Udfører forudsigelsen og returnerer resultatet.
Aktiver Model Monitor datafangst
Vi aktiverer Model Monitor datafangst at registrere inputdataene i Amazon Simple Storage Service (Amazon S3) spand for at henvise til det senere:
Derefter opretter vi et SageMaker-slutpunkt i realtid med modellen oprettet i det foregående trin:
Inferens
Vi kører forudsigelse ved hjælp af prædiktorobjektet, som vi oprettede i det forrige trin. Vi indstiller JSON serializer og deserializer, som bruges af inferensendepunktet:
Realtidsslutpunktet er konfigureret til at fange data fra anmodningen, og svaret og dataene gemmes i Amazon S3. Du kan se de data, der er fanget i den tidligere overvågningsplan.
Opret en baseline
Vi bruger en finjusteret BERT-model til at udtrække sætningsindlejringsfunktioner fra træningsdataene. Vi bruger disse vektorer som funktionsinput af høj kvalitet til at sammenligne cosinusafstand, fordi BERT producerer dynamisk ordrepræsentation med semantisk kontekst. Udfør følgende trin for at få sætningsindlejring:
- Brug en BERT-tokenizer til at få token-id'er for hvert token (
input_id
) i inputsætningen og masken for at angive, hvilke elementer i inputsekvensen der er tokens vs. padding-elementer (attention_mask_id
). Vi bruger BERTtokenizer.encode_plus
funktion for at få disse værdier for hver inputsætning:
input_ids
, attention_mask_ids
overføres til modellen og henter netværkets skjulte tilstande. Det hidden_states
har fire dimensioner i følgende rækkefølge:
- Lagnummer (BERT har 12 lag)
- Batchnummer (1 sætning)
- Word token indekser
- Skjulte enheder (768 funktioner)
- Brug de sidste to skjulte lag til at få en enkelt vektor (sætningsindlejring) ved at beregne gennemsnittet af alle input-tokens i sætningen:
- Konverter sætningsindlejringen som et NumPy-array og gem det på en Amazon S3-placering som en baseline, der bruges af Model Monitor:
Evalueringsmanuskript
Model Monitor giver en forudbygget container med mulighed for at analysere data, der er opsamlet fra slutpunkter til tabeldatasæt. Hvis du ønsker at medbringe din egen container, giver Model Monitor forlængelsespunkter, som du kan bruge. Når du opretter en MonitoringSchedule
, Model Monitor starter i sidste ende behandlingsjob. Derfor skal containeren være opmærksom på behandlerjobkontrakten. Vi skal oprette et evalueringsscript, der er kompatibelt med container kontrakt input , udgange.
Model Monitor bruger evalueringskode på alle de prøver, der fanges under overvågningsplanen. For hvert inferensdatapunkt beregner vi sætningsindlejringen ved hjælp af den samme logik beskrevet tidligere. Cosinus-lighed bruges som en afstandsmetrik til at måle ligheden mellem et inferensdatapunkt og sætningsindlejringer i basislinjen. Matematisk måler den cosinusvinklen mellem to sætningsvektorer. En høj cosinus-lighedsscore indikerer lignende sætningsindlejringer. En lavere cosinus-lighedsscore indikerer datadrift. Vi beregner et gennemsnit af alle cosinus-lighedsscorerne, og hvis det er mindre end tærsklen, bliver det fanget i overtrædelsesrapporten. Baseret på use casen kan du bruge andre afstandsmålinger som f.eks manhattan
or euclidean
at måle ligheden mellem sætningsindlejringer.
Følgende diagram viser, hvordan vi bruger SageMaker Model Monitoring til at etablere baseline og detektere datadrift ved hjælp af cosinusafstandslighed.
Følgende er koden til beregning af overtrædelserne; det komplette evalueringsscript er tilgængeligt på GitHub:
Mål datadrift ved hjælp af Model Monitor
I dette afsnit fokuserer vi på at måle datadrift ved hjælp af Model Monitor. Model Monitor præ-byggede skærme er drevet af Deequ, som er et bibliotek bygget oven på Apache Spark til at definere enhedstests for data, som måler datakvalitet i store datasæt. Du behøver ikke kodning for at bruge disse forudbyggede overvågningsfunktioner. Du har også fleksibiliteten til at overvåge modeller ved at kode for at levere tilpasset analyse. Du kan indsamle og gennemgå alle metrics udsendt af Model Monitor i Amazon SageMaker Studio, så du visuelt kan analysere din models ydeevne uden at skrive yderligere kode.
I visse scenarier, for eksempel når dataene ikke er i tabelform, er standardbehandlingsjobbet (drevet af Deequ) er ikke tilstrækkeligt, fordi det kun understøtter tabeldatasæt. De præbyggede skærme er muligvis ikke tilstrækkelige til at generere sofistikerede metrics til at detektere drift, og det kan være nødvendigt at medbringe dine egne metrics. I de næste afsnit beskriver vi opsætningen for at bringe dine metrics ind ved at bygge en tilpasset container.
Byg den tilpassede Model Monitor-beholder
Vi bruger evalueringsmanuskript fra det forrige afsnit for at bygge en Docker-container og skubbe den til Amazon Elastic Container Registry (Amazon ECR):
Når kundens Docker-container er i Amazon ECR, kan vi planlægge et modelovervågningsjob og generere en overtrædelsesrapport, som vist i de næste afsnit.
Planlæg et modelovervågningsjob
For at planlægge et modelovervågningsjob opretter vi en forekomst af Model Monitor og i image_uri
, henviser vi til Docker-beholderen, som vi oprettede i det forrige afsnit:
Vi planlægger overvågningsopgaven ved hjælp af create_monitoring_schedule
API. Du kan planlægge overvågningsopgaven på time- eller daglig basis. Du konfigurerer jobbet ved hjælp af destination
parameter, som vist i følgende kode:
For at beskrive og liste overvågningsplanen og dens kørsler kan du bruge følgende kommandoer:
Rapport om overtrædelse af datadrift
Når modelovervågningsjobbet er fuldført, kan du navigere til destinations-S3-stien for at få adgang til overtrædelsesrapporterne. Denne rapport indeholder alle de input, hvis gennemsnitlige cosinusscore (avg_cosine_score
) er under tærsklen, der er konfigureret som en miljøvariabel THRESHOLD:0.5
i ModelMonitor eksempel. Dette er en indikation af, at de data, der observeres under inferens, glider ud over den etablerede baseline.
Følgende kode viser den genererede overtrædelsesrapport:
Endelig kan du, baseret på denne observation, konfigurere din model til genoptræning. Du kan også aktivere Amazon Simple Notification Service (Amazon SNS) underretninger for at sende advarsler, når der opstår overtrædelser.
Konklusion
Model Monitor giver dig mulighed for at opretholde den høje kvalitet af dine modeller i produktionen. I dette indlæg fremhævede vi udfordringerne med at overvåge datadrift på ustrukturerede data som tekst og leverede en intuitiv tilgang til at opdage datadrift ved hjælp af et tilpasset overvågningsscript. Du kan finde koden tilknyttet indlægget i det følgende GitHub repository. Derudover kan du tilpasse løsningen til at bruge andre afstandsmålinger som f.eks maksimal gennemsnitlig uoverensstemmelse (MMD), en ikke-parametrisk afstandsmetrik til at beregne marginalfordeling mellem kilde- og målfordeling på det indlejrede rum.
Om forfatterne
Vikram Elango er en AI/ML Specialist Solutions Architect hos Amazon Web Services, baseret i Virginia, USA. Vikram hjælper finans- og forsikringsbranchens kunder med design, tankelederskab til at bygge og implementere maskinlæringsapplikationer i stor skala. Han er i øjeblikket fokuseret på naturlig sprogbehandling, ansvarlig AI, inferensoptimering og skalering af ML på tværs af virksomheden. I sin fritid nyder han at rejse, vandre, lave mad og campere med sin familie.
Raghu Ramesha er en ML Solutions Architect hos Amazon SageMaker Service-teamet. Han fokuserer på at hjælpe kunder med at migrere ML-produktionsarbejdsbelastninger til SageMaker i stor skala. Han har specialiseret sig i maskinlæring, kunstig intelligens og computersyn og har en mastergrad i datalogi fra UT Dallas. I sin fritid nyder han at rejse og fotografere.
Tony Chen er en Machine Learning Solutions Architect hos Amazon Web Services, der hjælper kunder med at designe skalerbare og robuste maskinlæringsfunktioner i skyen. Som tidligere dataforsker og dataingeniør udnytter han sin erfaring til at hjælpe med at tackle nogle af de mest udfordrende problemer, organisationer står over for med at operationalisere maskinlæring.
- '
- "
- 100
- 11
- 7
- Om
- adgang
- Konto
- tværs
- aktioner
- Yderligere
- AI
- Alle
- allerede
- Skønt
- Amazon
- Amazon SageMaker
- Amazon Web Services
- analyse
- Apache
- Apache Spark
- anvendelig
- applikationer
- til rådighed
- gennemsnit
- AWS
- Baseline
- krop
- bygge
- Bygning
- camping
- tilfælde
- Årsag
- udfordringer
- lave om
- chatbots
- klassificering
- Cloud
- kode
- Kodning
- Indsamling
- komplekse
- Compute
- Datalogi
- Computer Vision
- Container
- indeholder
- kontinuerlig
- kontrakt
- madlavning
- Oprettelse af
- Kunder
- Dallas
- data
- datakvalitet
- dataforsker
- Design
- Detektion
- udvikle
- forskellige
- diskutere
- afstand
- Docker
- Docker container
- Er ikke
- Domæner
- kørsel
- i løbet af
- dynamisk
- Tidligt
- møde
- Endpoint
- ingeniør
- Engelsk
- Enterprise
- Miljø
- etableret
- eksempel
- erfaring
- Ansigtet
- familie
- Feature
- Funktionalitet
- finansielle
- Fornavn
- Fleksibilitet
- Fokus
- fokuserede
- formular
- Videresend
- Gratis
- funktion
- generere
- GitHub
- have
- hjælpe
- hjælper
- Høj
- Fremhævet
- hiking
- Home
- Hvordan
- How To
- HTTPS
- billede
- gennemføre
- vigtigt
- Herunder
- industrien
- oplysninger
- forsikring
- forsikringsbranchen
- IT
- Job
- Karriere
- Etiketter
- Sprog
- stor
- seneste
- lanceringer
- Leadership" (virkelig menneskelig ledelse)
- læring
- Niveau
- Udnytter
- Bibliotek
- lingvistik
- Liste
- litteratur
- belastning
- placering
- machine learning
- maskine oversættelse
- maske
- måle
- Metrics
- ML
- model
- modeller
- overvågning
- mere
- Naturligt sprog
- Natural Language Processing
- netværk
- NLP
- underretning
- Tilbud
- ordrer
- organisationer
- Andet
- ydeevne
- fotografering
- Precision
- forudsigelse
- Forudsigelser
- præsentere
- Problem
- produktion
- projekt
- give
- giver
- Python
- pytorch
- kvalitet
- rækkevidde
- realtid
- Reality
- optage
- indberette
- Rapporter
- svar
- Resultater
- omskoling
- afkast
- vende
- gennemgå
- Kør
- kører
- sagemaker
- Scale
- skalering
- Videnskab
- SDK
- Tjenester
- servering
- sæt
- skifte
- lignende
- Simpelt
- So
- Løsninger
- Space
- rum
- spam
- specialiseret
- Stater
- opbevaring
- butik
- Understøtter
- Systemer
- mål
- prøve
- Test
- tests
- verdenen
- tænkte
- tænkt lederskab
- tid
- token
- Tokens
- top
- fakkel
- Trafik
- Kurser
- Oversættelse
- USA
- Specifikation
- Virginia
- Virtual
- synlighed
- vision
- vente
- web
- webservices
- Wikipedia
- uden
- Arbejde
- workflow
- world
- skrivning