Au existat multe progrese recente în domeniul NLP. Modelele pre-instruite și serviciile NLP gestionate complet au democratizat accesul și adoptarea NLP. Amazon Comprehend este un serviciu complet gestionat care poate îndeplini sarcini NLP, cum ar fi recunoașterea personalizată a entităților, modelarea subiectelor, analiza sentimentelor și multe altele pentru a extrage informații din date fără a fi nevoie de vreo experiență anterioară de ML.
Anul trecut, AWS a anunțat un parteneriat cu Fata îmbrățișată pentru a ajuta la aducerea mai rapidă în producție a modelelor de procesare a limbajului natural (NLP). Hugging Face este o comunitate open-source AI, axată pe NLP. Biblioteca lor bazată pe Python (transformatoare) oferă instrumente pentru a utiliza cu ușurință arhitecturile populare Transformer de ultimă generație, cum ar fi BERT, RoBERTa și GPT. Puteți aplica aceste modele la o varietate de sarcini NLP, cum ar fi clasificarea textului, extragerea informațiilor și răspunsul la întrebări, printre alţii.
Amazon SageMaker este un serviciu complet gestionat care oferă dezvoltatorilor și cercetătorilor de date capacitatea de a construi, antrena și implementa rapid modele de învățare automată (ML). SageMaker elimină sarcinile grele din fiecare pas al procesului ML, facilitând dezvoltarea modelelor de înaltă calitate. SageMaker Python SDK oferă API-uri și containere open-source pentru a antrena și a implementa modele pe SageMaker, folosind mai multe cadre diferite de ML și de deep learning.
Integrarea Hugging Face cu SageMaker vă permite să construiți modele Hugging Face la scară pe propriile dvs. cazuri de utilizare specifice domeniului.
În această postare, vă prezentăm un exemplu despre cum să construiți și să implementați un rezumat personalizat de text Hugging Face pe SageMaker. În acest scop, folosim Pegasus [1], primul model bazat pe Transformer pre-antrenat în mod specific pe un obiectiv adaptat pentru rezumarea textului abstract. BERT este antrenat în prealabil pentru a masca cuvinte aleatorii într-o propoziție; în schimb, în timpul pre-antrenamentului lui Pegasus, propozițiile sunt mascate dintr-un document de intrare. Modelul generează apoi propozițiile lipsă ca o singură secvență de ieșire folosind toate propozițiile nemascate ca context, creând ca rezultat un rezumat executiv al documentului.
Datorită flexibilității bibliotecii HuggingFace, puteți adapta cu ușurință codul afișat în această postare pentru alte tipuri de modele de transformatoare, cum ar fi t5, BART și altele.
Încărcați propriul set de date pentru a regla fin un model Hugging Face
Pentru a încărca un set de date personalizat dintr-un fișier CSV, folosim load_dataset
metoda din pachetul Transformers. Putem aplica tokenizarea setului de date încărcat folosind datasets.Dataset.map
funcţie. map
funcția iterează peste setul de date încărcat și aplică funcția tokenize fiecărui exemplu. Setul de date tokenizat poate fi apoi transmis trainerului pentru reglarea fină a modelului. Vezi următorul cod:
Construiește-ți scriptul de antrenament pentru estimatorul Hugging Face SageMaker
După cum se explică în postare AWS și Hugging Face colaborează pentru a simplifica și accelera adoptarea modelelor de procesare a limbajului natural, antrenamentul unui model Hugging Face pe SageMaker nu a fost niciodată mai ușor. Putem face acest lucru utilizând estimatorul Hugging Face din SageMaker SDK.
Următorul fragment de cod ajustează Pegasus pe setul nostru de date. De asemenea, puteți găsi multe mostre de caiete care vă ghidează prin reglarea fină a diferitelor tipuri de modele, disponibile direct în depozitul transformers GitHub. Pentru a activa instruirea distribuită, putem folosi Biblioteca de paralelism de date în SageMaker, care a fost integrat în API-ul HuggingFace Trainer. Pentru a permite paralelismul datelor, trebuie să definim distribution
parametrul în estimatorul nostru Hugging Face.
Dimensiunea maximă a lotului de antrenament pe care o puteți configura depinde de dimensiunea modelului și de memoria GPU a instanței utilizate. Dacă instruirea distribuită SageMaker este activată, dimensiunea totală a lotului este suma fiecărui lot care este distribuit pe fiecare dispozitiv/GPU. Dacă folosim un ml.g4dn.16xlarge cu antrenament distribuit în loc de o instanță ml.g4dn.xlarge, avem de opt ori (8 GPU-uri) mai multă memorie decât o instanță ml.g4dn.xlarge (1 GPU). Dimensiunea lotului per dispozitiv rămâne aceeași, dar opt dispozitive se antrenează în paralel.
Ca de obicei cu SageMaker, creăm un train.py
script de utilizat cu Modul Script și treceți hiperparametri pentru antrenament. Următorul fragment de cod pentru Pegasus încarcă modelul și îl antrenează folosind Transformers Trainer
clasă:
Codul complet este disponibil pe GitHub.
Implementați modelul instruit Hugging Face în SageMaker
Prietenii noștri de la Hugging Face au făcut inferențe cu privire la modelele SageMaker for Transformers mai simple decât oricând datorită SageMaker Hugging Face Inference Toolkit. Puteți implementa direct modelul antrenat anterior prin simpla setare a variabilei de mediu "HF_TASK":"summarization"
(pentru instrucțiuni, vezi Modele Pegasus), alegând Lansa, iar apoi alegerea Amazon SageMaker, fără a fi nevoie să scrieți un script de inferență.
Cu toate acestea, dacă aveți nevoie de o modalitate specifică de a genera sau de a postprocesa predicții, de exemplu generarea mai multor sugestii rezumate bazate pe o listă de parametri diferiți de generare a textului, scrierea propriului script de inferență poate fi utilă și relativ simplă:
După cum se arată în codul precedent, un astfel de script de inferență pentru HuggingFace pe SageMaker are nevoie doar de următoarele funcții de șablon:
- model_fn() – Citește conținutul a ceea ce a fost salvat la sfârșitul jobului de formare în interior
SM_MODEL_DIR
, sau dintr-un director existent de greutăți de model salvat ca fișier tar.gz în Serviciul Amazon de stocare simplă (Amazon S3). Este folosit pentru a încărca modelul antrenat și tokenizerul asociat. - input_fn() – Formatează datele primite de la o solicitare făcută către punctul final.
- predict_fn() – Apelează ieșirea de
model_fn()
(modelul și tokenizer) pentru a rula inferența asupra rezultatuluiinput_fn()
(datele formatate).
Opțional, puteți crea un output_fn()
funcția de formatare a inferenței, folosind rezultatul de predict_fn()
, ceea ce nu am demonstrat în această postare.
Apoi putem implementa modelul Hugging Face antrenat cu scriptul de inferență asociat la SageMaker folosind Față îmbrățișată Model SageMaker clasă:
Testați modelul implementat
Pentru această demonstrație, am antrenat modelul pe Set de date recenzii pentru îmbrăcăminte de comerț electronic pentru femei, care conține recenzii ale articolelor de îmbrăcăminte (pe care le considerăm text de intrare) și titlurile asociate acestora (pe care le considerăm rezumate). După ce eliminăm articolele cu titluri lipsă, setul de date conține 19,675 de recenzii. Reglarea fină a modelului Pegasus pe un set de antrenament care conținea 70% din acele articole timp de cinci epoci a durat aproximativ 3.5 ore pe o instanță ml.p3.16xlarge.
Apoi putem implementa modelul și îl putem testa cu câteva exemple de date din setul de testare. Următoarea este un exemplu de recenzie care descrie un pulover:
Datorită scriptului nostru de inferență personalizat găzduit într-un punct final SageMaker, putem genera mai multe rezumate pentru această revizuire cu diferiți parametri de generare de text. De exemplu, putem cere punctului final să genereze o gamă de rezumate foarte scurte până la moderat lungi care specifică penalizări de lungime diferite (cu cât penalitatea de lungime este mai mică, cu atât rezumatul generat este mai scurt). Următoarele sunt câteva exemple de introducere a parametrilor și rezumatele ulterioare generate de mașină:
Ce rezumat preferi? Primul titlu generat surprinde toate faptele importante despre recenzie, cu un sfert din numărul de cuvinte. În schimb, ultimul folosește doar trei cuvinte (mai puțin de 1/10 din lungimea recenziei originale) pentru a se concentra pe cea mai importantă caracteristică a puloverului.
Concluzie
Puteți ajusta un rezumat de text pe setul de date personalizat și îl puteți implementa în producție pe SageMaker cu acest exemplu simplu disponibil pe GitHub. Adiţional mostre de caiete pentru instruirea și implementarea modelelor Hugging Face pe SageMaker sunt, de asemenea, disponibile.
Ca întotdeauna, AWS salută feedback-ul. Vă rugăm să trimiteți orice comentarii sau întrebări.
Referinte
[1] PEGASUS: Pre-training cu extrase Gap-sentences pentru rezumat abstract
Despre autori
Viktor Malesevic este un inginer de învățare automată cu AWS Professional Services, pasionat de procesarea limbajului natural și MLOps. Lucrează cu clienții pentru a dezvolta și pune modele provocatoare de deep learning în producție pe AWS. În timpul liber, îi place să împartă cu prietenii un pahar de vin roșu și niște brânză.
Aamna Najmi este un Data Scientist cu AWS Professional Services. Este pasionată de a ajuta clienții să inoveze cu tehnologiile Big Data și Inteligența Artificială pentru a valorifica valoarea afacerii și informațiile din date. În timpul liber, îi place să facă grădinărit și să călătorească în locuri noi.
- AI
- ai art
- ai art generator
- ai robot
- Amazon SageMaker
- inteligență artificială
- certificare de inteligență artificială
- inteligența artificială în domeniul bancar
- robot cu inteligență artificială
- roboți cu inteligență artificială
- software de inteligență artificială
- Învățare automată AWS
- blockchain
- conferință blockchain ai
- coingenius
- inteligența artificială conversațională
- criptoconferință ai
- dall-e
- învățare profundă
- google ai
- masina de învățare
- Plato
- platoul ai
- Informații despre date Platon
- Jocul lui Platon
- PlatoData
- platogaming
- scara ai
- sintaxă
- zephyrnet