Begrip van natuurlijke taal wordt toegepast in een breed scala aan gebruiksscenario's, van chatbots en virtuele assistenten tot machinevertaling en tekstsamenvatting. Om ervoor te zorgen dat deze applicaties op een verwacht prestatieniveau draaien, is het belangrijk dat gegevens in de trainings- en productieomgevingen van dezelfde distributie zijn. Wanneer de gegevens die worden gebruikt voor inferentie (productiegegevens) verschillen van de gegevens die worden gebruikt tijdens modeltraining, komen we een fenomeen tegen dat bekend staat als gegevensdrift. Wanneer er gegevensdrift optreedt, is het model niet langer relevant voor de gegevens in productie en presteert het waarschijnlijk slechter dan verwacht. Het is belangrijk om de inferentiegegevens continu te bewaken en te vergelijken met de gegevens die tijdens de training worden gebruikt.
Je kunt gebruiken Amazon Sage Maker om snel machine learning (ML)-modellen op elke schaal te bouwen, trainen en implementeren. Als een proactieve maatregel tegen modeldegradatie kunt u gebruiken Amazon SageMaker-modelmonitor om de kwaliteit van uw ML-modellen continu in realtime te bewaken. Met Model Monitor kunt u ook waarschuwingen configureren om acties te melden en te activeren als er afwijkingen in de modelprestaties worden waargenomen. Vroegtijdige en proactieve detectie van deze afwijkingen stelt u in staat corrigerende maatregelen te nemen, zoals het verzamelen van nieuwe grondwaarheidstrainingsgegevens, het opnieuw trainen van modellen en het auditen van stroomopwaartse systemen, zonder dat u handmatig modellen hoeft te monitoren of extra tooling hoeft te bouwen.
Model Monitor biedt vier verschillende soorten bewakingsmogelijkheden om modelafwijkingen in realtime te detecteren en te beperken:
- Data kwaliteit - Helpt bij het detecteren van wijzigingen in gegevensschema's en statistische eigenschappen van onafhankelijke variabelen en waarschuwingen wanneer een afwijking wordt gedetecteerd.
- Model kwaliteit – Voor het in realtime bewaken van modelprestatiekenmerken, zoals nauwkeurigheid of precisie, kunt u met Model Monitor de Ground Truth-labels opnemen die uit uw toepassingen zijn verzameld. Model Monitor voegt automatisch de grondwaarheidsinformatie samen met voorspellingsgegevens om de prestatiestatistieken van het model te berekenen.
- Model vooringenomenheid –Model Monitor is geïntegreerd met Amazon SageMaker verduidelijken om de zichtbaarheid van mogelijke vooroordelen te verbeteren. Hoewel uw initiële gegevens of model mogelijk niet vertekend zijn, kunnen veranderingen in de wereld ertoe leiden dat er in de loop van de tijd vooroordelen ontstaan in een model dat al is getraind.
- Model uitlegbaarheid - Driftdetectie waarschuwt u wanneer er een verandering optreedt in het relatieve belang van kenmerkattributies.
In dit bericht bespreken we de typen gegevenskwaliteitsdrift die van toepassing zijn op tekstgegevens. We presenteren ook een benadering voor het detecteren van gegevensdrift in tekstgegevens met behulp van Model Monitor.
Datadrift in NLP
Datadrift kan worden ingedeeld in drie categorieën, afhankelijk van of de distributieverschuiving plaatsvindt aan de input- of outputzijde, of dat de relatie tussen de input en de output is veranderd.
Covariabele verschuiving
In een covariabele verschuiving, verandert de verdeling van inputs in de loop van de tijd, maar de voorwaardelijke verdeling P(y|x) verandert niet. Dit type drift wordt covariate shift genoemd omdat het probleem ontstaat door een verschuiving in de verdeling van de covariaten (kenmerken). In een classificatiemodel voor e-mailspam kan de distributie van trainingsgegevens (e-mailcorpora) bijvoorbeeld afwijken van de distributie van gegevens tijdens het scoren.
Labelverschuiving
Terwijl covariate shift zich richt op veranderingen in de functiedistributie, label verschuiven richt zich op veranderingen in de verdeling van de klassenvariabele. Dit type verschuiving is in wezen het omgekeerde van covariate verschuiving. Een intuïtieve manier om erover na te denken, zou kunnen zijn om een ongebalanceerde dataset te overwegen. Als de spam/niet-spam-ratio van e-mails in onze trainingsset 50% is, maar in werkelijkheid 10% van onze e-mails niet-spam is, dan is de doellabelverdeling verschoven.
Conceptverschuiving
Conceptverschuiving verschilt van covariabele en labelverschuiving doordat het niet gerelateerd is aan de gegevensdistributie of de klassendistributie, maar in plaats daarvan gerelateerd is aan de relatie tussen de twee variabelen. E-mailspammers gebruiken bijvoorbeeld vaak verschillende concepten om door de spamfiltermodellen te komen, en het concept van e-mails dat tijdens de training wordt gebruikt, kan in de loop van de tijd veranderen.
Nu we de verschillende soorten gegevensdrift begrijpen, gaan we kijken hoe we Model Monitor kunnen gebruiken om covariabele verschuivingen in tekstgegevens te detecteren.
Overzicht oplossingen
In tegenstelling tot gegevens in tabelvorm, die gestructureerd en begrensd zijn, zijn tekstuele gegevens complexe, hoogdimensionale en vrije vorm. Om drift in NLP efficiënt te detecteren, werken we met inbeddingen, Dit zijn laagdimensionale weergaven van de tekst. U kunt inbeddingen verkrijgen met behulp van verschillende taalmodellen zoals Word2Vec en op transformator gebaseerde modellen zoals BERT. Deze modellen projecteren hoog-dimensionale gegevens in laag-dimensionale ruimtes met behoud van de semantische informatie van de tekst. De resultaten zijn dichte en contextueel betekenisvolle vectoren, die kunnen worden gebruikt voor verschillende stroomafwaartse taken, waaronder het monitoren van datadrift.
In onze oplossing gebruiken we inbeddingen om de covariabele verschuiving van Engelse zinnen te detecteren. We gebruiken Model Monitor om continue monitoring mogelijk te maken voor een tekstclassificatie die wordt ingezet in een productieomgeving. Onze aanpak bestaat uit de volgende stappen:
- Verfijn een BERT-model met SageMaker.
- Implementeer een verfijnde BERT-classificatie als een real-time eindpunt met gegevens vastleggen ingeschakeld.
- Maak een basislijngegevensset die bestaat uit een voorbeeld van de zinnen die worden gebruikt om de BERT-classificatie te trainen.
- Maak een aangepaste SageMaker-bewakingstaak om de cosinusovereenkomst te berekenen tussen de gegevens die tijdens de productie zijn vastgelegd en de basisgegevensset.
Het volgende diagram illustreert de oplossingsworkflow:
Fine-tunen van een BERT-model
In dit bericht gebruiken we Corpus van taalkundige aanvaardbaarheid (CoLA), een dataset van 10,657 Engelse zinnen die als grammaticaal of ongrammaticaal zijn bestempeld uit gepubliceerde taalkundige literatuur. We gebruiken SageMaker-training om een BERT-model te verfijnen met behulp van de CoLa-dataset door een PyTorch-schatterklasse te definiëren. Zie voor meer informatie over het gebruik van deze SDK met PyTorch Gebruik PyTorch met de SageMaker Python SDK. Bellen naar de fit()
methode van de schatter start de trainingstaak:
Implementeer het model
Nadat we ons model hebben getraind, hosten we het op een SageMaker-eindpunt. Om ervoor te zorgen dat het eindpunt het model laadt en voorspellingen doet, implementeren we een aantal methoden train_deploy.py:
- model_fn () – Laadt het opgeslagen model en retourneert een modelobject dat kan worden gebruikt voor modelweergave. De SageMaker PyTorch-modelserver laadt ons model door het aanroepen van
model_fn
. - input_fn () - Deserialiseert en bereidt de voorspellingsinvoer voor. In dit voorbeeld wordt onze aanvraagtekst eerst geserialiseerd naar JSON en vervolgens verzonden naar het eindpunt van de modelserver. Daarom, in
input_fn()
, deserialiseren we eerst de JSON-geformatteerde aanvraagtekst en retourneren we de invoer als eentorch.tensor
, zoals vereist voor BERT. - predict_fn () – Voert de voorspelling uit en retourneert het resultaat.
Schakel Model Monitor-gegevensvastlegging in
We maken het mogelijk Model Monitor gegevensvastlegging om de ingevoerde gegevens op te nemen in de Amazon eenvoudige opslagservice (Amazon S3) bucket om er later naar te verwijzen:
Vervolgens maken we een real-time SageMaker-eindpunt met het model dat in de vorige stap is gemaakt:
Gevolgtrekking
We voeren voorspelling uit met behulp van het predictor-object dat we in de vorige stap hebben gemaakt. We stellen JSON-serializer en deserializer in, die worden gebruikt door het inferentie-eindpunt:
Het real-time eindpunt is geconfigureerd om gegevens van het verzoek vast te leggen, en het antwoord en de gegevens worden opgeslagen in Amazon S3. U kunt de gegevens bekijken die zijn vastgelegd in het vorige bewakingsschema.
Maak een basislijn
We gebruiken een verfijnd BERT-model om functies voor het insluiten van zinnen uit de trainingsgegevens te extraheren. We gebruiken deze vectoren als hoogwaardige feature-invoer voor het vergelijken van de cosinusafstand, omdat BERT dynamische woordrepresentatie met semantische context produceert. Voer de volgende stappen uit om zinsinsluiting te krijgen:
- Gebruik een BERT-tokenizer om token-ID's op te halen voor elk token (
input_id
) in de invoerzin en het masker om aan te geven welke elementen in de invoerreeks tokens versus opvulelementen (attention_mask_id
). Wij gebruiken de BERTtokenizer.encode_plus
functie om deze waarden voor elke invoerzin te krijgen:
input_ids
en attention_mask_ids
worden doorgegeven aan het model en halen de verborgen toestanden van het netwerk op. De hidden_states
heeft vier dimensies in de volgende volgorde:
- Laagnummer (BERT heeft 12 lagen)
- Batchnummer (1 zin)
- Word-tokenindexen
- Verborgen eenheden (768 kenmerken)
- Gebruik de laatste twee verborgen lagen om een enkele vector (inbedding van een zin) te krijgen door het gemiddelde van alle invoertokens in de zin te berekenen:
- Converteer de inbedding van de zin als een NumPy-array en sla deze op een Amazon S3-locatie op als basislijn die wordt gebruikt door Model Monitor:
Evaluatie script
Model Monitor biedt een kant-en-klare container met de mogelijkheid om de gegevens die zijn vastgelegd van eindpunten te analyseren voor datasets in tabelvorm. Als u uw eigen container wilt meenemen, biedt Model Monitor uitbreidingspunten die u kunt gebruiken. Wanneer u een MonitoringSchedule
, begint Model Monitor uiteindelijk met het verwerken van taken. Daarom moet de container op de hoogte zijn van het contract voor de verwerkingstaak. We moeten een evaluatiescript maken dat compatibel is met container contract ingangen en uitgangen.
Model Monitor gebruikt evaluatiecode voor alle samples die tijdens het monitoringschema worden vastgelegd. Voor elk inferentiegegevenspunt berekenen we de zinsinbedding met behulp van dezelfde logica die eerder is beschreven. Cosinusovereenkomst wordt gebruikt als afstandsmetriek om de overeenkomst van een inferentiegegevenspunt en zinsinsluitingen in de basislijn te meten. Wiskundig meet het de cosinushoek tussen twee zinsinbeddingsvectoren. Een hoge cosinusovereenkomstscore duidt op vergelijkbare inbedding van zinnen. Een lagere cosinusovereenkomstscore duidt op gegevensdrift. We berekenen een gemiddelde van alle cosinusgelijkenisscores, en als het lager is dan de drempel, wordt het vastgelegd in het overtredingsrapport. Op basis van de use case kunt u andere afstandsstatistieken gebruiken, zoals manhattan
or euclidean
om de gelijkenis van zinsinbeddingen te meten.
Het volgende diagram laat zien hoe we SageMaker Model Monitoring gebruiken om een basislijn vast te stellen en gegevensdrift te detecteren met behulp van cosinusafstandsovereenkomst.
Het volgende is de code voor het berekenen van de overtredingen; het volledige evaluatiescript is beschikbaar op GitHub:
Meet datadrift met behulp van Model Monitor
In deze sectie concentreren we ons op het meten van gegevensdrift met behulp van Model Monitor. Vooraf gebouwde monitoren van Model Monitor worden aangedreven door Deequ, een bibliotheek die bovenop Apache Spark is gebouwd voor het definiëren van eenheidstests voor gegevens, die de gegevenskwaliteit in grote gegevenssets meten. U hoeft niet te coderen om deze vooraf gebouwde bewakingsmogelijkheden te gebruiken. U hebt ook de flexibiliteit om modellen te monitoren door middel van codering om aangepaste analyses te bieden. U kunt alle statistieken van Model Monitor verzamelen en bekijken in Amazon SageMaker Studio, zodat u uw modelprestaties visueel kunt analyseren zonder extra code te schrijven.
In bepaalde scenario's, bijvoorbeeld wanneer de gegevens niet in tabelvorm zijn, wordt de standaardverwerkingstaak (mogelijk gemaakt door Deequ) is niet voldoende omdat het alleen datasets in tabelvorm ondersteunt. De vooraf gebouwde monitors zijn mogelijk niet voldoende om geavanceerde statistieken te genereren om driften te detecteren, en het kan nodig zijn om uw eigen statistieken mee te nemen. In de volgende secties beschrijven we de instellingen om uw statistieken binnen te halen door een aangepaste container te bouwen.
Bouw de aangepaste Model Monitor-container
We maken gebruik van de evaluatiescript uit de vorige sectie om een Docker-container te bouwen en naar toe te pushen Amazon Elastic Container-register (Amazone ECR):
Wanneer de Docker-container van de klant zich in Amazon ECR bevindt, kunnen we een Model Monitoring-taak plannen en een schendingsrapport genereren, zoals in de volgende secties wordt gedemonstreerd.
Plan een modelbewakingstaak
Om een modelbewakingstaak te plannen, maken we een instantie van Modelmonitor en in de image_uri
, verwijzen we naar de Docker-container die we in de vorige sectie hebben gemaakt:
We plannen de monitoringtaak met behulp van de create_monitoring_schedule
API. U kunt de bewakingstaak op uur- of dagbasis plannen. U configureert de taak met behulp van de destination
parameter, zoals weergegeven in de volgende code:
Om het bewakingsschema en de uitvoering ervan te beschrijven en op te sommen, kunt u de volgende opdrachten gebruiken:
Rapport over schending van datadrift
Wanneer de modelbewakingstaak is voltooid, kunt u naar het bestemmings-S3-pad navigeren om toegang te krijgen tot de schendingsrapporten. Dit rapport bevat alle ingangen waarvan de gemiddelde cosinusscore (avg_cosine_score
) ligt onder de drempel die is geconfigureerd als omgevingsvariabele THRESHOLD:0.5
in de ModelMonitor voorbeeld. Dit is een indicatie dat de tijdens de inferentie waargenomen gegevens voorbij de vastgestelde basislijn drijven.
De volgende code toont het gegenereerde schendingsrapport:
Ten slotte kunt u op basis van deze waarneming uw model configureren voor omscholing. U kunt ook inschakelen Amazon eenvoudige meldingsservice (Amazon SNS) meldingen om waarschuwingen te sturen wanneer er schendingen plaatsvinden.
Conclusie
Model Monitor stelt u in staat om de hoge kwaliteit van uw modellen in productie te houden. In dit bericht hebben we de uitdagingen belicht met het monitoren van datadrift op ongestructureerde data zoals tekst, en hebben we een intuïtieve benadering geboden om datadrift te detecteren met behulp van een aangepast monitoringscript. Hieronder vindt u de code die bij het bericht hoort GitHub-repository. Bovendien kunt u de oplossing aanpassen om andere afstandsstatistieken te gebruiken, zoals maximale gemiddelde discrepantie (MMD), een niet-parametrische afstandsmetriek om de marginale distributie tussen bron- en doeldistributie op de ingebedde ruimte te berekenen.
Over de auteurs
Vikram Elango is een AI/ML Specialist Solutions Architect bij Amazon Web Services, gevestigd in Virginia, VS. Vikram helpt klanten uit de financiële en verzekeringssector met ontwerp, thought leadership om machine learning-applicaties op schaal te bouwen en te implementeren. Hij richt zich momenteel op natuurlijke taalverwerking, verantwoorde AI, inferentie-optimalisatie en het opschalen van ML in de hele onderneming. In zijn vrije tijd houdt hij van reizen, wandelen, koken en kamperen met zijn gezin.
Raghu Ramesha is een ML Solutions Architect bij het Amazon SageMaker Service-team. Hij richt zich op het helpen van klanten bij het op grote schaal migreren van ML-productieworkloads naar SageMaker. Hij is gespecialiseerd in machine learning, AI en computervisie, en heeft een masterdiploma in Computer Science van UT Dallas. In zijn vrije tijd houdt hij van reizen en fotografie.
Tony Chen is een Machine Learning Solutions Architect bij Amazon Web Services, die klanten helpt bij het ontwerpen van schaalbare en robuuste machine learning-mogelijkheden in de cloud. Als voormalig datawetenschapper en data-engineer gebruikt hij zijn ervaring om enkele van de meest uitdagende problemen aan te pakken waarmee organisaties worden geconfronteerd bij het operationaliseren van machine learning.
- '
- "
- 100
- 11
- 7
- Over
- toegang
- Account
- over
- acties
- Extra
- AI
- Alles
- al
- Hoewel
- Amazone
- Amazon Sage Maker
- Amazon Web Services
- analyse
- apache
- Apache Spark
- toepasselijk
- toepassingen
- Beschikbaar
- gemiddelde
- AWS
- Baseline
- lichaam
- bouw
- Gebouw
- camping
- gevallen
- Veroorzaken
- uitdagingen
- verandering
- chatbots
- classificatie
- Cloud
- code
- codering
- Het verzamelen van
- complex
- Berekenen
- Computer Science
- Computer visie
- Containers
- bevat
- doorlopend
- contract
- koken
- Wij creëren
- Klanten
- Dallas
- gegevens
- data kwaliteit
- data scientist
- Design
- Opsporing
- ontwikkelen
- anders
- bespreken
- afstand
- havenarbeider
- Docker-container
- Nee
- domeinen
- aandrijving
- gedurende
- dynamisch
- Vroeg
- ontmoeting
- Endpoint
- ingenieur
- Engels
- Enterprise
- Milieu
- gevestigd
- voorbeeld
- ervaring
- Gezicht
- familie
- Kenmerk
- Voordelen
- financieel
- Voornaam*
- Flexibiliteit
- Focus
- gericht
- formulier
- Naar voren
- Gratis
- functie
- voortbrengen
- GitHub
- met
- hulp
- helpt
- Hoge
- Gemarkeerd
- wandelen
- Home
- Hoe
- How To
- HTTPS
- beeld
- uitvoeren
- belangrijk
- Inclusief
- -industrie
- informatie
- verzekering
- verzekeringsbranche
- IT
- Jobomschrijving:
- Vacatures
- labels
- taal
- Groot
- laatste
- lanceert
- Leadership
- leren
- Niveau
- hefbomen
- Bibliotheek
- taalwetenschap
- Lijst
- literatuur
- laden
- plaats
- machine learning
- machine vertaling
- maskeren
- maatregel
- Metriek
- ML
- model
- modellen
- Grensverkeer
- meer
- Natuurlijke taal
- Natural Language Processing
- netwerk
- nlp
- notificatie
- Aanbod
- bestellen
- organisaties
- Overige
- prestatie
- fotografie
- precisie
- voorspelling
- Voorspellingen
- presenteren
- probleem
- productie
- project
- zorgen voor
- biedt
- Python
- pytorch
- kwaliteit
- reeks
- real-time
- Realiteit
- record
- verslag
- Rapporten
- antwoord
- Resultaten
- heropleiding
- Retourneren
- omkeren
- beoordelen
- lopen
- lopend
- sagemaker
- Scale
- scaling
- Wetenschap
- sdk
- Diensten
- serveer-
- reeks
- verschuiving
- gelijk
- Eenvoudig
- So
- Oplossingen
- Tussenruimte
- ruimten
- spam
- specialiseert
- Staten
- mediaopslag
- shop
- steunen
- Systems
- doelwit
- proef
- Testen
- testen
- de wereld
- gedachte
- thought leadership
- niet de tijd of
- teken
- tokens
- top
- fakkel
- verkeer
- Trainingen
- Vertaling
- USA
- Bekijk
- Virginia
- Virtueel
- zichtbaarheid
- visie
- wachten
- web
- webservices
- Wikipedia
- zonder
- Mijn werk
- workflow
- wereld
- het schrijven van