Prepoznavanje parafraziranega besedila ima poslovno vrednost v številnih primerih uporabe. Na primer, z identifikacijo stavčnih parafraz bi lahko sistem za povzemanje besedila odstranil odvečne informacije. Druga aplikacija je prepoznavanje plagiatov. V tej objavi natančno prilagodimo a Objemni obraz transformator vklopljen Amazon SageMaker za prepoznavanje parafraziranih stavčnih parov v nekaj korakih.
Resnično robusten model lahko identificira parafrazirano besedilo, kadar je uporabljeni jezik morda popolnoma drugačen, in tudi prepozna razlike, kadar ima uporabljeni jezik veliko leksikalnih prekrivanj. V tej objavi se osredotočamo na zadnji vidik. Natančneje, preučujemo, ali lahko usposobimo model, ki lahko prepozna razliko med dvema stavkoma, ki imata visoko leksikalno prekrivanje in zelo različna ali nasprotna pomena. Naslednji stavki imajo na primer popolnoma enake besede, vendar nasproten pomen:
- Letel sem iz New Yorka v Pariz
- Letel sem iz Pariza v New York
Pregled rešitev
Vodimo vas skozi naslednje korake na visoki ravni:
- Nastavite okolje.
- Pripravite podatke.
- Tokenizirajte nabor podatkov.
- Natančno prilagodite model.
- Razmestite model in izvedite sklepanje.
- Ocenite delovanje modela.
Če želite preskočiti nastavitev okolja, lahko uporabite naslednji prenosni računalnik GitHub in zaženite kodo v SageMakerju.
Hugging Face in AWS sta v začetku leta 2022 napovedala partnerstvo, ki še olajša usposabljanje modelov Hugging Face na SageMakerju. Ta funkcionalnost je na voljo z razvojem Hugging Face AWS Deep Learning Containers (DLC). Ti vsebniki vključujejo Hugging Face Transformers, Tokenizers in knjižnico Datasets, ki nam omogoča uporabo teh virov za usposabljanje in opravila sklepanja. Za seznam razpoložljivih slik DLC glejte Razpoložljive slike vsebnikov za globoko učenje. Vzdržujejo se in redno posodabljajo z varnostnimi popravki. Najdete lahko veliko primerov, kako trenirati modele Hugging Face s temi DLC-ji in Hugging Face Python SDK V nadaljevanju GitHub repo.
Nabor podatkov PAWS
Zavedajoč se pomanjkanja učinkovitih podatkovnih nizov stavčnih parov, ki kažejo visoko leksikalno prekrivanje, ne da bi bili parafraze, izvirnik PAWS nabor podatkov, objavljen leta 2019, je bil namenjen skupnosti za obdelavo naravnega jezika (NLP) zagotoviti nov vir za usposabljanje in ocenjevanje modelov zaznavanja parafraze. Stavčni pari PAWS so ustvarjeni v dveh korakih z uporabo Wikipedia in Pari vprašanj Quora (QQP) nabor podatkov. Jezikovni model najprej zamenja besede v stavčnem paru z isto vrečko besed (BOW), da ustvari stavčni par. Korak povratnega prevoda nato ustvari parafraze z velikim prekrivanjem BOW, vendar z uporabo drugačnega besednega reda. Končni nabor podatkov PAWS vsebuje skupno 108,000 človeško označenih in 656,000 hrupno označenih parov.
V tej objavi uporabljamo PAWS-Wiki označeno (končno) nabor podatkov iz Hugging Face. Hugging Face je za nas že izvedel razdelitev podatkov, kar ima za posledico 49,000 parov stavkov v naboru podatkov za usposabljanje in po 8,000 parov stavkov za nabore validacijskih in testnih podatkov. Dva primera parov stavkov iz nabora podatkov o usposabljanju sta prikazana v naslednjem primeru. Oznaka 1 pomeni, da sta stavka parafraza drug drugega.
1. stavek | 2. stavek | label |
Čeprav so zamenljivi, deli karoserije na obeh avtomobilih niso podobni. | Čeprav so deli karoserije podobni, pri obeh avtomobilih niso zamenljivi. | 0 |
Katz se je rodil na Švedskem leta 1947 in se pri 1 letu preselil v New York. | Katz se je rodil leta 1947 na Švedskem in se pri enem letu preselil v New York. | 1 |
Predpogoji
Izpolniti morate naslednje predpogoje:
- Prijavite se za račun AWS, če ga še nimate. Za več informacij glejte Nastavite predpogoje za Amazon SageMaker.
- Začnite uporabljati Primerki zvezka SageMaker.
- Nastavite desno AWS upravljanje identitete in dostopa (IAM) dovoljenja. Za več informacij glejte Vloge SageMaker.
Nastavite okolje
Preden začnemo pregledovati in pripravljati naše podatke za natančno nastavitev modela, moramo nastaviti naše okolje. Začnimo z vrtenjem primerka prenosnega računalnika SageMaker. V svojem računu AWS izberite regijo AWS in sledite navodilom za ustvarite primerek prenosnika SageMaker. Primerek prenosnega računalnika lahko traja nekaj minut, da se zavrti.
Ko se primerek prenosnega računalnika izvaja, izberite conda_pytorch_p38
kot vaš tip jedra. Za uporabo nabora podatkov Hugging Face moramo najprej namestiti in uvoziti knjižnico Hugging Face:
Nato vzpostavimo sejo SageMaker. Uporabljamo privzeto Preprosta storitev shranjevanja Amazon (Amazon S3), povezano s sejo SageMaker za shranjevanje nabora podatkov PAWS in artefaktov modela:
Pripravite podatke
Različico Hugging Face nabora podatkov PAWS lahko naložimo z njim load_dataset()
ukaz. Ta klic prenese in uvozi skript za obdelavo PAWS Python iz repozitorija Hugging Face GitHub, ki nato prenese nabor podatkov PAWS iz prvotnega URL-ja, shranjenega v skriptu, in predpomni podatke kot tabelo s puščico na pogonu. Oglejte si naslednjo kodo:
Preden začnemo s finim prilagajanjem našega vnaprej usposobljenega modela BERT, si poglejmo porazdelitev ciljnega razreda. Za naš primer uporabe ima nabor podatkov PAWS binarne oznake (0 označuje, da stavčni par ni parafraza, 1 pa označuje, da je). Ustvarimo stolpčni grafikon za ogled porazdelitve razredov, kot je prikazano v naslednji kodi. Vidimo, da je v našem nizu za usposabljanje manjša težava z razrednim neravnovesjem (56 % negativnih vzorcev proti 44 % pozitivnih vzorcev). Vendar pa je neravnovesje dovolj majhno, da se izognemo uporabi tehnik za zmanjšanje neravnovesja razredov.
Tokenizirajte nabor podatkov
Preden lahko začnemo s finim prilagajanjem, moramo naš nabor podatkov tokenizirati. Kot izhodišče recimo, da želimo natančno prilagoditi in ovrednotiti roberta-base
transformator. Izbrali smo roberta-base
ker je transformator za splošne namene, ki je bil predhodno usposobljen na velikem korpusu angleških podatkov in je pogosto pokazal visoko zmogljivost pri različnih nalogah NLP. Model je bil prvotno predstavljen v časopisu RoBERTa: Odlično optimiziran BERT pristop za iskanje.
Tokenizacijo izvedemo na stavkih z a roberta-base
tokenizer podjetja Hugging Face, ki uporablja kodiranje Byte Pair Encoding na ravni bajtov za razdelitev dokumenta na žetone. Za več podrobnosti o tokenizerju RoBERTa glejte RobertaTokenizer. Ker so naši vnosi stavčni pari, moramo tokenizirati oba stavka hkrati. Ker večina modelov BERT zahteva, da ima vnos fiksno tokenizirano vhodno dolžino, smo nastavili naslednje parametre: max_len=128
in truncation=True
. Glej naslednjo kodo:
Zadnji korak predprocesiranja za natančno nastavitev našega modela BERT je pretvorba tokeniziranega vlaka in podatkovnih nizov validacije v tenzorje PyTorch in njihovo nalaganje v naše vedro S3:
Natančno prilagodite model
Zdaj, ko smo končali s pripravo podatkov, smo pripravljeni na natančno uravnavanje naših vnaprej pripravljenih podatkov roberta-base
model na identifikacijski nalogi parafraze. Uporabimo lahko razred SageMaker Hugging Face Estimator, da sprožimo postopek natančnega prilagajanja v dveh korakih. Prvi korak je določitev hiperparametrov usposabljanja in definicij metrike. Spremenljivka definicij metrike pove Hugging Face Estimatorju, katere vrste metrik naj izvleče iz dnevnikov usposabljanja modela. Tukaj nas zanima predvsem pridobivanje metrik validacijskega niza v vsaki epohi usposabljanja.
Drugi korak je instanciranje Hugging Face Estimator in začetek postopka natančnega prilagajanja z .fit()
metoda:
Postopek natančne nastavitve traja približno 30 minut z uporabo navedenih hiperparametrov.
Razmestite model in izvedite sklepanje
SageMaker ponuja več možnosti uvajanja, odvisno od vašega primera uporabe. Za obstojne končne točke v realnem času, ki dajejo eno napoved naenkrat, priporočamo uporabo Storitve gostovanja v realnem času SageMaker. Če imate delovne obremenitve, ki imajo obdobja mirovanja med prometnimi sunki in lahko prenašajo hladne zagone, priporočamo uporabo Brezstrežniško sklepanje. Brezstrežniške končne točke samodejno zaženejo računalniške vire in jih povečajo in zmanjšajo glede na promet, s čimer odpravijo potrebo po izbiri vrst primerkov ali upravljanju pravilnikov o skaliranju. Predstavljamo, kako razmestiti naš natančno nastavljen model Hugging Face na končno točko sklepanja v realnem času in končno točko sklepanja brez strežnika.
Razmestite na končno točko sklepanja v realnem času
Objekt za usposabljanje lahko namestite na gostovanje sklepanja v realnem času znotraj SageMaker z uporabo .deploy()
metoda. Za celoten seznam sprejetih parametrov glejte Model objemajočega obraza. Za začetek razmestimo model v en primerek, tako da posredujemo naslednje parametre: initial_instance_count
, instance_type
in endpoint_name
. Glej naslednjo kodo:
Namestitev modela traja nekaj minut. Ko je model uveden, lahko končni točki predložimo vzorčne zapise iz nevidenega testnega nabora podatkov za sklepanje.
Razmestite na končno točko sklepanja brez strežnika
Za razmestitev našega predmeta usposabljanja na končno točko brez strežnika moramo najprej določiti konfiguracijsko datoteko brez strežnika z memory_size_in_mb
in max_concurrency
argumenti:
memory_size_in_mb
definira skupno velikost RAM vaše končne točke brez strežnika; najmanjša velikost RAM-a je 1024 MB (1 GB) in se lahko poveča do 6144 MB (6 GB). Na splošno si morate prizadevati, da izberete velikost pomnilnika, ki je vsaj tako velika kot velikost vašega modela. max_concurrency
določa kvoto, koliko sočasnih klicev je mogoče obdelati hkrati (do 50 sočasnih klicev) za posamezno končno točko.
Zagotoviti moramo tudi URI sklepne slike Hugging Face, ki ga lahko pridobite z naslednjo kodo:
Zdaj, ko imamo konfiguracijsko datoteko brez strežnika, lahko ustvarimo končno točko brez strežnika na enak način kot našo končno točko sklepanja v realnem času, z uporabo .deploy()
metoda:
Končna točka bi morala biti ustvarjena v nekaj minutah.
Izvedite sklepanje o modelu
Za napovedi moramo ustvariti stavčni par tako, da dodamo [CLS]
in [SEP]
posebne žetone in nato predloži vhod končnim točkam modela. Sintaksa za sklepanje v realnem času in sklepanje brez strežnika je enaka:
V naslednjih primerih lahko vidimo, da je model sposoben pravilno razvrstiti, ali vhodni stavčni par vsebuje parafrazirane stavke.
Sledi primer sklepanja v realnem času.
Sledi primer sklepanja brez strežnika.
Ocenite delovanje modela
Za ovrednotenje modela razširimo prejšnjo kodo in pošljimo vseh 8,000 nevidenih testnih zapisov končni točki v realnem času:
Nato lahko ustvarimo poročilo o klasifikaciji z izvlečenimi napovedmi:
Dobimo naslednje rezultate testa.
To lahko opazimo roberta-base
ima kombinirano makropovprečno oceno F1 92 % in je nekoliko boljši pri zaznavanju stavkov, ki so parafraze. The roberta-base
model deluje dobro, vendar je dobra praksa izračunati zmogljivost modela z uporabo vsaj enega drugega modela.
Naslednja tabela primerja roberta-base
rezultate delovanja na istem preskusnem nizu v primerjavi z drugim natančno nastavljenim transformatorjem, imenovanim paraphrase-mpnet-base-v2
, pretvornik stavkov, predhodno usposobljen posebej za nalogo identifikacije parafraze. Oba modela sta bila urjena na primerku ml.p3.8xlarge.
Rezultati kažejo, da roberta-base
ima 1 % višji rezultat F1 z zelo podobnimi časi usposabljanja in sklepanja z uporabo realnočasovnega gostovanja sklepanja na SageMakerju. Vendar pa je razlika v zmogljivosti med modeloma relativno majhna, roberta-base
je na koncu zmagovalec, saj ima malo boljše meritve uspešnosti ter skoraj enak čas usposabljanja in sklepanja.
Precision | Recall | F1-ocena | Čas usposabljanja (plačljiv) | Čas sklepanja (celoten preskusni niz) | |
roberta-osnova | 0.92 | 0.93 | 0.92 | 18 minut | 2 minut |
parafraza-mpnet- base-v2 |
0.92 | 0.91 | 0.91 | 17 minut | 2 minut |
Čiščenje
Ko končate z uporabo končnih točk modela, jih lahko izbrišete, da se izognete prihodnjim stroškom:
zaključek
V tej objavi smo razpravljali o tem, kako hitro zgraditi identifikacijski model parafraze z uporabo transformatorjev Hugging Face na SageMakerju. Natančno smo prilagodili dva vnaprej pripravljena transformatorja, roberta-base
in paraphrase-mpnet-base-v2
, z uporabo nabora podatkov PAWS (ki vsebuje stavčne pare z velikim leksikalnim prekrivanjem). Prikazali in razpravljali smo o prednostih sklepanja v realnem času v primerjavi z uvajanjem sklepanja brez strežnika, pri čemer je slednje nova funkcija, ki cilja na nenadne delovne obremenitve in odpravlja potrebo po upravljanju politik skaliranja. Na nevidnem nizu testov z 8,000 zapisi smo dokazali, da sta oba modela dosegla rezultat F1, višji od 90 %.
Če želite razširiti to rešitev, upoštevajte naslednje:
- Poskusite natančno nastaviti s svojim naborom podatkov po meri. Če nimate dovolj oznak za usposabljanje, lahko ocenite delovanje natančno nastavljenega modela, kot je prikazan v tej objavi, na naboru testnih podatkov po meri.
- Integrirajte ta natančno nastavljen model v nadaljnjo aplikacijo, ki zahteva informacije o tem, ali sta dva stavka (ali bloka besedila) parafraza drug drugega.
Srečna stavba!
O avtorjih
Bala Krishnamoorthy je podatkovni znanstvenik pri AWS Professional Services, kjer uživa v uporabi strojnega učenja za reševanje poslovnih težav strank. Specializiran je za primere uporabe obdelave naravnega jezika in je sodeloval s strankami v panogah, kot so programska oprema, finance in zdravstvo. V prostem času rad preizkuša novo hrano, gleda komedije in dokumentarne filme, telovadi v Orange Theory in je na vodi (veslanje na deski, potapljanje z masko in upam, da se bo kmalu tudi potapljanje).
Ivan Cui je Data Scientist pri AWS Professional Services, kjer strankam pomaga graditi in uvajati rešitve z uporabo strojnega učenja na AWS. Delal je s strankami v različnih panogah, vključno s programsko opremo, financami, farmacijo in zdravstvenim varstvom. V prostem času uživa v branju, preživljanju časa z družino in povečanju svojega portfelja delnic.
- Coinsmart. Najboljša evropska borza bitcoinov in kriptovalut.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. PROST DOSTOP.
- CryptoHawk. Altcoin radar. Brezplačen preizkus.
- Vir: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- O meni
- dostop
- Račun
- doseže
- čez
- vsi
- že
- Amazon
- razglasitve
- Še ena
- uporaba
- Uporaba
- približno
- Argumenti
- Na voljo
- AWS
- počutje
- Prednosti
- telo
- meja
- izgradnjo
- poslovni
- klic
- lahko
- avtomobili
- primeri
- Stroški
- Izberite
- mesto
- razred
- Razvrstitev
- Koda
- Stolpec
- kombinirani
- skupnost
- popolnoma
- Izračunajte
- zaupanje
- Zabojniki
- Vsebuje
- bi
- ustvarjajo
- ustvaril
- po meri
- stranka
- Stranke, ki so
- datum
- podatkovni znanstvenik
- izkazati
- Dokazano
- Odvisno
- razporedi
- razporejeni
- uvajanje
- Podrobnosti
- Odkrivanje
- Razvoj
- drugačen
- distribucija
- dokumentarci
- Dokumenti
- prenosov
- pogon
- učinkovite
- Končna točka
- Angleščina
- okolje
- vzpostaviti
- oceniti
- Primer
- izkazujejo
- Razširi
- Obraz
- družina
- Feature
- financiranje
- prva
- let
- Osredotočite
- sledi
- po
- hrana
- brezplačno
- polno
- funkcija
- funkcionalnost
- Prihodnost
- glavni namen
- splošno
- ustvarjajo
- GitHub
- dobro
- več
- zdravstveno varstvo
- višina
- Pomaga
- tukaj
- visoka
- več
- gostovanje
- Kako
- Kako
- HTTPS
- Identifikacija
- identificirati
- identifikacijo
- identiteta
- slika
- vključujejo
- Vključno
- industrij
- Podatki
- vhod
- namestitev
- zainteresirani
- vprašanje
- IT
- Delovna mesta
- Oznake
- jezik
- velika
- kosilo
- učenje
- Knjižnica
- Seznam
- obremenitev
- stroj
- strojno učenje
- IZDELA
- upravljanje
- Spomin
- Meritve
- ML
- Model
- modeli
- več
- Najbolj
- več
- naravna
- negativna
- NY
- New York City
- prenosnik
- Ponudbe
- optimizirana
- možnosti
- Da
- Ostalo
- lastne
- Papir
- paris
- Partnerstvo
- Podaje
- Obliži
- performance
- obdobja
- Farmacevtska
- Točka
- politike
- Portfelj
- pozitiven
- praksa
- napoved
- Napovedi
- Težave
- Postopek
- obravnavati
- strokovni
- zagotavljajo
- vprašanje
- Quora
- RAM
- rand
- reading
- v realnem času
- Priporočamo
- evidence
- sprosti
- poročilo
- Skladišče
- zahteva
- vir
- viri
- Rezultati
- vrnitev
- Run
- tek
- Lestvica
- skaliranje
- Znanstvenik
- varnost
- izbran
- Brez strežnika
- Storitve
- nastavite
- nastavitev
- Podoben
- Enostavno
- Velikosti
- majhna
- Software
- trdna
- Rešitev
- rešitve
- SOLVE
- posebna
- specializirano
- posebej
- Poraba
- Spin
- po delih
- Začetek
- začel
- začne
- zaloge
- shranjevanje
- trgovina
- Kasneje
- dobavi
- Švedska
- sistem
- ciljna
- Naloge
- tehnike
- pove
- Test
- skozi
- čas
- Tokenizacija
- tokenizirano
- Boni
- vrh
- baklo
- Prometa
- usposabljanje
- prevod
- us
- uporaba
- potrjevanje
- vrednost
- raznolikost
- Poglej
- Voda
- Kaj
- ali
- Wikipedia
- v
- brez
- besede
- delal
- deluje
- telovaditi