Naturlig språkforståelse brukes i et bredt spekter av brukstilfeller, fra chatboter og virtuelle assistenter, til maskinoversettelse og tekstoppsummering. For å sikre at disse applikasjonene kjører på et forventet ytelsesnivå, er det viktig at data i trenings- og produksjonsmiljøene kommer fra samme distribusjon. Når dataene som brukes til inferens (produksjonsdata) er forskjellige fra dataene som brukes under modelltrening, møter vi et fenomen kjent som datadrift. Når datadrift oppstår, er modellen ikke lenger relevant for dataene i produksjonen og gir sannsynligvis dårligere resultater enn forventet. Det er viktig å kontinuerlig overvåke slutningsdataene og sammenligne dem med dataene som brukes under trening.
Du kan bruke Amazon SageMaker for raskt å bygge, trene og distribuere maskinlæringsmodeller (ML) i alle skalaer. Som et proaktivt tiltak mot modellforringelse kan du bruke Amazon SageMaker modellmonitor for å kontinuerlig overvåke kvaliteten på ML-modellene dine i sanntid. Med Model Monitor kan du også konfigurere varsler for å varsle og utløse handlinger hvis det observeres avvik i modellytelsen. Tidlig og proaktiv oppdagelse av disse avvikene gjør at du kan iverksette korrigerende handlinger, for eksempel å samle inn nye opplæringsdata, omskoleringsmodeller og revisjon av oppstrømssystemer, uten å måtte overvåke modeller manuelt eller bygge ekstra verktøy.
Model Monitor tilbyr fire forskjellige typer overvåkingsfunksjoner for å oppdage og redusere modelldrift i sanntid:
- Datakvalitet – Hjelper med å oppdage endringer i dataskjemaer og statistiske egenskaper til uavhengige variabler og varsler når en drift oppdages.
- Modellkvalitet – For å overvåke modellens ytelsesegenskaper som nøyaktighet eller presisjon i sanntid, lar Model Monitor deg innta de grunnleggende sannhetsetikettene som er samlet inn fra applikasjonene dine. Model Monitor slår automatisk sammen sannhetsinformasjonen med prediksjonsdata for å beregne modellens ytelsesmålinger.
- Modellskjevhet –Model Monitor er integrert med Amazon SageMaker Clarify for å forbedre synligheten til potensielle skjevheter. Selv om de første dataene eller modellene dine kanskje ikke er partisk, kan endringer i verden føre til at skjevheter utvikles over tid i en modell som allerede er trent.
- Modellforklarbarhet – Driftsdeteksjon varsler deg når det skjer en endring i den relative betydningen av funksjonsattribusjoner.
I dette innlegget diskuterer vi hvilke typer datakvalitetsdrift som kan brukes på tekstdata. Vi presenterer også en tilnærming for å oppdage datadrift i tekstdata ved hjelp av Model Monitor.
Datadrift i NLP
Datadrift kan klassifiseres i tre kategorier avhengig av om distribusjonsskiftet skjer på input- eller output-siden, eller om forholdet mellom input og output har endret seg.
Kovariatskifte
I en kovariatskifte, fordelingen av input endres over tid, men den betingede fordelingen P(y|x) endres ikke. Denne typen drift kalles kovariatforskyvning fordi problemet oppstår på grunn av et skifte i fordelingen av kovariatene (trekkene). For eksempel, i en klassifiseringsmodell for e-postsøppel, kan distribusjon av treningsdata (e-postkorpora) avvike fra distribusjonen av data under scoring.
Etikettskifte
Mens kovariatskifte fokuserer på endringer i funksjonsfordelingen, etikettskifte fokuserer på endringer i fordelingen av klassevariabelen. Denne typen forskyvning er i hovedsak det motsatte av kovariatskifte. En intuitiv måte å tenke på kan være å vurdere et ubalansert datasett. Hvis forholdet mellom spam og ikke-spam for e-poster i opplæringssettet vårt er 50 %, men i virkeligheten er 10 % av e-postene våre ikke-spam, så har måletikettfordelingen endret seg.
Konseptskifte
Konseptskifte er forskjellig fra kovariat og etikettskift ved at det ikke er relatert til datadistribusjonen eller klassefordelingen, men i stedet er relatert til forholdet mellom de to variablene. For eksempel bruker e-postspammere ofte en rekke konsepter for å passere spamfiltermodellene, og konseptet med e-post som brukes under trening kan endre seg etter hvert som tiden går.
Nå som vi forstår de forskjellige typene datadrift, la oss se hvordan vi kan bruke Model Monitor til å oppdage kovariatskifte i tekstdata.
Løsningsoversikt
I motsetning til tabelldata, som er strukturert og avgrenset, er tekstdata komplekse, høydimensjonale og fri form. For å effektivt oppdage drift i NLP samarbeider vi med innebygginger, som er lavdimensjonale representasjoner av teksten. Du kan få innbygginger ved hjelp av ulike språkmodeller som Word2Vec og transformatorbaserte modeller som BERTI. Disse modellene projiserer høydimensjonale data inn i lavdimensjonale rom mens de bevarer den semantiske informasjonen til teksten. Resultatene er tette og kontekstuelt meningsfulle vektorer, som kan brukes til ulike nedstrømsoppgaver, inkludert overvåking for datadrift.
I løsningen vår bruker vi innebygginger for å oppdage kovariatforskyvningen av engelske setninger. Vi bruker Model Monitor for å lette kontinuerlig overvåking for en tekstklassifiserer som distribueres til et produksjonsmiljø. Vår tilnærming består av følgende trinn:
- Finjuster en BERT-modell med SageMaker.
- Distribuer en finjustert BERT-klassifisering som et sanntidsendepunkt med datafangst aktivert.
- Lag et basisdatasett som består av et utvalg av setningene som brukes til å trene BERT-klassifisereren.
- Lag en tilpasset SageMaker overvåkingsjobb for å beregne cosinuslikheten mellom dataene som er fanget i produksjonen og baseline-datasettet.
Følgende diagram illustrerer løsningens arbeidsflyt:
Finjuster en BERT-modell
I dette innlegget bruker vi Corpus of Linguistic Acceptability (CoLA), et datasett med 10,657 XNUMX engelske setninger merket som grammatiske eller ugrammatiske fra publisert lingvistikklitteratur. Vi bruker SageMaker-trening for å finjustere en BERT-modell ved å bruke CoLa-datasettet ved å definere en PyTorch-estimatorklasse. For mer informasjon om hvordan du bruker denne SDK med PyTorch, se Bruk PyTorch med SageMaker Python SDK. Ringer til fit()
metoden til estimatoren starter treningsjobben:
Distribuer modellen
Etter å ha trent modellen vår, hoster vi den på et SageMaker-endepunkt. For å få endepunktet til å laste modellen og tjene spådommer, implementerer vi noen få metoder i train_deploy.py:
- modell_fn () - Laster inn den lagrede modellen og returnerer et modellobjekt som kan brukes til modellservering. SageMaker PyTorch-modellserveren laster modellen vår ved å påkalle
model_fn
. - input_fn () - Deserialiserer og forbereder prediksjonen. I dette eksemplet blir forespørselsorganet vårt først serialisert til JSON og deretter sendt til endepunktet for modellen. Derfor, i
input_fn()
, vi deserialiserer først JSON-formatert forespørselsorgan og returnerer inndataene som entorch.tensor
, som kreves for BERT. - predict_fn () – Utfører prediksjonen og returnerer resultatet.
Aktiver Model Monitor-datafangst
Vi aktiverer Modell Monitor datafangst for å registrere inndataene i Amazon enkel lagringstjeneste (Amazon S3) bøtte for å referere til det senere:
Deretter lager vi et SageMaker-endepunkt i sanntid med modellen opprettet i forrige trinn:
slutning
Vi kjører prediksjon ved å bruke prediktorobjektet som vi opprettet i forrige trinn. Vi setter JSON serializer og deserializer, som brukes av slutningsendepunktet:
Sanntidsendepunktet er konfigurert til å fange data fra forespørselen, og svaret og dataene blir lagret i Amazon S3. Du kan se dataene som er fanget i forrige overvåkingsplan.
Lag en grunnlinje
Vi bruker en finjustert BERT-modell for å trekke ut funksjoner for innebygging av setninger fra treningsdataene. Vi bruker disse vektorene som funksjonsinnganger av høy kvalitet for å sammenligne cosinusavstand fordi BERT produserer dynamisk ordrepresentasjon med semantisk kontekst. Fullfør følgende trinn for å få setningsinnbygging:
- Bruk en BERT-tokenizer for å få token-ID-er for hvert token (
input_id
) i inndatasetningen og masken for å indikere hvilke elementer i inndatasekvensen som er tokens kontra utfyllingselementer (attention_mask_id
). Vi bruker BERTtokenizer.encode_plus
funksjon for å få disse verdiene for hver inndatasetning:
input_ids
og attention_mask_ids
sendes til modellen og henter de skjulte tilstandene til nettverket. De hidden_states
har fire dimensjoner i følgende rekkefølge:
- Lagnummer (BERT har 12 lag)
- Batchnummer (1 setning)
- Ord-token-indekser
- Skjulte enheter (768 funksjoner)
- Bruk de to siste skjulte lagene for å få en enkelt vektor (setningsinnbygging) ved å beregne gjennomsnittet av alle inndatasymboler i setningen:
- Konverter setningsinnbyggingen som en NumPy-matrise og lagre den på et Amazon S3-sted som en grunnlinje som brukes av Model Monitor:
Evalueringsmanus
Model Monitor gir en forhåndsbygd beholder med muligheten til å analysere dataene som fanges opp fra endepunkter for tabellformede datasett. Hvis du ønsker å ta med din egen container, gir Model Monitor utvidelsespunkter som du kan bruke. Når du oppretter en MonitoringSchedule
, Model Monitor starter til slutt behandlingsjobber. Derfor må beholderen være klar over behandlingsjobbkontrakten. Vi må lage et evalueringsskript som er kompatibelt med container kontraktsinnganger og utganger.
Model Monitor bruker evalueringskode på alle prøvene som fanges opp under overvåkingsplanen. For hvert inferensdatapunkt beregner vi setningsinnbyggingen ved å bruke den samme logikken beskrevet tidligere. Cosinuslikhet brukes som en avstandsberegning for å måle likheten til et slutningsdatapunkt og setningsinnbygging i grunnlinjen. Matematisk måler den cosinusvinkelen mellom to setningsinnebygde vektorer. En høy cosinuslikhetsscore indikerer lignende setningsinnbygging. En lavere cosinuslikhetsscore indikerer datadrift. Vi beregner et gjennomsnitt av alle cosinuslikhetsskårene, og hvis det er mindre enn terskelen, blir det fanget opp i bruddrapporten. Basert på brukstilfellet kan du bruke andre avstandsmålinger som manhattan
or euclidean
for å måle likheten mellom setningsinnleiringer.
Følgende diagram viser hvordan vi bruker SageMaker Model Monitoring for å etablere baseline og oppdage datadrift ved å bruke cosinusavstandslikhet.
Følgende er koden for å beregne bruddene; det komplette evalueringsskriptet er tilgjengelig på GitHub:
Mål datadrift ved hjelp av Model Monitor
I denne delen fokuserer vi på å måle datadrift ved hjelp av Model Monitor. Model Monitor forhåndsbygde skjermer drives av Deequ, som er et bibliotek bygget på toppen av Apache Spark for å definere enhetstester for data, som måler datakvalitet i store datasett. Du trenger ikke koding for å bruke disse forhåndsbygde overvåkingsmulighetene. Du har også fleksibiliteten til å overvåke modeller ved å kode for å gi tilpasset analyse. Du kan samle inn og gjennomgå alle beregninger som sendes ut av Model Monitor i Amazon SageMaker Studio, slik at du visuelt kan analysere modellens ytelse uten å skrive tilleggskode.
I visse scenarier, for eksempel når dataene ikke er tabellformede, er standardbehandlingsjobben (drevet av Deequ) er ikke tilstrekkelig fordi den kun støtter tabellformede datasett. De forhåndsbygde monitorene er kanskje ikke tilstrekkelige til å generere sofistikerte beregninger for å oppdage drifter, og det kan være nødvendig å ta med egne beregninger. I de neste delene beskriver vi oppsettet for å hente inn beregningene dine ved å bygge en tilpasset beholder.
Bygg den tilpassede Model Monitor-beholderen
Vi bruker evalueringsmanus fra forrige seksjon for å bygge en Docker-beholder og skyve den til Amazon Elastic Container Registry (Amazon ECR):
Når kundens Docker-beholder er i Amazon ECR, kan vi planlegge en modellovervåkingsjobb og generere en bruddrapport, som vist i de neste avsnittene.
Planlegg en modellovervåkingsjobb
For å planlegge en modellovervåkingsjobb oppretter vi en forekomst av Model Monitor og i image_uri
, viser vi til Docker-beholderen som vi opprettet i forrige del:
Vi planlegger overvåkingsjobben ved å bruke create_monitoring_schedule
API. Du kan planlegge overvåkingsjobben på time- eller daglig basis. Du konfigurerer jobben ved å bruke destination
parameter, som vist i følgende kode:
For å beskrive og liste opp overvåkingsplanen og dens kjøringer, kan du bruke følgende kommandoer:
Rapport om brudd på dataavvik
Når modellovervåkingsjobben er fullført, kan du navigere til S3-destinasjonsbanen for å få tilgang til bruddrapportene. Denne rapporten inneholder alle inngangene med gjennomsnittlig cosinus-poengsum (avg_cosine_score
) er under terskelen konfigurert som en miljøvariabel THRESHOLD:0.5
i ModelMonitor forekomst. Dette er en indikasjon på at dataene som er observert under inferens, driver utover den etablerte grunnlinjen.
Følgende kode viser den genererte bruddrapporten:
Til slutt, basert på denne observasjonen, kan du konfigurere modellen din for omskolering. Du kan også aktivere Amazon enkel varslingstjeneste (Amazon SNS) varsler for å sende varsler når brudd oppstår.
konklusjonen
Model Monitor lar deg opprettholde den høye kvaliteten på modellene dine i produksjon. I dette innlegget fremhevet vi utfordringene med å overvåke datadrift på ustrukturerte data som tekst, og ga en intuitiv tilnærming for å oppdage datadrift ved hjelp av et tilpasset overvåkingsskript. Du finner koden knyttet til innlegget nedenfor GitHub repository. I tillegg kan du tilpasse løsningen til å bruke andre avstandsmålinger som f.eks maksimal gjennomsnittlig avvik (MMD), en ikke-parametrisk avstandsberegning for å beregne marginalfordeling mellom kilde- og målfordeling på det innebygde rommet.
Om forfatterne
Vikram Elango er en AI/ML Specialist Solutions Architect hos Amazon Web Services, basert i Virginia, USA. Vikram hjelper finans- og forsikringsbransjens kunder med design, tankeledelse med å bygge og distribuere maskinlæringsapplikasjoner i stor skala. Han er for tiden fokusert på naturlig språkbehandling, ansvarlig AI, inferensoptimalisering og skalering av ML på tvers av bedriften. På fritiden liker han å reise, gå fotturer, lage mat og campe med familien.
Raghu Ramesha er en ML Solutions Architect med Amazon SageMaker Service-teamet. Han fokuserer på å hjelpe kunder med å migrere ML-produksjonsarbeidsmengder til SageMaker i stor skala. Han spesialiserer seg på maskinlæring, AI og datasynsdomener, og har en mastergrad i informatikk fra UT Dallas. På fritiden liker han å reise og fotografere.
Tony Chen er en maskinlæringsløsningsarkitekt hos Amazon Web Services, og hjelper kunder med å designe skalerbare og robuste maskinlæringsfunksjoner i skyen. Som tidligere dataforsker og dataingeniør utnytter han sin erfaring til å hjelpe til med å takle noen av de mest utfordrende problemene organisasjoner står overfor med operasjonalisering av maskinlæring.
- '
- "
- 100
- 11
- 7
- Om oss
- adgang
- Logg inn
- tvers
- handlinger
- Ytterligere
- AI
- Alle
- allerede
- Selv
- Amazon
- Amazon SageMaker
- Amazon Web Services
- analyse
- Apache
- Apache Spark
- aktuelt
- søknader
- tilgjengelig
- gjennomsnittlig
- AWS
- Baseline
- kroppen
- bygge
- Bygning
- camping
- saker
- Årsak
- utfordringer
- endring
- chatbots
- klassifisering
- Cloud
- kode
- Koding
- Samle
- komplekse
- Beregn
- informatikk
- Datamaskin syn
- Container
- inneholder
- kontinuerlig
- kontrakt
- matlaging
- Opprette
- Kunder
- Dallas
- dato
- datakvalitet
- dataforsker
- utforming
- Gjenkjenning
- utvikle
- forskjellig
- diskutere
- avstand
- Docker
- Docker-beholder
- ikke
- domener
- kjøring
- under
- dynamisk
- Tidlig
- emalje
- møte
- Endpoint
- ingeniør
- Engelsk
- Enterprise
- Miljø
- etablert
- eksempel
- erfaring
- Face
- familie
- Trekk
- Egenskaper
- finansiell
- Først
- fleksibilitet
- Fokus
- fokuserte
- skjema
- Forward
- Gratis
- funksjon
- generere
- GitHub
- å ha
- hjelpe
- hjelper
- Høy
- Fremhevet
- vandreturer
- Hjemprodukt
- Hvordan
- Hvordan
- HTTPS
- bilde
- iverksette
- viktig
- Inkludert
- industri
- informasjon
- forsikring
- forsikringsbransjen
- IT
- Jobb
- Jobb
- etiketter
- Språk
- stor
- siste
- lanseringer
- Ledelse
- læring
- Nivå
- utnytter
- Bibliotek
- lingvistikk
- Liste
- litteratur
- laste
- plassering
- maskinlæring
- maskinoversettelse
- maske
- måle
- Metrics
- ML
- modell
- modeller
- overvåking
- mer
- Naturlig språk
- Natural Language Processing
- nettverk
- nlp
- varsling
- Tilbud
- rekkefølge
- organisasjoner
- Annen
- ytelse
- fotografering
- Precision
- prediksjon
- Spådommer
- presentere
- Problem
- Produksjon
- prosjekt
- gi
- gir
- Python
- pytorch
- kvalitet
- område
- sanntids
- Reality
- rekord
- rapporterer
- Rapporter
- svar
- Resultater
- omskolering
- avkastning
- reversere
- anmeldelse
- Kjør
- rennende
- sagemaker
- Skala
- skalering
- Vitenskap
- SDK
- Tjenester
- servering
- sett
- skift
- lignende
- Enkelt
- So
- Solutions
- Rom
- mellomrom
- spam
- spesialisert
- Stater
- lagring
- oppbevare
- Støtter
- Systemer
- Target
- test
- Testing
- tester
- verden
- trodde
- tenkte ledelse
- tid
- token
- tokens
- topp
- lommelykt
- trafikk
- Kurs
- Oversettelse
- USA
- Se
- Virginia
- virtuelle
- synlighet
- syn
- vente
- web
- webtjenester
- Wikipedia
- uten
- Arbeid
- arbeidsflyt
- verden
- skriving