Het identificeren van geparafraseerde tekst heeft in veel gevallen zakelijke waarde. Door bijvoorbeeld parafrasen van zinnen te identificeren, kan een systeem voor het samenvatten van tekst overbodige informatie verwijderen. Een andere toepassing is het identificeren van geplagieerde documenten. In dit bericht finetunen we een Gezicht knuffelen transformator aan Amazon Sage Maker om geparafraseerde zinparen in een paar stappen te identificeren.
Een echt robuust model kan geparafraseerde tekst identificeren wanneer de gebruikte taal totaal anders kan zijn, en ook verschillen identificeren wanneer de gebruikte taal een hoge lexicale overlap heeft. In deze post richten we ons op het laatste aspect. In het bijzonder kijken we of we een model kunnen trainen dat het verschil kan identificeren tussen twee zinnen met een hoge lexicale overlap en zeer verschillende of tegengestelde betekenissen. De volgende zinnen hebben bijvoorbeeld exact dezelfde woorden maar een tegengestelde betekenis:
- Ik nam een โโvlucht van New York naar Parijs
- Ik nam een โโvlucht van Parijs naar New York
Overzicht oplossingen
We leiden u door de volgende stappen op hoog niveau:
- Stel de omgeving in.
- Bereid de gegevens voor.
- Tokenize de dataset.
- Verfijn het model.
- Implementeer het model en voer gevolgtrekkingen uit.
- Evalueer de prestaties van het model.
Als u het instellen van de omgeving wilt overslaan, kunt u de volgende notebook gebruiken op: GitHub en voer de code uit in SageMaker.
Hugging Face en AWS kondigden eerder in 2022 een samenwerking aan die het nog gemakkelijker maakt om Hugging Face-modellen op SageMaker te trainen. Deze functionaliteit is beschikbaar door de ontwikkeling van Hugging Face AWS Deep Learning Containers (DLC's). Deze containers omvatten Hugging Face Transformers, Tokenizers en de Datasets-bibliotheek, waardoor we deze bronnen kunnen gebruiken voor trainings- en inferentietaken. Voor een lijst van de beschikbare DLC-afbeeldingen, zie Beschikbare Deep Learning Containers-afbeeldingen. Ze worden onderhouden en regelmatig bijgewerkt met beveiligingspatches. Je kunt veel voorbeelden vinden van hoe je Hugging Face-modellen kunt trainen met deze DLC's en de Knuffelend gezicht Python SDK in de volgende GitHub repo.
De PAWS-dataset
Het besef van het gebrek aan efficiรซnte datasets met zinsparen die een hoge lexicale overlap vertonen zonder parafraseren, het origineel PAWS dataset die in 2019 werd uitgebracht, was bedoeld om de natuurlijke taalverwerkingsgemeenschap (NLP) een nieuwe bron te bieden voor het trainen en evalueren van parafrasedetectiemodellen. PAWS-zinparen worden in twee stappen gegenereerd met behulp van Wikipedia en Quora-vragenparen (QQP) gegevensset. Een taalmodel verwisselt eerst woorden in een zinspaar met dezelfde Bag of Words (BOW) om een โโzinspaar te genereren. Een stap terugvertaling genereert dan parafrasen met een hoge BOW-overlap maar met een andere woordvolgorde. De uiteindelijke PAWS-dataset bevat in totaal 108,000 mens-gelabelde en 656,000 luidruchtig gelabelde paren.
In dit bericht gebruiken we de PAWS-Wiki gelabeld (finale) dataset van Hugging Face. Hugging Face heeft de gegevenssplitsing al voor ons uitgevoerd, wat resulteert in 49,000 zinsparen in de trainingsdataset en 8,000 zinparen elk voor de validatie- en testdatasets. In het volgende voorbeeld worden twee voorbeelden van zinnenparen uit de trainingsgegevensset weergegeven. Een label van 1 geeft aan dat de twee zinnen parafrasen van elkaar zijn.
Zin 1 | Zin 2 | label |
Hoewel uitwisselbaar, zijn de carrosseriedelen op de 2 auto's niet vergelijkbaar. | Hoewel vergelijkbaar, zijn de lichaamsdelen niet uitwisselbaar op de 2 auto's. | 0 |
Katz werd in 1947 in Zweden geboren en verhuisde op 1-jarige leeftijd naar New York City. | Katz werd geboren in 1947 in Zweden en verhuisde op รฉรฉnjarige leeftijd naar New York. | 1 |
Voorwaarden
U moet aan de volgende vereisten voldoen:
- Meld u aan voor een AWS-account als u er nog geen heeft. Voor meer informatie, zie Vereisten voor Amazon SageMaker instellen.
- Aan de slag met SageMaker-notebookinstanties.
- Rechts instellen AWS Identiteits- en toegangsbeheer (IAM)-machtigingen. Voor meer informatie, zie SageMaker-rollen.
Stel de omgeving in
Voordat we beginnen met het onderzoeken en voorbereiden van onze gegevens voor het verfijnen van modellen, moeten we onze omgeving instellen. Laten we beginnen met het opstarten van een SageMaker-notebookinstantie. Kies een AWS-regio in uw AWS-account en volg de instructies om een SageMaker-notebookinstantie maken. Het kan een paar minuten duren voordat de notebookinstantie is opgestart.
Wanneer de notebook-instantie actief is, kiest u: conda_pytorch_p38
als uw kerneltype. Om de Hugging Face-dataset te gebruiken, moeten we eerst de Hugging Face-bibliotheek installeren en importeren:
Laten we vervolgens een SageMaker-sessie opzetten. We gebruiken de standaard Amazon eenvoudige opslagservice (Amazon S3) bucket die is gekoppeld aan de SageMaker-sessie om de PAWS-dataset en modelartefacten op te slaan:
Bereid de gegevens voor
We kunnen de Hugging Face-versie van de PAWS-dataset laden met zijn load_dataset()
opdracht. Deze aanroep downloadt en importeert het PAWS Python-verwerkingsscript uit de Hugging Face GitHub-repository, die vervolgens de PAWS-dataset downloadt van de originele URL die in het script is opgeslagen en de gegevens in de cache opslaat als een Arrow-tabel op de schijf. Zie de volgende code:
Laten we, voordat we beginnen met het verfijnen van ons vooraf getrainde BERT-model, eens kijken naar de distributie van onze doelklassen. Voor onze use case heeft de PAWS-dataset binaire labels (0 geeft aan dat het zinspaar geen parafrase is en 1 geeft aan dat dit wel het geval is). Laten we een kolomdiagram maken om de klassenverdeling te bekijken, zoals weergegeven in de volgende code. We zien dat er een klein probleem is met de klassenonbalans in onze trainingsset (56% negatieve monsters versus 44% positieve monsters). De onbalans is echter klein genoeg om het gebruik van technieken voor het verminderen van klassenonbalans te vermijden.
Tokeniseer de dataset
Voordat we kunnen beginnen met finetunen, moeten we onze dataset tokeniseren. Laten we als uitgangspunt stellen dat we de willen verfijnen en evalueren roberta-base
transformator. Wij selecteerden roberta-base
omdat het een transformator voor algemeen gebruik is die vooraf is getraind op een groot aantal Engelse gegevens en die vaak hoge prestaties heeft geleverd bij een verscheidenheid aan NLP-taken. Het model werd oorspronkelijk in de krant geรฏntroduceerd RoBERTa: een robuust geoptimaliseerde BERT-vooropleiding.
We voeren tokenisatie uit op de zinnen met a roberta-base
tokenizer van Hugging Face, die byte-niveau Byte Pair Encoding gebruikt om het document in tokens te splitsen. Raadpleeg voor meer informatie over de RoBERTa-tokenizer: RobertaTokenizer. Omdat onze invoer zinparen zijn, moeten we beide zinnen tegelijkertijd tokeniseren. Omdat de meeste BERT-modellen vereisen dat de invoer een vaste tokenized invoerlengte heeft, stellen we de volgende parameters in: max_len=128
en truncation=True
. Zie de volgende code:
De laatste voorbewerkingsstap voor het verfijnen van ons BERT-model is om de tokenized trein- en validatiegegevenssets om te zetten in PyTorch-tensoren en deze te uploaden naar onze S3-bucket:
Verfijn het model
Nu we klaar zijn met de gegevensvoorbereiding, zijn we klaar om onze vooraf getrainde roberta-base
model op de parafrase identificatie taak. We kunnen de klasse SageMaker Hugging Face Estimator gebruiken om het verfijningsproces in twee stappen te starten. De eerste stap is het specificeren van de trainingshyperparameters en metrische definities. De variabele metriekdefinities vertelt de Hugging Face Estimator welke soorten metrieken moeten worden geรซxtraheerd uit de trainingslogboeken van het model. Hier zijn we vooral geรฏnteresseerd in het extraheren van validatiesetstatistieken in elk trainingstijdperk.
De tweede stap is om de Hugging Face Estimator te instantiรซren en het verfijningsproces te starten met de .fit()
methode:
Het fine-tuning proces duurt ongeveer 30 minuten met behulp van de gespecificeerde hyperparameters.
Het model implementeren en gevolgtrekking uitvoeren
SageMaker biedt meerdere implementatie-opties, afhankelijk van uw gebruik. Voor persistente, realtime eindpunten die รฉรฉn voorspelling tegelijk doen, raden we aan om SageMaker realtime hostingdiensten. Als u workloads heeft met inactieve perioden tussen verkeersspurts en koude starts kan verdragen, raden we u aan om: Serverloze inferentie. Serverloze eindpunten starten automatisch computerbronnen en schalen deze in en uit, afhankelijk van het verkeer, waardoor het niet meer nodig is om instantietypen te kiezen of schaalbeleid te beheren. We laten zien hoe we ons verfijnde Hugging Face-model kunnen implementeren op zowel een realtime inferentie-eindpunt als een serverloos inferentie-eindpunt.
Implementeren naar een realtime inferentie-eindpunt
U kunt een trainingsobject implementeren op realtime inferentiehosting binnen SageMaker met behulp van de .deploy()
methode. Voor een volledige lijst van de geaccepteerde parameters, zie: Knuffelend gezichtsmodel. Laten we om te beginnen het model in รฉรฉn instantie implementeren door de volgende parameters door te geven: initial_instance_count
, instance_type
en endpoint_name
. Zie de volgende code:
Het duurt een paar minuten voordat het model is geรฏmplementeerd. Nadat het model is geรฏmplementeerd, kunnen we voorbeeldrecords van de ongeziene testgegevensset naar het eindpunt verzenden voor gevolgtrekking.
Implementeren op een serverloos inferentie-eindpunt
Om ons trainingsobject op een serverloos eindpunt te implementeren, moeten we eerst een serverloos configuratiebestand specificeren met: memory_size_in_mb
en max_concurrency
argumenten:
memory_size_in_mb
definieert de totale RAM-grootte van uw serverloze eindpunt; de minimale RAM-grootte is 1024 MB (1 GB) en kan worden opgeschaald tot 6144 MB (6 GB). Over het algemeen moet u ernaar streven een geheugengrootte te kiezen die minstens zo groot is als uw modelgrootte. max_concurrency
definieert het quotum voor hoeveel gelijktijdige aanroepen tegelijkertijd kunnen worden verwerkt (maximaal 50 gelijktijdige aanroepen) voor een enkel eindpunt.
We moeten ook de Hugging Face-inferentie-afbeeldings-URI aanleveren, die u kunt ophalen met de volgende code:
Nu we het serverloze configuratiebestand hebben, kunnen we een serverloos eindpunt maken op dezelfde manier als ons realtime inferentie-eindpunt, met behulp van de .deploy()
methode:
Het eindpunt zou binnen enkele minuten moeten worden gemaakt.
Modelinferentie uitvoeren
Om voorspellingen te doen, moeten we het zinspaar maken door de toe te voegen [CLS]
en [SEP]
speciale tokens en verzendt vervolgens de invoer naar de modeleindpunten. De syntaxis voor realtime gevolgtrekking en serverloze gevolgtrekking is hetzelfde:
In de volgende voorbeelden kunnen we zien dat het model in staat is om correct te classificeren of het invoerzinpaar geparafraseerde zinnen bevat.
Het volgende is een voorbeeld van een realtime gevolgtrekking.
Het volgende is een voorbeeld van Serverless Inference.
Modelprestaties evalueren
Laten we, om het model te evalueren, de voorgaande code uitbreiden en alle 8,000 ongeziene testrecords indienen bij het realtime eindpunt:
Vervolgens kunnen we een classificatierapport maken met behulp van de geรซxtraheerde voorspellingen:
We krijgen de volgende testscores.
Dat kunnen we waarnemen roberta-base
heeft een gecombineerde macrogemiddelde F1-score van 92% en presteert iets beter in het detecteren van zinnen die parafraseren zijn. De roberta-base
model presteert goed, maar het is een goede gewoonte om de modelprestaties te berekenen met behulp van ten minste รฉรฉn ander model.
De volgende tabel vergelijkt roberta-base
prestatieresultaten op dezelfde testset tegen een andere nauwkeurig afgestelde transformator genaamd paraphrase-mpnet-base-v2
, een zinstransformator die speciaal voor de parafrase-identificatietaak is voorgetraind. Beide modellen werden getraind op een ml.p3.8xlarge instantie.
De resultaten laten zien dat roberta-base
heeft een 1% hogere F1-score met zeer vergelijkbare trainings- en inferentietijden met behulp van realtime inferentiehosting op SageMaker. Het prestatieverschil tussen de modellen is relatief klein, maar roberta-base
is uiteindelijk de winnaar omdat het marginaal betere prestatiestatistieken en bijna identieke trainings- en inferentietijden heeft.
precisie | Terugroepen | F1-score | Trainingstijd (factureerbaar) | Inferentietijd (volledige testset) | |
Roberta-basis | 0.92 | 0.93 | 0.92 | 18 minuten | 2 minuten |
parafraseren-mpnet- basis-v2 |
0.92 | 0.91 | 0.91 | 17 minuten | 2 minuten |
Opruimen
Wanneer u klaar bent met het gebruik van de modeleindpunten, kunt u ze verwijderen om toekomstige kosten te voorkomen:
Conclusie
In dit bericht hebben we besproken hoe je snel een parafrase-identificatiemodel kunt bouwen met behulp van Hugging Face-transformatoren op SageMaker. We hebben twee voorgetrainde transformatoren gefinetuned, roberta-base
en paraphrase-mpnet-base-v2
, met behulp van de PAWS-dataset (die zinparen met een hoge lexicale overlap bevat). We hebben de voordelen gedemonstreerd en besproken van realtime inferentie versus serverloze inferentie-implementatie, waarbij de laatste een nieuwe functie is die zich richt op piekerige workloads en de noodzaak elimineert om schaalbeleid te beheren. Op een ongeziene testset met 8,000 records hebben we aangetoond dat beide modellen een F1-score van meer dan 90% behaalden.
Overweeg het volgende om deze oplossing uit te breiden:
- Probeer te finetunen met uw eigen aangepaste dataset. Als u niet over voldoende trainingslabels beschikt, kunt u de prestaties evalueren van een verfijnd model zoals dat in dit bericht wordt gedemonstreerd op een aangepaste testgegevensset.
- Integreer dit verfijnde model in een downstream-toepassing die informatie vereist over de vraag of twee zinnen (of tekstblokken) parafrasen van elkaar zijn.
Gelukkig bouwen!
Over de auteurs
Bala Krishnamoorthy is een datawetenschapper bij AWS Professional Services, waar hij graag machine learning toepast om zakelijke problemen van klanten op te lossen. Hij is gespecialiseerd in use-cases voor natuurlijke taalverwerking en heeft met klanten in sectoren als software, financiรซn en gezondheidszorg gewerkt. In zijn vrije tijd vindt hij het leuk om nieuwe gerechten uit te proberen, komedies en documentaires te kijken, te sporten bij Orange Theory en op het water te zijn (paddle-boarden, snorkelen en hopelijk binnenkort duiken).
Ivan Cui is een datawetenschapper bij AWS Professional Services, waar hij klanten helpt bij het bouwen en implementeren van oplossingen met behulp van machine learning op AWS. Hij heeft met klanten in diverse sectoren gewerkt, waaronder software, financiรซn, farmacie en gezondheidszorg. In zijn vrije tijd houdt hij van lezen, tijd doorbrengen met zijn gezin en het maximaliseren van zijn aandelenportefeuille.
- Coinsmart. Europa's beste Bitcoin- en crypto-uitwisseling.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. GRATIS TOEGANG.
- CryptoHawk. Altcoin-radar. Gratis proefversie.
- Bron: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- Over
- toegang
- Account
- bereikt
- over
- Alles
- al
- Amazone
- aangekondigd
- Nog een
- Aanvraag
- Het toepassen van
- ongeveer
- argumenten
- Beschikbaar
- AWS
- wezen
- betekent
- lichaam
- grens
- bouw
- bedrijfsdeskundigen
- Bellen
- in staat
- auto's
- gevallen
- lasten
- Kies
- Plaats
- klasse
- classificatie
- code
- Kolom
- gecombineerde
- gemeenschap
- compleet
- Berekenen
- vertrouwen
- containers
- bevat
- kon
- en je merk te creรซren
- aangemaakt
- gewoonte
- klant
- Klanten
- gegevens
- data scientist
- tonen
- gedemonstreerd
- Afhankelijk
- implementeren
- ingezet
- inzet
- gegevens
- Opsporing
- Ontwikkeling
- anders
- distributie
- documentaires
- documenten
- downloads
- rit
- doeltreffend
- Endpoint
- Engels
- Milieu
- oprichten
- schatten
- voorbeeld
- tentoonstellen
- Uitvouwen
- Gezicht
- familie
- Kenmerk
- financiรซn
- Voornaam*
- vlucht
- Focus
- volgen
- volgend
- eten
- Gratis
- vol
- functie
- functionaliteit
- toekomst
- voor algemeen gebruik
- algemeen
- voortbrengen
- GitHub
- goed
- meer
- gezondheidszorg
- Hoogte
- helpt
- hier
- Hoge
- hoger
- Hosting
- Hoe
- How To
- HTTPS
- Identificatie
- identificeren
- het identificeren van
- Identiteit
- beeld
- omvatten
- Inclusief
- industrieรซn
- informatie
- invoer
- installeren
- geรฏnteresseerd
- kwestie
- IT
- Vacatures
- labels
- taal
- Groot
- lancering
- leren
- Bibliotheek
- Lijst
- laden
- machine
- machine learning
- MERKEN
- beheer
- Geheugen
- Metriek
- ML
- model
- modellen
- meer
- meest
- meervoudig
- Naturel
- negatief
- New York
- new york city
- notitieboekje
- Aanbod
- geoptimaliseerde
- Opties
- bestellen
- Overige
- het te bezitten.
- Papier
- Parijs
- Samenwerking
- Voorbijgaand
- Patches
- prestatie
- periodes
- Farmaceutisch
- punt
- beleidsmaatregelen door te lezen.
- portfolio
- positief
- praktijk
- voorspelling
- Voorspellingen
- problemen
- verwerking
- professioneel
- zorgen voor
- vraag
- quora
- RAM
- rand
- lezing
- real-time
- adviseren
- archief
- uitgebracht
- verslag
- bewaarplaats
- vereisen
- hulpbron
- Resources
- Resultaten
- terugkeer
- lopen
- lopend
- Scale
- scaling
- Wetenschapper
- veiligheid
- gekozen
- Serverless
- Diensten
- reeks
- het instellen van
- gelijk
- Eenvoudig
- Maat
- Klein
- Software
- solide
- oplossing
- Oplossingen
- OPLOSSEN
- special
- specialiseert
- specifiek
- Uitgaven
- spinnen
- spleet
- begin
- gestart
- starts
- voorraad
- mediaopslag
- shop
- Hierop volgend
- leveren
- Zweden
- system
- doelwit
- taken
- technieken
- vertelt
- proef
- Door
- niet de tijd of
- tokenization
- getokeniseerd
- tokens
- top
- fakkel
- verkeer
- Trainingen
- Vertaling
- us
- .
- bevestiging
- waarde
- variรซteit
- Bekijk
- Water
- Wat
- of
- Wikipedia
- binnen
- zonder
- woorden
- werkte
- werkzaam
- trainen