În ultimii ani, înțelegerea limbajului natural (NLU) a găsit din ce în ce mai mult valoare pentru afaceri, alimentată de îmbunătățirile modelului, precum și de scalabilitatea și eficiența din punct de vedere al costurilor a infrastructurii bazate pe cloud. Mai exact, cel Transformator arhitectură de învățare profundă, adesea implementată sub formă de OARET modele, a avut un mare succes, dar instruirea, reglarea fină și optimizarea acestor modele s-au dovedit a fi o problemă dificilă. Mulțumită Colaborarea AWS și Hugging Face, acum este mai simplu să antrenați și să optimizați modelele NLU Amazon SageMaker folosind SDK-ul SageMaker Python, dar aprovizionarea datelor etichetate pentru aceste modele este încă dificilă și necesită timp.
O problemă NLU de interes comercial deosebit este sarcina de a răspunde la întrebări. În această postare, demonstrăm cum să construim un set de date personalizat cu răspunsuri la întrebări folosind Amazon SageMaker Ground Adevăr pentru a antrena o întrebare Hugging Face care răspunde modelului NLU.
Provocări de răspuns la întrebări
Răspunsul la întrebări implică un model care produce automat un răspuns la o interogare având în vedere un corp de text care poate sau nu conține răspunsul. De exemplu, având în vedere următoarea întrebare, „Ce fluxuri de lucru acceptă SageMaker Ground Truth?” un model ar trebui să fie capabil să identifice segmentul „consolidare adnotări și audit” în următorul paragraf:
SageMaker Ground Truth ajută la îmbunătățirea calității etichetelor prin consolidarea adnotărilor și fluxurile de lucru de audit. Consolidarea adnotărilor este procesul de colectare a intrărilor de etichete de la două sau mai multe etichetatoare de date și de combinare a acestora pentru a crea o singură etichetă de date pentru modelul dvs. de învățare automată. Cu fluxurile de lucru încorporate de audit și revizuire, lucrătorii pot efectua verificarea etichetelor și pot face ajustări pentru a îmbunătăți acuratețea.
Această problemă este o provocare, deoarece necesită un model pentru a înțelege semnificația unei întrebări, mai degrabă decât să efectueze pur și simplu căutarea prin cuvinte cheie. Modelele precise din acest domeniu pot reduce costurile de asistență pentru clienți prin alimentarea chatbot-urilor inteligenți, furnizarea de produse de asistență vocală de înaltă calitate și creșterea veniturilor magazinului online prin răspunsuri personalizate la întrebări despre produse. Un set mare de date în această zonă este Set de date de răspuns la întrebări Stanford (SQuAD), un set de date divers pentru răspunsuri la întrebări care prezintă un model cu pasaje scurte de text și necesită ca modelul să prezică locația intervalului textului de răspuns în pasaj. SQuAD este un set de date de înțelegere a lecturii, constând din întrebări puse de lucrătorii mulțimii pe un set de articole Wikipedia, în care răspunsul la fiecare întrebare este fie un interval de text din pasajul corespunzător, fie marcat altfel imposibil de răspuns.
O provocare în adaptarea SQuAD pentru cazuri de utilizare în afaceri este generarea de seturi de date personalizate specifice domeniului. Acest proces de creare a unor noi seturi de date cu întrebări și răspunsuri necesită o interfață de utilizator specializată care să permită adnotatorilor să evidențieze intervale și să adauge întrebări la acele intervale. De asemenea, trebuie să poată sprijini adăugarea de întrebări imposibile pentru a sprijini formatul SQuAD 2.0, care include întrebări fără răspuns. Aceste întrebări imposibile ajută modelele să obțină o înțelegere suplimentară în jurul cărora nu se poate răspunde la întrebări folosind pasajul dat. The șabloane personalizate de lucrător în Ground Truth simplifică generarea acestor seturi de date, oferind lucrătorilor o experiență de adnotare personalizată pentru crearea de seturi de date cu întrebări și răspunsuri.
Prezentare generală a soluțiilor
Această soluție creează și gestionează joburi de etichetare Ground Truth pentru a eticheta un set de date personalizate întrebări-răspunsuri specifice domeniului, folosind o interfață de utilizator de adnotare personalizată. Folosim SageMaker pentru a instrui, a regla fin, a optimiza și a implementa un Hugging Face
Model BERT construit cu PyTorch pe un set de date personalizat cu răspunsuri la întrebări.
Puteți implementa soluția prin implementarea celor furnizate Formarea AWS Cloud șablon în contul dvs. AWS. AWS CloudFormation se ocupă de implementarea AWS Lambdas funcții care acceptă pre-adnotare și consolidarea adnotărilor pentru interfața de utilizator de adnotare. De asemenea, creează un Serviciul Amazon de stocare simplă (Amazon S3) găleată și Gestionarea identității și accesului AWS (IAM) de utilizat la crearea unui job de etichetare.
Această postare vă prezintă cum să faceți următoarele:
- Creați-vă propriul set de date pentru răspunsuri la întrebări sau măriți unul existent folosind Ground Truth
- Utilizați seturile de date Hugging Face pentru a combina și a tokeniza textul
- Ajustați un model BERT pe datele dvs. de răspuns la întrebări folosind instruirea SageMaker
- Implementați modelul dvs. într-un punct final SageMaker și vizualizați rezultatele
Adnotare interfață utilizator
Folosim un nou șablon de sarcină personalizat pentru lucrător cu Ground Truth pentru a adăuga noi adnotări la setul de date SQuAD existent. Această soluție oferă un șablon de sarcină pentru lucrător, precum și o funcție Lambda de pre-adnotare (care se ocupă de introducerea datelor în interfața cu utilizatorul) și o funcție Lambda de post-adnotare (care extrage rezultatele din interfața cu utilizatorul după ce etichetarea este finalizată).
Acest șablon de sarcină personalizat pentru lucrător vă oferă posibilitatea de a evidenția textul în panoul din dreapta, apoi adăugați o întrebare corespunzătoare în panoul din stânga care se referă la textul evidențiat. Textul evidențiat din panoul din dreapta poate fi adăugat și la orice întrebare creată anterior. Mai mult, puteți adăuga întrebări imposibile conform SQUAD 2.0 format. Întrebările imposibile permit modelelor să reducă numărul de presupuneri false pozitive nesigure atunci când pasajul nu poate răspunde la o interogare.
Această interfață de utilizator folosește aceeași schemă JSON ca setul de date SQuAD 2.0, ceea ce înseamnă că poate funcționa pe mai multe articole și paragrafe, afișând câte un paragraf folosind Pagina Anterioară și Pagina Următoare → butoane. Interfața cu utilizatorul facilitează monitorizarea și determinarea activității de etichetare pe care fiecare adnotator trebuie să o îndeplinească în timpul pasului de trimitere a sarcinii.
Deoarece interfața de utilizare de adnotare este conținută într-un singur Lichid Fișier HTML, puteți personaliza experiența de etichetare cu cunoștințe de bază JavaScript. De asemenea, puteți modifica Etichete lichide pentru a transmite informații suplimentare în interfața de utilizare de etichetare și puteți modifica șablonul în sine pentru a include instrucțiuni mai detaliate pentru lucrător.
Costuri estimate
Implementarea acestei soluții poate implica un cost maxim de aproximativ 20 USD, fără a ține cont de costurile de etichetare umană. Amazon S3, Lambda, SageMaker și Ground Truth oferă toate Nivelul gratuit AWS, cu taxe pentru utilizare suplimentară. Pentru mai multe informații, consultați următoarele pagini de prețuri:
- Prețuri Amazon S3
- Prețuri AWS Lambda
- Prețuri Amazon SageMaker
- Prețuri pentru etichetarea datelor Amazon SageMaker – Această taxă depinde de tipul de forță de muncă pe care o utilizați. Dacă sunteți un utilizator nou al Ground Truth, vă sugerăm să utilizați o forță de muncă privată și să vă includeți ca lucrător pentru a testa configurația jobului de etichetare.
Cerințe preliminare
Pentru a implementa această soluție, ar trebui să aveți următoarele cerințe preliminare:
- An Cont AWS.
- Familiaritatea cu Ground Truth. Pentru mai multe informații, consultați Utilizați Amazon SageMaker Ground Truth pentru a eticheta datele.
- Familiaritate cu AWS CloudFormation. Pentru mai multe informații, consultați Ghidul utilizatorului AWS CloudFormation.
- Un SageMaker forței de muncă. Pentru această demonstrație, folosim o forță de muncă privată. Puteți crea o forță de muncă pe consola SageMaker.
Următorul GIF demonstrează cum să creați o forță de muncă privată. Pentru instrucțiuni, vezi Creați o forță de muncă Amazon Cognito folosind pagina Etichetarea forței de muncă.
Lansați stiva CloudFormation
Acum că ați văzut structura soluției, o implementați în contul dvs., astfel încât să puteți rula un exemplu de flux de lucru. Toți pașii de implementare legate de conducta de etichetare sunt gestionați de AWS CloudFormation. Aceasta înseamnă că AWS CloudFormation vă creează funcțiile Lambda de consolidare a adnotărilor și de pre-adnotare, precum și un compartiment S3 pentru a stoca datele de intrare și de ieșire.
Puteți lansa stiva în regiunea AWS us-east-1
pe consola AWS CloudFormation folosind Lansați Stack buton. Pentru a lansa stiva într-o regiune diferită, utilizați instrucțiunile găsite în README-ul GitHub depozit.
Operați notebook-ul
După ce soluția a fost implementată în contul dvs., o instanță de notebook denumită gt-hf-squad-notebook
este disponibil în contul dvs. Pentru a începe să utilizați notebook-ul, parcurgeți următorii pași:
- Pe consola Amazon SageMaker, navigați la pagina instanței notebook-ului.
- Alege Deschideți JupyterLab pentru a deschide instanța.
- În interiorul instanței, navigați la depozit
hf-gt-custom-qa
și deschide caietulhf_squad_finetuning.ipynb
. - Alege
conda_pytorch_p38
ca nucleu.
Acum că ați creat o instanță de blocnotes și ați deschis blocnotesul, puteți rula celule în blocnotes pentru a opera soluția. Restul acestei postări oferă detalii suplimentare pentru fiecare secțiune din caiet pe măsură ce mergeți.
Descărcați și verificați datele
Setul de date SQuAD conține un set de date de antrenament, precum și seturi de date de testare și dezvoltare. Notebook-ul descarcă setul de date SQuAD2.0 pentru dvs., dar puteți alege ce versiune de SQuAD să utilizați modificând celula notebook-ului de sub Descărcați și verificați datele.
SQuAD a fost creat de Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev și Percy Liang. Pentru mai multe informații, consultați hârtie originală și date CCD. SQuAD a fost licențiat de către autori sub Creative Commons Attribution-ShareAlike 4.0 International Public License.
Să ne uităm la un exemplu de pereche întrebare și răspuns din SQuAD:
Titlul paragrafului: Sistem_imunitar
Sistemul imunitar este un sistem de multe structuri și procese biologice din cadrul unui organism care protejează împotriva bolilor. Pentru a funcționa corect, un sistem imunitar trebuie să detecteze o mare varietate de agenți, cunoscuți sub numele de agenți patogeni, de la viruși la viermi paraziți și să îi distingă de țesutul sănătos al organismului. La multe specii, sistemul imunitar poate fi clasificat în subsisteme, cum ar fi sistemul imunitar înnăscut față de sistemul imunitar adaptativ sau imunitatea umorală față de imunitatea mediată de celule. La om, bariera hemato-encefalică, bariera sânge-lichidul cefalorahidian și barierele similare fluid-creier separă sistemul imunitar periferic de sistemul neuroimun care protejează creierul.
Întrebare: Sistemul imunitar protejează organismele împotriva a ce?
Raspuns: boala
Încărcați modelul
Acum că ați vizualizat un exemplu de pereche întrebare și răspuns în SQuAD, puteți descărca un model pe care îl puteți regla fin pentru răspunsul la întrebări. Hugging Face vă permite să descărcați cu ușurință un model de bază care a suferit o pregătire prealabilă la scară largă și să-l reinițializați pentru o altă sarcină în aval. În acest caz, descărcați distilbert-base-uncased
modelați și reutilizați-l pentru a răspunde la întrebări folosind AutoModelForQuestionAnswering
clasa de la Hugging Face. De asemenea, utilizați AutoTokenizer
clasă pentru a prelua tokenizerul pre-antrenat al modelului. Ne aprofundăm în modelul pe care îl folosim mai târziu în postare.
Vedeți intrarea BERT
BERT vă solicită să transformați datele text într-o reprezentare numerică cunoscută sub numele de jetoane. Există o varietate de tokenizatoare disponibile; următoarele jetoane au fost create de un tokenizer special conceput pentru BERT pe care îl instanțiați cu un vocabular stabilit. Fiecare jeton se mapează la un cuvânt din vocabular. Să ne uităm la întrebarea sistemului imunitar transformat și la contextul pe care îl furnizați BERT pentru deducere.
Inferența modelului
Acum că ați văzut ce ia BERT ca intrare, să vedem cum puteți obține rezultate de inferență din model. Următorul cod demonstrează cum să utilizați intrarea tokenizată generată anterior și să returnați rezultatele inferenței din model. Similar cu modul în care BERT nu poate accepta text brut ca intrare, nici nu generează text brut ca ieșire. Traduceți rezultatul BERT identificând punctele de început și de sfârșit în paragraful pe care BERT l-a identificat ca răspuns. Apoi mapați acea ieșire la jetoanele noastre și înapoi la textul în limba engleză.
Rezultatele traduse sunt după cum urmează:
Întrebare: Sistemul imunitar protejează organismele împotriva a ce?
Raspuns: boala
Augment SQuAD
În continuare, pentru a obține date suplimentare etichetate, folosim a șablon de sarcină personalizat pentru lucrător în Ground Truth. Mai întâi putem crea un articol nou în format SQuAD. Notebook-ul copiază acest fișier din depozit în Amazon S3, dar nu ezitați să faceți orice modificări înainte de a rula Augment SQuAD celulă. Formatul SQuAD este afișat în următorul cod. Fiecare fișier SQuAD JSON conține mai multe articole stocate în data
cheie. Fiecare articol are un title
câmp și unul sau mai multe paragrafe. Aceste paragrafe conțin segmente de text numite context
și orice întrebări asociate în qas
listă. Pentru că adnotăm de la zero, putem lăsa qas
lista este goală și oferă doar context. Interfața cu utilizatorul este capabilă să circule atât în paragrafe, cât și în articole, permițându-vă să faceți fiecare sarcină de lucru cât de mare sau mică, după cum doriți.
După ce generăm un exemplu de fișier de date SQuAD, trebuie să creăm un Ground Truth fișier manifest augmentat care se referă la datele noastre de intrare. Facem acest lucru generând un fișier formatat în linii JSON cu un „source
” cheie corespunzătoare locației din Amazon S3 unde am stocat datele SQuAD de intrare:
Accesați portalul de etichetare
După ce trimiteți jobul către Ground Truth, puteți vizualiza jobul de etichetare generat pe consola Ground Truth.
Pentru a efectua etichetarea, trebuie să vă conectați la contul de portal pentru lucrători pe care l-ați creat ca parte a pașilor de precondiție. Postul dvs. este disponibil în portalul lucrătorilor după câteva minute de preprocesare. După deschiderea sarcinii, vi se prezintă șablonul personalizat de lucrător pentru adnotarea Întrebări și răspunsuri. Puteți adăuga întrebări evidențiind secțiuni de text în context, apoi alegând Adăugați o întrebare.
Verificați starea lucrării de etichetare
După trimitere, puteți rula Verificați starea lucrării de etichetare celulă pentru a vedea dacă munca dvs. de etichetare este finalizată. Așteptați finalizarea înainte de a trece la celulele ulterioare.
Încărcați datele etichetate
După etichetare, manifestul de ieșire conține o intrare cu numele atributului dvs. de etichetă (în acest caz squad-1626282229
) care conține un URI S3 către date formatate în SQuAD pe care le puteți utiliza în timpul antrenamentului. Vedeți următorul conținut manifest de ieșire:
Fiecare linie din manifest corespunde unei singure sarcini de lucrător.
Încărcați setul de tren SQuAD
Fața îmbrățișată are o pachet de set de date care vă oferă posibilitatea de a descărca și preprocesa SQuAD, dar pentru a adăuga întrebările și răspunsurile noastre personalizate, trebuie să facem puțină procesare. SQuAD este structurat în jurul unor seturi de subiecte. Fiecare subiect are o varietate de enunțuri de context diferite și fiecare enunț de context are perechi întrebări și răspunsuri. Pentru că dorim să ne creăm propriile întrebări pentru antrenament, trebuie să ne combinăm întrebările cu SQuAD. Din fericire pentru noi, adnotările noastre sunt deja în format SQuAD, așa că putem lua exemplele de etichete și le putem atașa ca subiect nou la datele SQuAD existente.
Creați un obiect Hugging Face Dataset
Pentru a ne introduce datele în formatul setului de date Hugging Face, avem mai multe opțiuni. Putem folosi load_dataset opțiunea, caz în care putem furniza un fișier CSV, JSON sau text care este încărcat ca obiect de set de date. De asemenea, puteți furniza load_dataset
cu un script de procesare pentru a vă converti fișierul în formatul dorit. Pentru această postare, folosim în schimb Dataset.from_dict()
metoda, care ne permite să furnizăm un dicționar în memorie pentru a crea un obiect de set de date. De asemenea, definim caracteristicile setului de date. Putem vizualiza caracteristicile utilizând Vizualizatorul setului de date Hugging Face, așa cum se arată în următoarea captură de ecran.
Caracteristicile noastre sunt următoarele:
- ID – ID-ul textului
- titlu – Titlul asociat subiectului
- context – Declarația de context pe care modelul trebuie să o caute pentru a găsi un răspuns
- întrebare – Întrebarea pe care i se pune modelul
- răspunde – Textul răspunsului acceptat și locația în declarația de context
Seturile de date Hugging Face ne permit să definim cu ușurință această schemă:
După ce ne creăm obiectul setului de date, trebuie să facem acest lucru tokeniza textul. Deoarece modelele nu pot accepta text brut ca intrare, trebuie să ne convertim textul într-o intrare numerică pe care o poate înțelege, altfel cunoscută ca tokenizarea. Tokenizarea este specifică modelului, așa că să înțelegem modelul pe care îl vom ajusta. Folosim un distilbert-bază-necarcată model. Arată foarte asemănător cu BERT: folosește încorporare de intrare, atenție cu mai multe capete (pentru mai multe informații despre această operație, consultați Transformatorul ilustrat), și straturi de feed forward, dar are jumătate din parametrii modelului de bază BERT original. Vedeți următoarele straturi inițiale de model:
Să defalcăm fiecare componentă a titlului modelului. Numele distilbert
denotă faptul că aceasta este o versiune distilată a modelului de bază BERT, care se obține printr-un proces numit distilare a cunoștințelor. Distilarea cunoștințelor ne permite să antrenăm un model de elev mai mic nu numai pe datele de formare, ci și pe răspunsurile la același set de instruire dintr-un model mai mare de profesor pre-instruit. base
se referă la dimensiunea modelului, în acest caz modelul a fost distilat dintr-un model de bază BERT (spre deosebire de un model mare BERT). uncased
se referă la textul pe care a fost instruit. În acest caz, textul nu a luat în considerare cazul; tot textul pe care a fost antrenat era litere mici. The uncased
aspectul afectează direct modul în care ne simbolizează textul. Din fericire, pe lângă faptul că oferă acces ușor la descărcarea modelelor de transformatoare, Hugging Face oferă și tokenizerul însoțitor al modelului. De asemenea, am descărcat un tokenizer personalizat pentru noi distilbert-base-uncased model
pe care acum îl folosim pentru a ne transforma textul:
O altă caracteristică a clasei setului de date este că ne permite să rulăm preprocesarea și tokenizarea în paralel cu funcția sa de hartă. Definim o functie de procesare si apoi o trecem la metoda map.
Pentru a răspunde la întrebări, Hugging Face are nevoie de mai multe componente (care sunt, de asemenea, definite în glosar):
- masca de atentie – O mască care indică modelului ce jetoane să acorde atenție, folosită în primul rând pentru a diferenția între textul real și jetoanele de umplutură
- poziții_începuse – Poziția de început a răspunsului în text
- poziții_finale – Poziția finală a răspunsului în text
- input_ids – Indicii de jetoane care mapează jetoanele la vocabular
Tokenizatorul nostru va tokeniza textul, dar trebuie să captăm în mod explicit pozițiile de început și de sfârșit ale răspunsului nostru, motiv pentru care am definit o funcție de preprocesare personalizată. Acum că avem contribuțiile gata, să începem antrenamentele!
Lansați jobul de formare
Putem rula antrenament în notebook-ul nostru, dar tipurile de instanțe de care avem nevoie pentru a ne instrui modelul de întrebări și răspunsuri într-o perioadă rezonabilă de timp, instanțele p3 și p4, sunt destul de puternice. Aceste cazuri tind să fie exagerate pentru rularea unui notebook sau ca persistente Cloud Elastic de calcul Amazon instanță (Amazon EC2). Aici intervine instruirea SageMaker. Instruirea SageMaker vă permite să lansați un job de instruire pe o instanță specificată sau pe instanțe care sunt valabile doar pe durata jobului de instruire. Acest lucru ne permite să rulăm pe instanțe mai mari, cum ar fi p4d.24xlarge, cu 8 GPU-uri NVIDIA A100, dar fără să ne facem griji că vom avea o factură uriașă în cazul în care uităm să-l oprim. De asemenea, ne oferă acces ușor la alte funcționalități SageMaker, cum ar fi Experimentele SageMaker pentru urmărirea cursurilor de antrenament ML și SageMaker Debugger pentru înțelegerea și profilarea posturilor dvs. de formare.
Antrenament local
Să începem prin a înțelege cum funcționează local antrenamentul unui model în Hugging Face, apoi trecem peste ajustările pe care le facem pentru a-l rula în SageMaker.
Hugging Face ușurează antrenamentul prin utilizarea clasei lor de antrenor. Clasa de antrenor ne permite să transmitem modelul nostru, seturile noastre de date de tren și validare, hiperparametrii noștri și chiar tokenizatorul nostru. Deoarece avem deja modelul nostru, precum și seturile noastre de antrenament și validare, trebuie doar să ne definim hiperparametrii. Putem face acest lucru prin intermediul TrainingArguments
clasă. Acest lucru ne permite să specificăm lucruri precum rata de învățare, dimensiunea lotului, numărul de epoci și parametri mai aprofundați, cum ar fi scăderea greutății sau o strategie de programare a ratei de învățare. După ce ne definim TrainingArguments
, putem transmite modelul nostru, setul de antrenament, setul de validare și argumentele pentru a instanția clasa noastră de antrenor. Atunci putem suna pur si simplu trainer.train()
pentru a începe să ne antrenăm modelul. Următorul bloc de cod demonstrează cum să rulați antrenamentul local:
Trimiteți date către S3
A face același lucru în instruirea SageMaker este simplu. Primul pas este să ne punem datele în Amazon S3, astfel încât modelul nostru să le poată accesa. Instruirea SageMaker vă permite să specificați o sursă de date; puteți folosi surse precum Amazon S3, Sistem de fișiere elastice Amazon (Amazon EFS) sau Amazon FSx pentru Luster pentru asimilarea de date de înaltă performanță. În cazul nostru, setul nostru de date SQuAD augmentat nu este deosebit de mare, așa că Amazon S3 este o alegere bună. Încărcăm datele noastre de antrenament într-un folder din Amazon S3 și când SageMaker pornește instanța noastră de antrenament, descarcă datele din locația noastră specificată.
Instanțiați modelul
Pentru a lansa jobul nostru de formare, putem folosi estimatorul încorporat Hugging Face în SageMaker SDK. SageMaker folosește clasa estimator pentru a defini parametrii pentru un job de instruire, precum și numărul și tipul de instanțe de utilizat pentru antrenament. Instruirea SageMaker este construită în jurul utilizării containerelor Docker. Puteți utiliza containerele implicite în SageMaker sau puteți furniza propriul container personalizat pentru antrenament. În cazul modelelor Hugging Face, SageMaker are încorporate containere Hugging Face cu toate dependențele de care aveți nevoie pentru a rula joburi de formare Hugging Face. Tot ce trebuie să facem este să definim scriptul nostru de antrenament, pe care containerul nostru Hugging Face îl folosește ca punct de intrare.
În acest script de antrenament, ne definim argumentele, pe care le transmitem punctului nostru de intrare sub forma unui set de hiperparametri, precum și codul nostru de antrenament. Codul nostru de antrenament este același ca și cum l-am rula local; putem folosi pur și simplu TrainingArguments
și apoi transmiteți-le unui obiect antrenor. Singura diferență este că trebuie să specificăm locația de ieșire în care să fie modelul nostru /opt/ml/model
astfel încât instruirea SageMaker să-l poată prelua, împacheta și trimite către Amazon S3. Următorul bloc de cod arată cum să instanțiați estimatorul nostru Hugging Face:
Reglați fin modelul
Pentru munca noastră de formare specifică, folosim o instanță p3.8xlarge constând din 4 GPU-uri V100. Clasa de antrenor acceptă automat instruirea pe instanțele multi-GPU, așa că nu avem nevoie de nicio configurare suplimentară pentru a ține cont de acest lucru. Ne antrenăm modelul pentru două epoci, cu o dimensiune a lotului de 16 și o rată de învățare de 4e5. De asemenea, permitem antrenamentul cu precizie mixtă, care utilizează precizia mixtă în zonele în care putem reduce precizia numerică fără a afecta acuratețea modelului nostru. Acest lucru mărește memoria noastră disponibilă și vitezele de antrenament. Pentru a lansa jobul de formare, sunăm la fit
metoda de la noi huggingface_estimator
clasă.
Când modelul nostru s-a terminat de antrenament, putem descărca modelul local și îl putem încărca în memoria notebook-ului nostru pentru a-l testa, ceea ce este demonstrat în notebook. Ne vom concentra pe o altă opțiune, implementând-o ca punct final SageMaker!
Implementați modelul instruit
Pe lângă furnizarea de utilități pentru instruire, SageMaker poate permite, de asemenea, oamenilor de știință de date și inginerilor ML să implementeze cu ușurință punctele finale REST pentru modelele lor instruite. Puteți implementa modele instruite în sau în afara SageMaker. Pentru mai multe informații, consultați Implementați un model în Amazon SageMaker.
Deoarece modelul nostru a fost instruit în SageMaker, este deja în formatul corect pentru a fi implementat ca punct final. Similar cu instruirea, definim o clasă de model SageMaker care definește modelul, codul de servire și numărul și tipul de instanțe pe care dorim să le implementăm ca puncte finale. De asemenea, similar cu instruirea, servirea se bazează pe containerele Docker și putem folosi oricare dintre containerele SageMaker încorporate sau putem furniza propriile noastre. Pentru această postare, folosim un container de servire PyTorch încorporat, așa că trebuie pur și simplu să definim câteva lucruri pentru a ne pune în funcțiune punctul final. Codul nostru de servire are nevoie de patru funcții:
- model_fn – Definește modul în care punctul final încarcă modelul (fa asta o singură dată, apoi îl păstrează în memorie pentru predicții ulterioare)
- input_fn – Definește modul în care intrarea este deserializată și procesată
- prezice_fn – Definește modul în care modelul nostru face predicții cu privire la intrarea noastră
- output_fn – Definește modul în care punctul final formatează și trimite înapoi datele de ieșire către clientul care face cererea
După ce definim aceste funcții, putem implementa punctul nostru final și îi putem transmite declarații de context și întrebări și returnăm răspunsul prezis:
Vizualizați rezultatele modelului
Deoarece am implementat un punct final SageMaker care ne permite să trimitem declarații de context și să primim răspunsuri, putem reveni și vizualiza inferențe rezultate în vizualizatorul original SQuAD pentru a vizualiza mai bine ceea ce modelul nostru a găsit în contextul pasajului. Facem acest lucru prin reformatarea rezultatelor inferenței înapoi în format SQuAD, apoi înlocuind etichetele Liquid din șablonul de lucru cu JSON formatat în SQuAD. Apoi putem încadra interfața de utilizare rezultată în șablonul nostru de lucru pentru a revizui iterativ rezultatele în contextul unui singur notebook, așa cum se arată în următoarea captură de ecran. Se poate face clic pe fiecare întrebare din stânga pentru a evidenția intervalele de text din dreapta care se potrivesc cu interogarea. Fără nicio întrebare selectată, toate intervalele de text sunt evidențiate în dreapta, așa cum se arată mai jos.
A curăța
Pentru a evita costurile viitoare, rulați A curăța secțiunea notebook-ului pentru a șterge toate resursele, inclusiv punctele finale SageMaker, obiectele S3 care conține setul de date brute și procesate și stiva CloudFormation. Când ștergerea este completă, asigurați-vă că opriți și ștergeți instanța de blocnotes care găzduiește scriptul de blocnotes curent.
Concluzie
În această postare, ați învățat cum să vă creați propriul set de date de răspuns la întrebări folosind Ground Truth și să îl combinați cu SQuAD pentru a vă instrui și a implementa propriul model de răspuns la întrebări folosind SageMaker. După ce completați blocnotesul, aveți un punct final SageMaker implementat care a fost antrenat pe setul de date personalizat de întrebări și răspunsuri. Acest punct final este gata pentru integrare în fluxurile de lucru NLU de producție, deoarece punctele finale SageMaker sunt disponibile prin intermediul API-urilor REST standard. Aveți, de asemenea, un set de date personalizat adnotat în format SQuAD 2.0, care vă permite să vă reanalizați modelul existent sau să încercați să antrenați alte arhitecturi de model cu răspunsuri la întrebări. În cele din urmă, aveți un mecanism pentru a vizualiza rapid rezultatele din inferența dvs. prin încărcarea șablonului de lucru în blocnotesul local.
Încearcă caietul, creșteți-l cu propriile întrebări și antrenați și implementați propriul model personalizat de răspuns la întrebări pentru cazurile dvs. de utilizare NLU!
Clădire fericită!
Despre Autori
Jeremy Feltracco este inginer de dezvoltare software la Amazon ML Solutions Lab la Amazon Web Services. El își folosește experiența în viziune computerizată, robotică și învățare automată pentru a ajuta clienții AWS să accelereze adoptarea AI.
Vidya Sagar Ravipati este Manager la Laboratorul Amazon ML Solutions, unde își folosește vasta experiență în sisteme distribuite pe scară largă și pasiunea sa pentru învățarea automată pentru a ajuta clienții AWS din diferite verticale ale industriei să-și accelereze adoptarea AI și cloud. Anterior, a fost inginer de învățare automată în servicii de conectivitate la Amazon, care a contribuit la construirea platformelor de personalizare și de întreținere predictivă.
Isaac Privitera este Senior Data Scientist la Amazon Machine Learning Solutions Lab, unde dezvoltă soluții personalizate de învățare automată și de deep learning pentru a aborda problemele de afaceri ale clienților. Lucrează în primul rând în spațiul viziunii computerizate, concentrându-se pe oferirea clienților AWS de instruire distribuită și învățare activă.
- Coinsmart. Cel mai bun schimb de Bitcoin și Crypto din Europa.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. ACCES LIBER.
- CryptoHawk. Radar Altcoin. Încercare gratuită.
- Sursa: https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- nlu-model/
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- Despre Noi
- accelera
- acces
- Conform
- Cont
- Contabilitate
- precis
- peste
- activ
- plus
- Suplimentar
- adresa
- Adoptare
- agenţi
- AI
- TOATE
- Permiterea
- deja
- Amazon
- Amazon Web Services
- sumă
- O alta
- răspunde
- API-uri
- arhitectură
- ZONĂ
- argumente
- în jurul
- articol
- bunuri
- Asistent
- atenţie
- de audit
- augmented
- Autorii
- Automata
- Automat
- disponibil
- AWS
- fundal
- barieră
- bariere
- Început
- fiind
- de mai jos
- Proiect de lege
- Pic
- Bloca
- corp
- frontieră
- construi
- construit-in
- afaceri
- apel
- Poate obține
- captura
- cazuri
- contesta
- provocare
- taxe
- Alege
- clasă
- Cloud
- cod
- Colectare
- component
- Calcula
- calculator
- Configuraţie
- Suport conectare
- Consoleze
- consolidare
- Recipient
- Containere
- conține
- conținut
- antreprenori
- Corespunzător
- Cheltuieli
- crea
- a creat
- creează
- Crearea
- Curent
- personalizat
- client
- Relații Clienți
- clienţii care
- de date
- om de știință de date
- Mai adânc
- livrarea
- demonstra
- demonstrat
- depinde de
- implementa
- dislocate
- Implementarea
- desfășurarea
- proiectat
- detaliat
- detalii
- Determina
- Dezvoltare
- diferit
- dificil
- direct
- Boală
- distribuite
- Docher
- Nu
- jos
- Descarca
- download-uri
- conducere
- în timpul
- cu ușurință
- permițând
- Punct final
- inginer
- inginerii
- Engleză
- evaluare
- exemplu
- existent
- experienţă
- extracte
- Față
- Caracteristică
- DESCRIERE
- În cele din urmă
- First
- Concentra
- concentrându-se
- următor
- formă
- format
- Înainte
- găsit
- Gratuit
- funcţie
- mai mult
- viitor
- genera
- generator
- generaţie
- GitHub
- merge
- bine
- ajutor
- ajută
- de înaltă calitate
- Evidențiați
- Evidențiat
- extrem de
- găzduire
- Cum
- Cum Pentru a
- HTTPS
- mare
- uman
- Oamenii
- sute
- identifica
- identificarea
- Identitate
- imagine
- punerea în aplicare a
- implementat
- imposibil
- îmbunătăţi
- Inc
- include
- include
- Inclusiv
- tot mai mult
- industrie
- informații
- Infrastructură
- intrare
- integrare
- Inteligent
- interes
- interfaţă
- Internațional
- intuitiv
- IT
- în sine
- JavaScript
- Loc de munca
- Locuri de munca
- Cheie
- cunoştinţe
- cunoscut
- de laborator
- etichetarea
- etichete
- limbă
- mare
- mai mare
- lansa
- învățat
- învăţare
- Părăsi
- pîrghii
- Autorizat
- Probabil
- Linie
- Lichid
- Listă
- încărca
- încărcare
- local
- la nivel local
- locaţie
- maşină
- masina de învățare
- FACE
- Efectuarea
- gestionate
- manager
- Hartă
- cartografiere
- Harta
- Marketing
- masca
- potrivire
- sens
- mijloace
- Memorie
- mixt
- ML
- model
- Modele
- monitor
- mai mult
- cele mai multe
- multiplu
- Natural
- caiet
- număr
- obținut
- oferi
- promoții
- on-line
- deschide
- de deschidere
- funcionar
- de operare
- operaţie
- Optimizați
- optimizarea
- Opțiune
- Opţiuni
- comandă
- organizație
- Altele
- in caz contrar
- propriu
- parte
- special
- în special
- Plătește
- efectuarea
- personalizare
- Platforme
- Punct
- puncte
- Portal
- poziţie
- pozitiv
- puternic
- prezice
- Predictii
- de stabilire a prețurilor
- privat
- Problemă
- probleme
- proces
- procese
- prelucrare
- Produs
- producere
- Produse
- profilare
- furniza
- furnizează
- furnizarea
- public
- Q & A
- calitate
- întrebare
- repede
- Crud
- Citind
- rezonabil
- a primi
- reduce
- depozit
- reprezentare
- Resurse
- REST
- REZULTATE
- reveni
- venituri
- revizuiască
- robotica
- rotund
- Alerga
- funcţionare
- scalabilitate
- Om de stiinta
- oamenii de stiinta
- sdk
- Caută
- securitate
- segment
- segmentarea
- segmente
- selectate
- Servicii
- servire
- set
- configurarea
- Pantaloni scurți
- indicat
- asemănător
- simplu
- Mărimea
- aptitudini
- mic
- So
- Software
- de dezvoltare de software
- solid
- soluţie
- soluţii
- unele
- Spaţiu
- special
- de specialitate
- specific
- stivui
- standard
- Începe
- Declarație
- Declarații
- depozitare
- stoca
- Strategie
- structurat
- student
- de succes
- livra
- a sustine
- Sprijină
- sistem
- sisteme
- sarcini
- test
- Prin
- timp
- consumă timp
- Titlu
- semn
- tokenizarea
- cuvinte pot
- indicativele
- subiecte
- lanternă
- Urmărire
- Pregătire
- Transforma
- Tipuri
- ui
- înţelege
- înţelegere
- us
- utilizare
- folosi
- validare
- valoare
- varietate
- furnizori
- Verificare
- Impotriva
- verticalele
- Video
- Vizualizare
- viruși
- viziune
- Voce
- aștepta
- web
- servicii web
- Ce
- în timp ce
- OMS
- Wikipedia
- în
- fără
- Apartamente
- muncitorii
- Forta de munca
- fabrică
- viermi
- ani