De siste årene har naturlig språkforståelse (NLU) i økende grad funnet forretningsverdi, drevet av modellforbedringer samt skalerbarheten og kostnadseffektiviteten til skybasert infrastruktur. Nærmere bestemt Transformator dyp læringsarkitektur, ofte implementert i form av BERTI modeller, har vært svært vellykket, men trening, finjustering og optimalisering av disse modellene har vist seg å være et utfordrende problem. Takk til AWS og Hugging Face-samarbeid, er det nå enklere å trene og optimalisere NLU-modeller på Amazon SageMaker bruker SageMaker Python SDK, men det er fortsatt vanskelig og tidkrevende å hente merkede data for disse modellene.
Et NLU-problem av spesiell forretningsinteresse er oppgaven med å besvare spørsmål. I dette innlegget viser vi hvordan du bygger et tilpasset spørsmålssvarsdatasett ved å bruke Amazon SageMaker Ground Truth å trene et Hugging Face-spørsmål som svarer på NLU-modellen.
Spørsmål besvare utfordringer
Spørsmålsbesvarelse innebærer at en modell automatisk produserer et svar på en spørring gitt en del tekst som kanskje inneholder svaret eller ikke. For eksempel gitt følgende spørsmål: "Hvilke arbeidsflyter støtter SageMaker Ground Truth?" en modell skal kunne identifisere segmentet "kommentarkonsolidering og revisjon" i følgende avsnitt:
SageMaker Ground Truth bidrar til å forbedre kvaliteten på etiketter gjennom merknadskonsolidering og revisjonsarbeidsflyter. Merknadskonsolidering er prosessen med å samle inn etikettinndata fra to eller flere datamerkere og kombinere dem for å lage en enkelt dataetikett for maskinlæringsmodellen din. Med innebygde arbeidsflyter for revisjon og gjennomgang kan arbeidere utføre etikettverifisering og gjøre justeringer for å forbedre nøyaktigheten.
Dette problemet er utfordrende fordi det krever en modell for å forstå betydningen av et spørsmål, i stedet for bare å utføre søkeord. Nøyaktige modeller på dette området kan redusere kundestøttekostnadene gjennom å drive intelligente chatbots, levere høykvalitets taleassistentprodukter og øke nettbutikkinntektene gjennom personlig svar på produktspørsmål. Et stort datasett i dette området er Stanford Question Answering Dataset (SQuAD), et mangfoldig spørsmålssvarsdatasett som presenterer en modell med korte tekstpassasjer og krever at modellen forutsi plasseringen av svartekstspennet i passasjen. SQuAD er et leseforståelsesdatasett, bestående av spørsmål stilt av publikumsarbeidere på et sett med Wikipedia-artikler, der svaret på hvert spørsmål enten er et spenn av tekst fra den tilsvarende passasjen, eller på annen måte merket som umulig å svare på.
En utfordring med å tilpasse SQuAD for forretningsbruk er å generere domenespesifikke tilpassede datasett. Denne prosessen med å lage nye spørsmål og svar-datasett krever et spesialisert brukergrensesnitt som lar kommentatorer fremheve spenn og legge til spørsmål til disse spennene. Den må også kunne støtte tillegg av umulige spørsmål for å støtte SQuAD 2.0-formatet, som inkluderer spørsmål som ikke kan besvares. Disse umulige spørsmålene hjelper modeller med å få ytterligere forståelse for hvilke spørsmål som ikke kan besvares ved å bruke den gitte passasjen. De tilpassede arbeidermaler i Ground Truth forenkle genereringen av disse datasettene ved å gi arbeidere en skreddersydd kommentaropplevelse for å lage spørsmål og svar-datasett.
Løsningsoversikt
Denne løsningen oppretter og administrerer Ground Truth-merkejobber for å merke et domenespesifikt tilpasset spørsmål-svar-datasett ved hjelp av et tilpasset merknadsbrukergrensesnitt. Vi bruker SageMaker til å trene, finjustere, optimalisere og distribuere en Hugging Face
BERT-modell bygget med PyTorch på et tilpasset datasett for svar på spørsmål.
Du kan implementere løsningen ved å distribuere den medfølgende AWS skyformasjon mal i AWS-kontoen din. AWS CloudFormation håndterer distribusjon av AWS Lambda funksjoner som støtter pre-annotering og merknadskonsolidering for merknadsbrukergrensesnittet. Det skaper også en Amazon enkel lagringstjeneste (Amazon S3) bøtte og AWS identitets- og tilgangsadministrasjon (IAM)-roller som skal brukes når du oppretter en merkejobb.
Dette innlegget leder deg gjennom hvordan du gjør følgende:
- Lag ditt eget datasett med svar på spørsmål, eller forsterk et eksisterende ved å bruke Ground Truth
- Bruk Hugging Face-datasett for å kombinere og tokenisere tekst
- Finjuster en BERT-modell på spørsmålssvarsdataene dine ved å bruke SageMaker-trening
- Distribuer modellen din til et SageMaker-endepunkt og visualiser resultatene dine
Brukergrensesnitt for merknader
Vi bruker en ny tilpasset arbeidsoppgavemal med Ground Truth for å legge til nye merknader til det eksisterende SQuAD-datasettet. Denne løsningen tilbyr en arbeidsoppgavemal samt en lambda-funksjon før merknader (som håndterer å legge data inn i brukergrensesnittet) og lambda-funksjon etter merknad (som trekker ut resultater fra brukergrensesnittet etter at merkingen er fullført).
Denne egendefinerte arbeidsoppgavemalen gir deg muligheten til å markere tekst i høyre rute, og deretter legge til et tilsvarende spørsmål i venstre rute som er relatert til den uthevede teksten. Uthevet tekst i høyre rute kan også legges til alle tidligere opprettede spørsmål. Dessuten kan du legge til umulige spørsmål iht SquaAD 2.0 format. Umulige spørsmål lar modeller redusere antallet upålitelige falske positive gjetninger når passasjen ikke er i stand til å svare på et spørsmål.
Dette brukergrensesnittet bruker det samme JSON-skjemaet som SQuAD 2.0-datasettet, noe som betyr at det kan fungere over flere artikler og avsnitt, og vise ett avsnitt om gangen ved å bruke Tidligere og neste knapper. Brukergrensesnittet gjør det enkelt å overvåke og bestemme merkearbeidet hver annotator må fullføre under innsendingstrinnet.
Fordi merknadsgrensesnittet er inneholdt i en enkelt Flytende HTML-fil, kan du tilpasse merkeopplevelsen med kunnskap om grunnleggende JavaScript. Du kan også endre Flytende tagger for å sende tilleggsinformasjon til merkegrensesnittet, og du kan endre selve malen for å inkludere mer detaljerte arbeidsinstruksjoner.
Anslåtte kostnader
Implementering av denne løsningen kan medføre en maksimal kostnad på rundt $20, uten å ta hensyn til kostnadene for menneskelig merking. Amazon S3, Lambda, SageMaker og Ground Truth tilbyr alle AWS gratis nivå, med kostnader for ekstra bruk. For mer informasjon, se følgende prissider:
- Amazon S3-priser
- AWS Lambda Priser
- Amazon SageMaker-priser
- Priser for Amazon SageMaker-datamerking – Denne avgiften avhenger av hvilken type arbeidsstyrke du bruker. Hvis du er en ny bruker av Ground Truth, foreslår vi at du bruker en privat arbeidsstyrke og inkluderer deg selv som arbeider for å teste konfigurasjonen av merkejobben.
Forutsetninger
For å implementere denne løsningen må du ha følgende forutsetninger:
- An AWS-konto.
- Kjennskap til Ground Truth. For mer informasjon, se Bruk Amazon SageMaker Ground Truth til å merke data.
- Kjennskap til AWS CloudFormation. For mer informasjon, se AWS CloudFormation brukerveiledning.
- En SageMaker arbeidsstyrke. Til denne demonstrasjonen bruker vi privat arbeidsstyrke. Du kan opprette en arbeidsstyrke på SageMaker-konsollen.
Følgende GIF viser hvordan du oppretter en privat arbeidsstyrke. For instruksjoner, se Opprett en Amazon Cognito Workforce ved hjelp av siden Labelling Workforces.
Start CloudFormation Stack
Nå som du har sett strukturen til løsningen, distribuerer du den på kontoen din slik at du kan kjøre et eksempel på en arbeidsflyt. Alle distribusjonstrinnene knyttet til merkingspipelinen administreres av AWS CloudFormation. Dette betyr at AWS CloudFormation lager dine lambda-funksjoner for pre-annotering og merknadskonsolidering, samt en S3-bøtte for å lagre inn- og utdata.
Du kan starte stabelen i AWS-regionen us-east-1
på AWS CloudFormation-konsollen ved å bruke Start Stack knapp. For å starte stabelen i en annen region, bruk instruksjonene i README i GitHub repository.
Betjen den bærbare datamaskinen
Etter at løsningen er distribuert til kontoen din, heter en notatbokforekomst gt-hf-squad-notebook
er tilgjengelig på kontoen din. For å begynne å bruke den bærbare datamaskinen, fullfør følgende trinn:
- På Amazon SageMaker-konsollen, naviger til forekomstsiden for den bærbare datamaskinen.
- Velg Åpne JupyterLab for å åpne forekomsten.
- Inne i forekomsten, bla til depotet
hf-gt-custom-qa
og åpne notisbokenhf_squad_finetuning.ipynb
. - Velg
conda_pytorch_p38
som kjernen din.
Nå som du har opprettet en notatbokforekomst og åpnet notatboken, kan du kjøre celler i notatboken for å betjene løsningen. Resten av dette innlegget gir ytterligere detaljer til hver seksjon i notatboken etter hvert.
Last ned og inspiser dataene
De SQuAD datasett inneholder et opplæringsdatasett samt test- og utviklingsdatasett. Notatboken laster ned SQuAD2.0-datasettet for deg, men du kan velge hvilken versjon av SQuAD som skal brukes ved å endre notatbokcellen under Last ned og inspiser dataene.
SQuAD ble opprettet av Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev og Percy Liang. For mer informasjon, se originalpapir og datasett. SQuAD har blitt lisensiert av forfatterne under Creative Commons Attribution-ShareAlike 4.0 International Public License.
La oss se på et eksempel på spørsmål og svar-par fra SQuAD:
Avsnittstittel: Immunsystem
Immunsystemet er et system av mange biologiske strukturer og prosesser i en organisme som beskytter mot sykdom. For å fungere ordentlig må et immunsystem oppdage en lang rekke midler, kjent som patogener, fra virus til parasittiske ormer, og skille dem fra organismens eget friske vev. Hos mange arter kan immunsystemet klassifiseres i undersystemer, slik som det medfødte immunsystemet versus det adaptive immunsystemet, eller humoral immunitet versus cellemediert immunitet. Hos mennesker skiller blod-hjerne-barrieren, blod-cerebrospinalvæske-barrieren og lignende væske-hjerne-barrierer det perifere immunsystemet fra det nevroimmune systemet som beskytter hjernen.
Spørsmål: Hva beskytter immunsystemet organismer mot?
Svar: sykdom
Last modell
Nå som du har sett et eksempel på spørsmål og svar-par i SQuAD, kan du laste ned en modell som du kan finjustere for svar på spørsmål. Hugging Face lar deg enkelt laste ned en basismodell som har gjennomgått storskala forhåndstrening og reinitialisere den for en annen nedstrømsoppgave. I dette tilfellet laster du ned distilbert-base-uncased
modell og gjenbruk den for spørsmålssvar ved å bruke AutoModelForQuestionAnswering
klasse fra Hugging Face. Du bruker også AutoTokenizer
klasse for å hente modellens ferdigtrente tokenizer. Vi dykker dypere ned i modellen vi bruker senere i innlegget.
Se BERT-inndata
BERT krever at du transformerer tekstdata til en numerisk representasjon kjent som poletter. Det finnes en rekke tokenizers tilgjengelig; følgende tokens ble opprettet av en tokenizer spesielt designet for BERT som du instansierer med et bestemt vokabular. Hvert token tilordnes et ord i vokabularet. La oss se på spørsmålet om det transformerte immunsystemet og konteksten du gir BERT for slutning.
Modellslutning
Nå som du har sett hva BERT tar som input, la oss se på hvordan du kan få slutningsresultater fra modellen. Følgende kode demonstrerer hvordan du bruker de tidligere genererte tokeniserte inndataene og returnerer slutningsresultater fra modellen. I likhet med hvordan BERT ikke kan akseptere råtekst som input, genererer den heller ikke råtekst som utdata. Du oversetter BERTs utdata ved å identifisere start- og sluttpunktene i avsnittet som BERT identifiserte som svaret. Deretter tilordner du utdataene til våre tokens og tilbake til engelsk tekst.
De oversatte resultatene er som følger:
Spørsmål: Hva beskytter immunsystemet organismer mot?
Svar: sykdom
Øk SQuAD
For å få ytterligere merkede data bruker vi deretter en tilpasset arbeidsoppgavemal i Ground Truth. Vi kan først lage en ny artikkel i SQuAD-format. Notatboken kopierer denne filen fra repoen til Amazon S3, men gjør gjerne eventuelle endringer før du kjører Øk SQuAD celle. Formatet til SQuAD vises i følgende kode. Hver SQuAD JSON-fil inneholder flere artikler lagret i data
nøkkel. Hver artikkel har en title
felt og ett eller flere avsnitt. Disse avsnittene inneholder tekstsegmenter kalt context
og eventuelle tilknyttede spørsmål i qas
liste. Fordi vi kommenterer fra bunnen av, kan vi forlate qas
liste tom og bare gi kontekst. Brukergrensesnittet er i stand til å gå på tvers av både avsnitt og artikler, slik at du kan gjøre hver arbeidsoppgave så stor eller liten som ønsket.
Etter at vi har generert en eksempel SQuAD-datafil, må vi lage en Ground Truth utvidet manifestfil som refererer til våre inndata. Vi gjør dette ved å generere en JSON-linjeformatert fil med en "source
”-tasten som tilsvarer plasseringen i Amazon S3 der vi lagret SQuAD-dataene våre:
Få tilgang til merkeportalen
Etter at du har sendt jobben til Ground Truth, kan du se den genererte merkejobben på Ground Truth-konsollen.
For å utføre merking, må du logge inn på arbeiderportalkontoen du opprettet som en del av forutsetningstrinnene. Jobben din er tilgjengelig i arbeiderportalen etter noen minutter med forhåndsbehandling. Etter å ha åpnet oppgaven, får du den tilpassede arbeidermalen for spørsmål og svar-kommentarer. Du kan legge til spørsmål ved å markere deler av teksten i konteksten og deretter velge Legg til spørsmål.
Sjekk status for merkejobben
Etter innsending kan du kjøre Sjekk status for merkejobben celle for å se om merkejobben er fullført. Vent på fullføring før du fortsetter til flere celler.
Last inn merkede data
Etter merking inneholder utdatamanifestet en oppføring med navnet på etikettattributtet (i dette tilfellet squad-1626282229
) som inneholder en S3 URI til SQuAD-formatert data som du kan bruke under trening. Se følgende utdatamanifestinnhold:
Hver linje i manifestet tilsvarer en enkelt arbeidsoppgave.
Last SQuAD togsett
Hugging Face har en datasettpakke som gir deg muligheten til å laste ned og forhåndsbehandle SQuAD, men for å legge til våre tilpassede spørsmål og svar, må vi gjøre litt prosessering. SQuAD er strukturert rundt sett med emner. Hvert emne har en rekke forskjellige kontekstutsagn, og hver kontekstsetning har spørsmål og svarpar. Fordi vi ønsker å lage våre egne spørsmål for trening, må vi kombinere spørsmålene våre med SQuAD. Heldigvis for oss er merknadene våre allerede i SQuAD-format, så vi kan ta eksempeletikettene våre og legge dem til som et nytt emne til de eksisterende SQuAD-dataene.
Lag et Hugging Face Dataset-objekt
For å få dataene våre inn i Hugging Faces datasettformat, har vi flere alternativer. Vi kan bruke last_datasett alternativet, i så fall kan vi levere en CSV-, JSON- eller tekstfil som lastes inn som et datasettobjekt. Du kan også levere load_dataset
med et behandlingsskript for å konvertere filen til ønsket format. For dette innlegget bruker vi i stedet Dataset.from_dict()
metode, som lar oss levere en in-memory ordbok for å lage et datasettobjekt. Vi definerer også datasettfunksjonene våre. Vi kan se funksjonene ved å bruke Hugging Faces datasettviser, som vist på følgende skjermbilde.
Våre funksjoner er som følger:
- ID – ID-en til teksten
- tittel – Den tilknyttede tittelen for emnet
- kontekst – Kontekstsetningen modellen må søke etter for å finne et svar
- spørsmål – Spørsmålet modellen blir stilt
- besvare – Den aksepterte svarteksten og plassering i konteksterklæringen
Et sett med å klemme ansikt lar oss enkelt definere dette skjemaet:
Etter at vi har opprettet datasettobjektet vårt, må vi symbolisere teksten. Fordi modeller ikke kan akseptere rå tekst som input, må vi konvertere teksten vår til en numerisk input som den kan forstå, ellers kjent som tokenization. Tokenisering er modellspesifikk, så la oss forstå modellen vi skal finjustere. Vi bruker en distilbert-base-uforet modell. Det ser veldig ut som BERT: det bruker input embeddings, multi-head oppmerksomhet (for mer informasjon om denne operasjonen, se Den illustrerte transformatoren), og feed forward-lag, men har halvparten av parameterne til den opprinnelige BERT-basismodellen. Se følgende innledende modelllag:
La oss bryte ned hver komponent i modellens tittel. Navnet distilbert
angir det faktum at dette er en destillert versjon av BERT-basismodellen, som oppnås gjennom en prosess som kalles kunnskapsdestillasjon. Kunnskapsdestillasjon lar oss trene en mindre elevmodell på ikke bare opplæringsdataene, men også svarene på det samme opplæringssettet fra en større forhåndsutdannet lærermodell. base
refererer til størrelsen på modellen, i dette tilfellet ble modellen destillert fra en BERT basismodell (i motsetning til en BERT stor modell). uncased
refererer til teksten den ble trent på. I dette tilfellet tok ikke teksten hensyn til sak; all teksten den ble trent på var små bokstaver. De uncased
aspekt påvirker direkte måten vi tokeniserer teksten vår på. Heldigvis, i tillegg til å gi enkel tilgang til å laste ned transformatormodeller, gir Hugging Face også modellens medfølgende tokenizer. Vi lastet også ned en tilpasset tokenizer for vår distilbert-base-uncased model
som vi nå bruker til å transformere teksten vår:
En annen funksjon i datasettklassen er at den lar oss kjøre forbehandling og tokenisering parallelt med kartfunksjonen. Vi definerer en prosesseringsfunksjon og sender den deretter til kartmetoden.
For å svare på spørsmål trenger Hugging Face flere komponenter (som også er definert i ordliste):
- oppmerksomhetsmaske – En maske som indikerer til modellen hvilke tokens du bør være oppmerksom på, brukt primært for å skille mellom faktisk tekst og polstringssymboler
- startposisjoner – Startposisjonen til svaret i teksten
- endeposisjoner – Sluttposisjonen til svaret i teksten
- input_ids – Token-indeksene kartlegger tokens til ordforrådet
Tokenizeren vår vil tokenisere teksten, men vi må eksplisitt fange opp start- og sluttposisjonene til svaret vårt, og det er grunnen til at vi har definert en tilpasset forbehandlingsfunksjon. Nå som vi har våre innspill klare, la oss begynne å trene!
Start treningsjobb
Vi kan kjøre opplæring i notatboken vår, men typene instanser vi trenger for å trene vår Q&A-modell på rimelig tid, p3- og p4-instanser, er ganske kraftige. Disse tilfellene har en tendens til å være overkill for å kjøre en bærbar PC eller som en vedvarende Amazon Elastic Compute Cloud (Amazon EC2) forekomst. Det er her SageMaker-trening kommer inn. SageMaker-trening lar deg starte en treningsjobb på en spesifisert instans eller instanser som kun er oppe i løpet av treningsjobben. Dette lar oss kjøre på større forekomster som p4d.24xlarge, med 8 NVIDIA A100 GPUer, men uten å bekymre oss for å kjøre opp en stor regning i tilfelle vi glemmer å slå den av. Det gir oss også enkel tilgang til andre SageMaker-funksjoner, som SageMaker eksperimenter for å spore dine ML treningsløp og SageMaker Debugger for å forstå og profilere treningsjobbene dine.
Lokal trening
La oss starte med å forstå hvordan trening av en modell i Hugging Face fungerer lokalt, og deretter gå gjennom justeringene vi gjør for å kjøre den i SageMaker.
Hugging Face gjør treningen enkel ved å bruke trenerklassen deres. Trenerklassen lar oss sende inn modellen vår, tog- og valideringsdatasettene våre, hyperparametrene våre og til og med tokenizeren vår. Fordi vi allerede har vår modell så vel som våre trenings- og valideringssett, trenger vi bare å definere hyperparametrene våre. Vi kan gjøre dette gjennom TrainingArguments
klasse. Dette lar oss spesifisere ting som læringshastighet, batchstørrelse, antall epoker og mer dyptgående parametere som vektreduksjon eller en planleggingsstrategi for læringshastighet. Etter at vi har definert vår TrainingArguments
, kan vi sende inn vår modell, treningssett, valideringssett og argumenter for å instansiere trenerklassen vår. Da kan vi bare ringe trainer.train()
å begynne å trene modellen vår. Følgende kodeblokk viser hvordan du kjører lokal trening:
Send data til S3
Å gjøre det samme i SageMaker-trening er enkelt. Det første trinnet er å legge dataene våre i Amazon S3 slik at modellen vår kan få tilgang til dem. SageMaker-opplæring lar deg spesifisere en datakilde; du kan bruke kilder som Amazon S3, Amazon elastisk filsystem (Amazon EFS), eller Amazon FSx for Luster for datainntak med høy ytelse. I vårt tilfelle er ikke vårt utvidede SQuAD-datasett spesielt stort, så Amazon S3 er et godt valg. Vi laster opp treningsdataene våre til en mappe i Amazon S3, og når SageMaker spinner opp treningsforekomsten vår, laster den ned dataene fra vår angitte plassering.
Instantier modellen
For å starte treningsjobben vår kan vi bruke den innebygde Hugging Face-estimatoren i SageMaker SDK. SageMaker bruker estimatorklassen til å definere parametrene for en treningsjobb samt antall og type forekomster som skal brukes til trening. SageMaker-opplæring er bygget rundt bruken av Docker-containere. Du kan bruke standardbeholderne i SageMaker eller levere din egen tilpassede beholder for opplæring. Når det gjelder Hugging Face-modeller, har SageMaker innebygde Hugging Face-beholdere med alle avhengighetene du trenger for å kjøre Hugging Face-treningsjobber. Alt vi trenger å gjøre er å definere treningsskriptet vårt, som vår Hugging Face-beholder bruker som inngangspunkt.
I dette treningsskriptet definerer vi argumentene våre, som vi sender til inngangspunktet vårt i form av et sett med hyperparametre, samt treningskoden vår. Treningskoden vår er den samme som om vi kjørte den lokalt; vi kan ganske enkelt bruke TrainingArguments
og send dem deretter til et trenerobjekt. Den eneste forskjellen er at vi må spesifisere utgangsstedet for modellen vår /opt/ml/model
slik at SageMaker-trening kan ta den, pakke den og sende den til Amazon S3. Følgende kodeblokk viser hvordan du instansierer vår Hugging Face-estimator:
Finjuster modellen
For vår spesifikke treningsjobb bruker vi en p3.8xlarge instans bestående av 4 V100 GPUer. Trenerklassen støtter automatisk trening på multi-GPU-forekomster, så vi trenger ikke noe ekstra oppsett for å ta hensyn til dette. Vi trener modellen vår for to epoker, med en batchstørrelse på 16, og en læringsrate på 4e5. Vi muliggjør også blandet presisjonstrening, som bruker blandet presisjon i områder der vi kan redusere numerisk presisjon uten å påvirke modellens nøyaktighet. Dette øker vårt tilgjengelige minne og treningshastigheter. For å lansere treningsjobben kaller vi fit
metode fra vår huggingface_estimator
klasse.
Når modellen vår er ferdig trent, kan vi laste ned modellen lokalt og laste den inn i notatbokens minne for å teste den, noe som vises i notatboken. Vi vil fokusere på et annet alternativ, og distribuere det som et SageMaker-endepunkt!
Distribuer opplært modell
I tillegg til å tilby verktøy for opplæring, kan SageMaker også la dataforskere og ML-ingeniører enkelt distribuere REST-endepunkter for sine trente modeller. Du kan distribuere modeller som er trent i eller utenfor SageMaker. For mer informasjon, se Distribuer en modell i Amazon SageMaker.
Fordi modellen vår ble opplært i SageMaker, er den allerede i riktig format for å distribuere som et endepunkt. I likhet med opplæring, definerer vi en SageMaker-modellklasse som definerer modellen, serveringskoden og antallet og typen forekomster vi ønsker å distribuere som endepunkter. I likhet med trening er servering basert på Docker-beholdere, og vi kan bruke en av de innebygde SageMaker-beholderne eller levere våre egne. For dette innlegget bruker vi en innebygd PyTorch-serveringsbeholder, så vi trenger ganske enkelt å definere noen få ting for å få endepunktet vårt i gang. Vår serveringskode trenger fire funksjoner:
- modell_fn – Definerer hvordan endepunktet laster modellen (det gjør dette bare én gang, og deretter holder det i minnet for påfølgende spådommer)
- input_fn – Definerer hvordan inndata deserialiseres og behandles
- forutsi_fn – Definerer hvordan modellen vår gir spådommer om våre innspill
- output_fn – Definerer hvordan endepunktet formaterer og sender utdataene tilbake til klienten som sender forespørselen
Etter at vi har definert disse funksjonene, kan vi distribuere endepunktet vårt og sende det kontekstutsagn og spørsmål og returnere det anslåtte svaret:
Visualiser modellresultater
Fordi vi implementerte et SageMaker-endepunkt som lar oss sende kontekstutsagn og motta svar, kan vi gå tilbake og visualisere de resulterende slutningene i den originale SQuAD-visningen for å bedre visualisere hva modellen vår fant i passasjekonteksten. Vi gjør dette ved å formatere resultatene av inferens tilbake til SQuAD-format, og deretter erstatte Liquid-taggene i arbeidermalen med den SQuAD-formaterte JSON. Vi kan deretter iframe det resulterende brukergrensesnittet i arbeidermalen vår for å iterativt gjennomgå resultatene innenfor konteksten av en enkelt notatbok, som vist i følgende skjermbilde. Hvert spørsmål til venstre kan klikkes for å markere tekstspennene til høyre som samsvarer med søket. Når ingen spørsmål er valgt, er alle tekstspenn uthevet til høyre som vist nedenfor.
Rydd opp
For å unngå å pådra seg fremtidige kostnader, kjør Rydd opp delen av notatboken for å slette alle ressursene, inkludert SageMaker-endepunkter, S3-objekter som inneholder det rå og behandlede datasettet, og CloudFormation-stakken. Når slettingen er fullført, sørg for å stoppe og slette notatbokforekomsten som er vert for gjeldende notatbokskript.
konklusjonen
I dette innlegget lærte du hvordan du lager ditt eget spørsmålssvarsdatasett ved å bruke Ground Truth og kombinerer det med SQuAD for å trene og distribuere din egen spørsmålsvarsmodell ved hjelp av SageMaker. Etter at du har fullført notatblokken, har du et utplassert SageMaker-endepunkt som ble opplært på det tilpassede Q&A-datasettet ditt. Dette endepunktet er klart for integrering i produksjons-NLU-arbeidsflytene dine, fordi SageMaker-endepunkter er tilgjengelige gjennom standard REST APIer. Du har også et annotert tilpasset datasett i SQuAD 2.0-format, som lar deg trene din eksisterende modell på nytt eller prøve å trene andre modellarkitekturer for spørsmålsbesvarelse. Til slutt har du en mekanisme for raskt å visualisere resultatene fra slutningen din ved å laste inn arbeidermalen i din lokale notatbok.
Prøve notatboken, forsterk den med dine egne spørsmål, og tren opp og distribuer din egen tilpassede svarmodell for spørsmål for dine NLU-brukstilfeller!
Glad bygning!
Om forfatterne
Jeremy Feltracco er en programvareutviklingsingeniør med Amazon ML Solutions Lab hos Amazon Web Services. Han bruker sin bakgrunn innen datasyn, robotteknologi og maskinlæring for å hjelpe AWS-kunder med å få fart på AI-adopsjonen.
Vidya Sagar Ravipati er leder i Amazon ML Solutions Lab, der han utnytter sin store erfaring innen store distribuerte systemer og sin lidenskap for maskinlæring for å hjelpe AWS-kunder på tvers av forskjellige bransjevirksomheter, få fart på AI og sky-adopsjon. Tidligere var han maskinlæringsingeniør i Connectivity Services hos Amazon som bidro til å bygge personaliserings- og prediktive vedlikeholdsplattformer.
Isaac Privitera er senior dataforsker ved Amazon Machine Learning Solutions Lab, hvor han utvikler skreddersydde maskinlærings- og dyplæringsløsninger for å løse kundenes forretningsproblemer. Han jobber primært innen datasynsområdet, med fokus på å gi AWS-kunder distribuert opplæring og aktiv læring.
- Myntsmart. Europas beste Bitcoin og Crypto Exchange.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. FRI TILGANG.
- CryptoHawk. Altcoin Radar. Gratis prøveperiode.
- Kilde: https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- nlu-modell/
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- Om oss
- akselerere
- adgang
- Ifølge
- Logg inn
- Regnskap og administrasjon
- nøyaktig
- tvers
- aktiv
- tillegg
- Ytterligere
- adresse
- Adopsjon
- agenter
- AI
- Alle
- tillate
- allerede
- Amazon
- Amazon Web Services
- beløp
- En annen
- besvare
- APIer
- arkitektur
- AREA
- argumenter
- rundt
- Artikkel
- artikler
- Assistent
- oppmerksomhet
- revisjon
- augmented
- forfattere
- Automatisert
- Automatisk
- tilgjengelig
- AWS
- bakgrunn
- barriere
- barrierer
- Begynnelsen
- være
- under
- Bill
- Bit
- Blokker
- kroppen
- grensen
- bygge
- innebygd
- virksomhet
- ring
- Kan få
- fangst
- saker
- utfordre
- utfordrende
- avgifter
- Velg
- klasse
- Cloud
- kode
- Samle
- komponent
- Beregn
- datamaskin
- Konfigurasjon
- Tilkobling
- Konsoll
- konsolidering
- Container
- Containere
- inneholder
- innhold
- entreprenører
- Tilsvarende
- Kostnader
- skape
- opprettet
- skaper
- Opprette
- Gjeldende
- skikk
- kunde
- Kundeservice
- Kunder
- dato
- dataforsker
- dypere
- levere
- demonstrere
- demonstrert
- avhenger
- utplassere
- utplassert
- utplasserings
- distribusjon
- designet
- detaljert
- detaljer
- Bestem
- Utvikling
- forskjellig
- vanskelig
- direkte
- sykdom
- distribueres
- Docker
- ikke
- ned
- nedlasting
- nedlastinger
- kjøring
- under
- lett
- muliggjør
- Endpoint
- ingeniør
- Ingeniører
- Engelsk
- evaluering
- eksempel
- eksisterende
- erfaring
- ekstrakter
- Face
- Trekk
- Egenskaper
- Endelig
- Først
- Fokus
- fokusering
- etter
- skjema
- format
- Forward
- funnet
- Gratis
- funksjon
- videre
- framtid
- generere
- genererer
- generasjonen
- GitHub
- skal
- god
- hjelpe
- hjelper
- høykvalitets
- Uthev
- Fremhevet
- svært
- Hosting
- Hvordan
- Hvordan
- HTTPS
- stort
- menneskelig
- Mennesker
- Hundrevis
- identifisere
- identifisering
- Identitet
- bilde
- iverksette
- implementert
- umulig
- forbedre
- Inc.
- inkludere
- inkluderer
- Inkludert
- stadig
- industri
- informasjon
- Infrastruktur
- inngang
- integrering
- Intelligent
- interesse
- Interface
- internasjonalt
- intuitiv
- IT
- selv
- Javascript
- Jobb
- Jobb
- nøkkel
- kunnskap
- kjent
- lab
- merking
- etiketter
- Språk
- stor
- større
- lansere
- lært
- læring
- Permisjon
- utnytter
- Licensed
- Sannsynlig
- linje
- Flytende
- Liste
- laste
- lasting
- lokal
- lokalt
- plassering
- maskin
- maskinlæring
- GJØR AT
- Making
- fikk til
- leder
- kart
- kartlegging
- Kart
- Marketing
- maske
- matchende
- betyr
- midler
- Minne
- blandet
- ML
- modell
- modeller
- Overvåke
- mer
- mest
- flere
- Naturlig
- bærbare
- Antall
- innhentet
- tilby
- Tilbud
- på nett
- åpen
- åpning
- betjene
- drift
- drift
- Optimalisere
- optimalisere
- Alternativ
- alternativer
- rekkefølge
- organisasjon
- Annen
- ellers
- egen
- del
- Spesielt
- spesielt
- Betale
- utfører
- Tilpassing
- Plattformer
- Point
- poeng
- Portal
- posisjon
- positiv
- kraftig
- forutsi
- Spådommer
- prising
- privat
- Problem
- problemer
- prosess
- Prosesser
- prosessering
- Produkt
- Produksjon
- Produkter
- profilering
- gi
- gir
- gi
- offentlig
- Q & A
- kvalitet
- spørsmål
- raskt
- Raw
- Lesning
- rimelig
- motta
- redusere
- Repository
- representasjon
- Ressurser
- REST
- Resultater
- retur
- inntekter
- anmeldelse
- robotikk
- runde
- Kjør
- rennende
- skalerbarhet
- Forsker
- forskere
- SDK
- Søk
- sikkerhet
- segmentet
- segmentering
- segmenter
- valgt
- Tjenester
- servering
- sett
- oppsett
- Kort
- vist
- lignende
- Enkelt
- Størrelse
- ferdigheter
- liten
- So
- Software
- programvareutvikling
- solid
- løsning
- Solutions
- noen
- Rom
- spesiell
- spesialisert
- spesielt
- stable
- Standard
- Begynn
- Uttalelse
- uttalelser
- lagring
- oppbevare
- Strategi
- strukturert
- Student
- vellykket
- levere
- støtte
- Støtter
- system
- Systemer
- oppgaver
- test
- Gjennom
- tid
- tidkrevende
- Tittel
- token
- tokenization
- symbolbaserte
- tokens
- temaer
- lommelykt
- Sporing
- Kurs
- Transform
- typer
- ui
- forstå
- forståelse
- us
- bruke
- bruke
- validering
- verdi
- variasjon
- leverandører
- Verifisering
- Versus
- vertikaler
- video
- Se
- virus
- syn
- Voice
- vente
- web
- webtjenester
- Hva
- mens
- HVEM
- Wikipedia
- innenfor
- uten
- Arbeid
- arbeidere
- arbeidsstyrke
- virker
- orm
- år