Naturlig språkförståelse tillämpas i ett brett spektrum av användningsfall, från chatbots och virtuella assistenter, till maskinöversättning och textsammanfattning. För att säkerställa att dessa applikationer körs på en förväntad prestandanivå är det viktigt att data i utbildnings- och produktionsmiljöerna kommer från samma distribution. När data som används för slutledning (produktionsdata) skiljer sig från data som används under modellträning, stöter vi på ett fenomen som kallas datadrift. När datadrift inträffar är modellen inte längre relevant för data i produktionen och presterar sannolikt sämre än förväntat. Det är viktigt att kontinuerligt övervaka slutledningsdata och jämföra dem med data som används under träning.
Du kan använda Amazon SageMaker att snabbt bygga, träna och distribuera modeller för maskininlärning (ML) i vilken skala som helst. Som en proaktiv åtgärd mot modellförsämring kan du använda Amazon SageMaker modellmonitor att kontinuerligt övervaka kvaliteten på dina ML-modeller i realtid. Med Model Monitor kan du också konfigurera varningar för att meddela och utlösa åtgärder om någon avvikelse i modellens prestanda observeras. Tidig och proaktiv detektering av dessa avvikelser gör det möjligt för dig att vidta korrigerande åtgärder, såsom att samla in ny träningsdata från marken, omskolningsmodeller och granska uppströmssystem, utan att behöva övervaka modeller manuellt eller bygga ytterligare verktyg.
Model Monitor erbjuder fyra olika typer av övervakningsmöjligheter för att upptäcka och mildra modelldrift i realtid:
- Datakvalitet – Hjälper till att upptäcka förändringar i datascheman och statistiska egenskaper för oberoende variabler och varningar när en drift upptäcks.
- Modellkvalitet – För att övervaka modellens prestandaegenskaper såsom noggrannhet eller precision i realtid, låter Model Monitor dig ta in de markerade sanningsetiketterna som samlats in från dina applikationer. Model Monitor slår automatiskt samman sanningsinformationen med förutsägelsedata för att beräkna modellens prestandamått.
- Modell bias –Modell Monitor är integrerad med Amazon SageMaker Clarify för att förbättra insynen i potentiell fördom. Även om din ursprungliga data eller modell kanske inte är partisk, kan förändringar i världen göra att bias utvecklas över tid i en modell som redan har tränats.
- Modellförklarlighet – Driftdetektering varnar dig när en förändring inträffar i den relativa betydelsen av funktionstillskrivningar.
I det här inlägget diskuterar vi vilka typer av datakvalitetsdrift som är tillämpliga på textdata. Vi presenterar också ett tillvägagångssätt för att upptäcka datadrift i textdata med hjälp av Model Monitor.
Datadrift i NLP
Datadrift kan klassificeras i tre kategorier beroende på om distributionsförskjutningen sker på ingångs- eller utmatningssidan, eller om förhållandet mellan ingången och utmatningen har förändrats.
Kovariatskifte
I en kovariatskifte, fördelningen av insatser förändras över tiden, men den villkorade fördelningen P(y|x) ändras inte. Denna typ av drift kallas kovariatskifte eftersom problemet uppstår på grund av en förskjutning i fördelningen av kovariaterna (egenskaperna). Till exempel, i en klassificeringsmodell för e-postskräppost, kan distribution av träningsdata (e-postkorpora) avvika från distributionen av data under poängsättning.
Etikettskifte
Medan kovariatskifte fokuserar på förändringar i funktionsfördelningen, etikettförskjutning fokuserar på förändringar i fördelningen av klassvariabeln. Denna typ av skiftning är i huvudsak det omvända till kovariatskifte. Ett intuitivt sätt att tänka på det kan vara att överväga en obalanserad datauppsättning. Om förhållandet mellan spam och icke-spam för e-postmeddelanden i vår utbildningsuppsättning är 50 %, men i verkligheten är 10 % av våra e-postmeddelanden icke-spam, så har måletikettsfördelningen ändrats.
Konceptskifte
Konceptskifte skiljer sig från kovariat och etikettskifte genom att det inte är relaterat till datafördelningen eller klassfördelningen, utan istället är relaterat till förhållandet mellan de två variablerna. Till exempel använder e-postspammare ofta en mängd olika koncept för att klara skräppostfiltermodellerna, och konceptet med e-postmeddelanden som används under utbildningen kan ändras med tiden.
Nu när vi förstår de olika typerna av datadrift, låt oss se hur vi kan använda Model Monitor för att upptäcka kovariatskifte i textdata.
Lösningsöversikt
Till skillnad från tabelldata, som är strukturerad och avgränsad, är textdata komplex, högdimensionell och fri form. För att effektivt upptäcka drift i NLP arbetar vi med inbäddningar, som är lågdimensionella representationer av texten. Du kan få inbäddningar med hjälp av olika språkmodeller som Word2Vec och transformatorbaserade modeller som BERTI. Dessa modeller projicerar högdimensionell data i lågdimensionella utrymmen samtidigt som textens semantiska information bevaras. Resultaten är täta och kontextuellt meningsfulla vektorer, som kan användas för olika nedströmsuppgifter, inklusive övervakning av datadrift.
I vår lösning använder vi inbäddningar för att upptäcka kovariatförskjutningen av engelska meningar. Vi använder Model Monitor för att underlätta kontinuerlig övervakning av en textklassificerare som distribueras till en produktionsmiljö. Vårt tillvägagångssätt består av följande steg:
- Finjustera en BERT-modell med SageMaker.
- Distribuera en finjusterad BERT-klassificerare som en realtidsslutpunkt med Data infångning aktiverad.
- Skapa en baslinjedatauppsättning som består av ett urval av meningarna som används för att träna BERT-klassificeraren.
- Skapa en anpassat SageMaker övervakningsjobb för att beräkna cosinuslikheten mellan data som fångas i produktionen och baslinjedataset.
Följande diagram illustrerar lösningens arbetsflöde:
Finjustera en BERT-modell
I det här inlägget använder vi Corpus of Linguistic Acceptability (CoLA), en datauppsättning med 10,657 XNUMX engelska meningar märkta som grammatiska eller ogrammatiska från publicerad lingvistiklitteratur. Vi använder SageMaker-träning för att finjustera en BERT-modell med hjälp av CoLa-datauppsättningen genom att definiera en PyTorch-estimatorklass. För mer information om hur du använder denna SDK med PyTorch, se Använd PyTorch med SageMaker Python SDK. Ringer till fit()
estimatorns metod lanserar träningsjobbet:
Distribuera modellen
Efter att ha tränat vår modell är vi värd för den på en SageMaker-slutpunkt. För att få slutpunkten att ladda modellen och tjäna förutsägelser implementerar vi några metoder i train_deploy.py:
- model_fn () - Läser in den sparade modellen och returnerar ett modellobjekt som kan användas för modellvisning. SageMaker PyTorch-modellservern laddar vår modell genom att åberopa
model_fn
. - input_fn () - Deserialiserar och förbereder förutsägelsesingången. I det här exemplet serialiseras vår begärandekropp först till JSON och skickas sedan till modellens slutpunkt. Därför i
input_fn()
, vi deserialiserar först det JSON-formaterade förfrågningsorganet och returnerar ingången som entorch.tensor
, som krävs för BERT. - predict_fn () – Utför förutsägelsen och returnerar resultatet.
Aktivera modellövervakningsdatainsamling
Vi aktiverar Modell Monitor datafångst för att spela in indata i Amazon enkel lagringstjänst (Amazon S3) hink för att referera till det senare:
Sedan skapar vi en SageMaker-slutpunkt i realtid med modellen som skapades i föregående steg:
Slutledning
Vi kör prediktion med prediktorobjektet som vi skapade i föregående steg. Vi ställer in JSON serializer och deserializer, som används av slutpunkten för slutledning:
Realtidsslutpunkten är konfigurerad för att fånga data från begäran, och svaret och data lagras i Amazon S3. Du kan se data som har fångats i det tidigare övervakningsschemat.
Skapa en baslinje
Vi använder en finjusterad BERT-modell för att extrahera meningsinbäddningsfunktioner från träningsdata. Vi använder dessa vektorer som funktionsindata av hög kvalitet för att jämföra cosinusavstånd eftersom BERT producerar dynamisk ordrepresentation med semantiskt sammanhang. Slutför följande steg för att få meningsinbäddning:
- Använd en BERT-tokenizer för att få token-ID:n för varje token (
input_id
) i inmatningsmeningen och masken för att indikera vilka element i inmatningssekvensen som är tokens kontra utfyllnadselement (attention_mask_id
). Vi använder BERTtokenizer.encode_plus
funktion för att få dessa värden för varje inmatad mening:
input_ids
och attention_mask_ids
skickas till modellen och hämtar nätverkets dolda tillstånd. De hidden_states
har fyra dimensioner i följande ordning:
- Lagernummer (BERT har 12 lager)
- Batchnummer (1 mening)
- Word token index
- Dolda enheter (768 funktioner)
- Använd de två sista dolda lagren för att få en enda vektor (satsinbäddning) genom att beräkna medelvärdet av alla inmatningstokens i meningen:
- Konvertera meningsinbäddningen som en NumPy-array och lagra den på en Amazon S3-plats som en baslinje som används av Model Monitor:
Utvärderingsmanus
Model Monitor tillhandahåller en förbyggd behållare med förmågan att analysera data som fångas från slutpunkter för datauppsättningar i tabellform. Om du vill ta med din egen container tillhandahåller Model Monitor förlängningspunkter som du kan använda. När du skapar en MonitoringSchedule
, Model Monitor startar slutligen bearbetningsjobb. Därför måste behållaren vara medveten om bearbetningsarbetskontraktet. Vi måste skapa ett utvärderingsskript som är kompatibelt med container kontraktsinsatser och utgångar.
Model Monitor använder utvärderingskod på alla prover som fångas under övervakningsschemat. För varje slutledningsdatapunkt beräknar vi meningsinbäddningen med samma logik som beskrivits tidigare. Cosinuslikhet används som ett avståndsmått för att mäta likheten mellan en slutledningsdatapunkt och meningsinbäddningar i baslinjen. Matematiskt mäter den cosinusvinkeln mellan två satsinbäddningsvektorer. En hög cosinuslikhetspoäng indikerar liknande meningsinbäddningar. Ett lägre cosinuslikhetspoäng indikerar datadrift. Vi beräknar ett genomsnitt av alla cosinuslikhetspoäng, och om det är mindre än tröskeln, fångas det i överträdelserapporten. Baserat på användningsfallet kan du använda andra avståndsmått som manhattan
or euclidean
för att mäta likheten mellan meningsinbäddningar.
Följande diagram visar hur vi använder SageMaker Model Monitoring för att etablera baslinje och detektera datadrift med hjälp av cosinusavståndslikhet.
Följande är koden för att beräkna överträdelserna; det fullständiga utvärderingsskriptet finns tillgängligt på GitHub:
Mät datadrift med Model Monitor
I det här avsnittet fokuserar vi på att mäta datadrift med Model Monitor. Modell Monitor förbyggda monitorer drivs av Deequ, som är ett bibliotek byggt ovanpå Apache Spark för att definiera enhetstester för data, som mäter datakvalitet i stora datamängder. Du behöver ingen kodning för att använda dessa förbyggda övervakningsfunktioner. Du har också flexibiliteten att övervaka modeller genom att koda för att tillhandahålla anpassad analys. Du kan samla in och granska alla mätvärden som sänds ut av Model Monitor i Amazon SageMaker Studio, så att du visuellt kan analysera din modellprestanda utan att skriva ytterligare kod.
I vissa scenarier, till exempel när data inte är tabellformade, är standardbearbetningsjobbet (drivet av Deequ) räcker inte eftersom det bara stöder tabelluppsättningar. De förbyggda monitorerna kanske inte räcker till för att generera sofistikerade mätvärden för att upptäcka drifter, och kan behöva ta med egna mätvärden. I nästa avsnitt beskriver vi inställningen för att få in dina mätvärden genom att bygga en anpassad behållare.
Bygg den anpassade Model Monitor-behållaren
Vi använder utvärderingsmanus från föregående avsnitt för att bygga en Docker-container och skjuta den till Amazon Elastic Container Registry (Amazon ECR):
När kundens Docker-behållare finns i Amazon ECR kan vi schemalägga ett modellövervakningsjobb och generera en överträdelserapport, som visas i nästa avsnitt.
Schemalägg ett modellövervakningsjobb
För att schemalägga ett modellövervakningsjobb skapar vi en instans av Model Monitor och i image_uri
, hänvisar vi till Docker-behållaren som vi skapade i föregående avsnitt:
Vi schemalägger övervakningsjobbet med hjälp av create_monitoring_schedule
API. Du kan schemalägga övervakningsjobbet på tim- eller daglig basis. Du konfigurerar jobbet med hjälp av destination
parameter, som visas i följande kod:
För att beskriva och lista övervakningsschemat och dess körningar kan du använda följande kommandon:
Rapport om dataavvikelse
När modellövervakningsjobbet är klart kan du navigera till S3-målvägen för att komma åt överträdelserapporterna. Denna rapport innehåller alla ingångar vars genomsnittliga cosinuspoäng (avg_cosine_score
) ligger under tröskeln som är konfigurerad som en miljövariabel THRESHOLD:0.5
i ModelMonitor exempel. Detta är en indikation på att data som observerats under slutledning glider bortom den fastställda baslinjen.
Följande kod visar den genererade överträdelserapporten:
Slutligen, baserat på denna observation, kan du konfigurera din modell för omskolning. Du kan också aktivera Amazon enkel meddelandetjänst (Amazon SNS) aviseringar för att skicka varningar när överträdelser inträffar.
Slutsats
Model Monitor gör att du kan upprätthålla den höga kvaliteten på dina modeller i produktionen. I det här inlägget lyfte vi fram utmaningarna med att övervaka datadrift på ostrukturerad data som text, och gav ett intuitivt tillvägagångssätt för att upptäcka datadrift med hjälp av ett anpassat övervakningsskript. Du hittar koden som är kopplad till inlägget nedan GitHub repository. Dessutom kan du anpassa lösningen för att använda andra avståndsmått som t.ex maximal medelavvikelse (MMD), ett icke-parametriskt avståndsmått för att beräkna marginalfördelning mellan käll- och målfördelning på det inbäddade utrymmet.
Om författarna
Vikram Elango är en AI/ML Specialist Solutions Architect på Amazon Web Services, baserad i Virginia, USA. Vikram hjälper finans- och försäkringsbranschens kunder med design, tankeledarskap att bygga och distribuera maskininlärningsapplikationer i stor skala. Han är för närvarande fokuserad på naturlig språkbehandling, ansvarsfull AI, slutledningsoptimering och skalning av ML över hela företaget. På fritiden tycker han om att resa, vandra, laga mat och campa med sin familj.
Raghu Ramesha är en ML Solutions Architect med Amazon SageMaker Service-teamet. Han fokuserar på att hjälpa kunder att migrera ML-produktionsarbetsbelastningar till SageMaker i stor skala. Han är specialiserad på domäner för maskininlärning, AI och datorseende och har en magisterexamen i datavetenskap från UT Dallas. På fritiden tycker han om att resa och fotografera.
Tony Chen är en maskininlärningslösningsarkitekt på Amazon Web Services, som hjälper kunder att designa skalbara och robusta maskininlärningsmöjligheter i molnet. Som tidigare datavetare och dataingenjör utnyttjar han sin erfarenhet för att hjälpa till att ta itu med några av de mest utmanande problemen som organisationer står inför med att operationalisera maskininlärning.
- '
- "
- 100
- 11
- 7
- Om oss
- tillgång
- Konto
- tvärs
- åtgärder
- Annat
- AI
- Alla
- redan
- Även
- amason
- Amazon SageMaker
- Amazon Web Services
- analys
- Apache
- Apache Spark
- tillämplig
- tillämpningar
- tillgänglig
- genomsnitt
- AWS
- Baslinje
- kropp
- SLUTRESULTAT
- Byggnad
- camping
- fall
- Orsak
- utmaningar
- byta
- chatbots
- klassificering
- cloud
- koda
- Kodning
- Samla
- komplex
- Compute
- Datavetenskap
- Datorsyn
- Behållare
- innehåller
- kontinuerlig
- kontrakt
- kokning
- Skapa
- Kunder
- Dallas
- datum
- Datakvalitet
- datavetare
- Designa
- Detektering
- utveckla
- olika
- diskutera
- avstånd
- Hamnarbetare
- Dockerbehållare
- inte
- domäner
- drivande
- under
- dynamisk
- Tidig
- råka ut för
- Slutpunkt
- ingenjör
- Engelska
- Företag
- Miljö
- etablerade
- exempel
- erfarenhet
- Ansikte
- familj
- Leverans
- Funktioner
- finansiella
- Förnamn
- Flexibilitet
- Fokus
- fokuserade
- formen
- Framåt
- Fri
- fungera
- generera
- GitHub
- har
- hjälpa
- hjälper
- Hög
- Markerad
- vandring
- Hem
- Hur ser din drömresa ut
- How To
- HTTPS
- bild
- genomföra
- med Esport
- Inklusive
- industrin
- informationen
- försäkring
- försäkringsbranschen
- IT
- Jobb
- Lediga jobb
- Etiketter
- språk
- Large
- senaste
- lanserar
- Ledarskap
- inlärning
- Nivå
- hävstångs
- Bibliotek
- lingvistik
- Lista
- litteraturen
- läsa in
- läge
- maskininlärning
- maskinöversättning
- mask
- mäta
- Metrics
- ML
- modell
- modeller
- övervakning
- mer
- Naturligt språk
- Naturlig språkbehandling
- nät
- nlp
- anmälan
- Erbjudanden
- beställa
- organisationer
- Övriga
- prestanda
- fotografi
- Precision
- förutsägelse
- Förutsägelser
- presentera
- Problem
- Produktion
- projektet
- ge
- ger
- Python
- pytorch
- kvalitet
- område
- realtid
- Verkligheten
- post
- rapport
- Rapport
- respons
- Resultat
- omskolning
- återgår
- vända
- översyn
- Körning
- rinnande
- sagemaker
- Skala
- skalning
- Vetenskap
- sDK
- Tjänster
- portion
- in
- skifta
- liknande
- Enkelt
- So
- Lösningar
- Utrymme
- utrymmen
- skräppost
- specialiserat
- Stater
- förvaring
- lagra
- Stöder
- System
- Målet
- testa
- Testning
- tester
- världen
- trodde
- tanke ledarskap
- tid
- token
- tokens
- topp
- brännaren
- trafik
- Utbildning
- Översättning
- USA
- utsikt
- Virginia
- Virtuell
- synlighet
- syn
- vänta
- webb
- webbservice
- wikipedia
- utan
- Arbete
- arbetsflöde
- världen
- skrivning