Generativ AI er midt i en periode med imponerende vekst. Stadig mer dyktige grunnmodeller utgis kontinuerlig, med store språkmodeller (LLM) som en av de mest synlige modellklassene. LLM-er er modeller sammensatt av milliarder av parametere trent på omfattende tekstkorpus, opptil hundrevis av milliarder eller til og med en billion tokens. Disse modellene har vist seg ekstremt effektive for et bredt spekter av tekstbaserte oppgaver, fra spørsmålssvar til sentimentanalyse.
Kraften til LLM-er kommer fra deres evne til å lære og generalisere fra omfattende og varierte opplæringsdata. Den første opplæringen av disse modellene utføres med en rekke mål, overvåket, uten tilsyn eller hybrid. Tekstfullføring eller imputering er et av de vanligste uovervåkede målene: gitt en del tekst lærer modellen å forutsi nøyaktig hva som kommer etterpå (for eksempel forutsi neste setning). Modeller kan også trenes på en overvåket måte ved å bruke merkede data for å utføre et sett med oppgaver (er for eksempel denne filmanmeldelsen positiv, negativ eller nøytral). Enten modellen er trent for tekstutfylling eller en annen oppgave, er det ofte ikke den oppgaven kundene ønsker å bruke modellen til.
For å forbedre ytelsen til en forhåndstrent LLM på en spesifikk oppgave, kan vi justere modellen ved å bruke eksempler på måloppgaven i en prosess kjent som finjustering av instruksjonene. Instruksjonsfinjustering bruker et sett med merkede eksempler i form av {spørring, svar}-par for å trene den forhåndstrente modellen videre i å forutsi svaret på en adekvat måte gitt ledeteksten. Denne prosessen modifiserer vektene til modellen.
Dette innlegget beskriver hvordan du utfører instruksjonsfinjustering av en LLM, nemlig FLAN T5 XL, ved å bruke Amazon SageMaker Jumpstart. Vi demonstrerer hvordan du oppnår dette ved å bruke både Jumpstart UI og en notatbok i Amazon SageMaker Studio. Du finner medfølgende notatbok i amazon-sagemaker-eksempler GitHub-depot.
Løsningsoversikt
Måloppgaven i dette innlegget er å, gitt en del av teksten i ledeteksten, returnere spørsmål som er relatert til teksten, men som ikke kan besvares basert på informasjonen den inneholder. Dette er en nyttig oppgave for å identifisere manglende informasjon i en beskrivelse eller identifisere om en forespørsel trenger mer informasjon for å bli besvart.
FLAN T5-modeller er instruksjoner finjustert på et bredt spekter av oppgaver for å øke nullskuddsytelsen til disse modellene på mange vanlige oppgaver[1]. Ytterligere finjustering av instruksjoner for en bestemt kundeoppgave kan ytterligere øke nøyaktigheten til disse modellene, spesielt hvis måloppgaven ikke tidligere ble brukt til å trene en FLAN T5-modell, slik tilfellet er for vår oppgave.
I eksempeloppgaven vår er vi interessert i å generere relevante, men ubesvarte spørsmål. For dette formål bruker vi et undersett av versjon 2 av Stanford Question Answering Dataset (SQuAD2.0)[2] for å finjustere modellen. Dette datasettet inneholder spørsmål stilt av menneskelige kommentatorer på et sett med Wikipedia-artikler. I tillegg til spørsmål med svar, inneholder SQuAD2.0 omtrent 50,000 XNUMX ubesvarte spørsmål. Slike spørsmål er plausible, men kan ikke besvares direkte fra artiklenes innhold. Vi bruker kun de ubesvarte spørsmålene. Dataene våre er strukturert som en JSON Lines-fil, der hver linje inneholder en kontekst og et spørsmål.
Forutsetninger
For å komme i gang trenger du bare en AWS-konto der du kan bruke Studio. Du må opprette en brukerprofil for Studio hvis du ikke allerede har en.
Finjuster FLAN-T5 med Jumpstart UI
For å finjustere modellen med Jumpstart UI, fullfør følgende trinn:
- Åpne Studio på SageMaker-konsollen.
- Under SageMaker Jumpstart Velg navigasjonsruten Modeller, notatbøker, løsninger.
Du vil se en liste over fundamentmodeller, inkludert FLAN T5 XL, som er merket som finjusterbar.
- Velg Se modell.
- Under Datakilde, kan du angi banen til treningsdataene dine. Kilden for dataene som brukes i dette innlegget er gitt som standard.
- Du kan beholde standardverdien for distribusjonskonfigurasjonen (inkludert instanstype), sikkerhet og hyperparametrene, men du bør øke antallet epoker til minst tre for å få gode resultater.
- Velg Tog å trene modellen.
Du kan spore statusen til treningsjobben i brukergrensesnittet.
- Når treningen er fullført (etter ca. 53 minutter i vårt tilfelle), velg Distribuer å distribuere den finjusterte modellen.
Etter at endepunktet er opprettet (noen få minutter), kan du åpne en notatbok og begynne å bruke den finjusterte modellen.
Finjuster FLAN-T5 med en Python-notisbok
Vår eksempelnotisbok viser hvordan du bruker Jumpstart og SageMaker til å programmere finjustere og distribuere en FLAN T5 XL-modell. Den kan kjøres i Studio eller lokalt.
I denne delen går vi først gjennom noen generelle oppsett. Deretter finjusterer du modellen ved å bruke SQuADv2-datasettene. Deretter distribuerer du den ferdigtrente versjonen av modellen bak et SageMaker-endepunkt, og gjør det samme med den finjusterte modellen. Til slutt kan du spørre etter endepunktene og sammenligne kvaliteten på utdataene til den forhåndstrente og finjusterte modellen. Du vil oppdage at resultatet fra den finjusterte modellen er av mye høyere kvalitet.
Sett opp forutsetninger
Begynn med å installere og oppgradere de nødvendige pakkene. Start kjernen på nytt etter å ha kjørt følgende kode:
Deretter får du utførelsesrollen knyttet til gjeldende notatbokforekomst:
Du kan definere en praktisk rullegardinmeny som viser modellstørrelsene som er tilgjengelige for finjustering:
Jumpstart henter automatisk passende trenings- og slutningsforekomsttyper for modellen du valgte:
Du er nå klar til å begynne finjusteringen.
Tren modellen på nytt på finjusteringsdatasettet
Etter at oppsettet er fullført, fullfør følgende trinn:
Bruk følgende kode for å hente URI for artefaktene som trengs:
Treningsdataene er plassert i en offentlig Amazon enkel lagringstjeneste (Amazon S3) bøtte.
Bruk følgende kode for å peke til plasseringen av dataene og konfigurer utdataplasseringen i en bøtte i kontoen din:
De originale dataene er ikke i et format som tilsvarer oppgaven du finjusterer modellen for, så du kan formatere den på nytt:
Nå kan du definere noen hyperparametre for treningen:
Du er nå klar til å starte opplæringsjobben:
Avhengig av størrelsen på finjusteringsdataene og modellen som er valgt, kan finjusteringen ta opptil et par timer.
Du kan overvåke ytelsesberegninger som trening og tap av validering ved å bruke Amazon CloudWatch under trening. Beleilig kan du også hente det nyeste øyeblikksbildet av beregninger ved å kjøre følgende kode:
Når opplæringen er ferdig har du en finjustert modell kl model_uri
. La oss bruke det!
Du kan opprette to slutningsendepunkter: ett for den opprinnelige forhåndstrente modellen og ett for den finjusterte modellen. Dette lar deg sammenligne utdataene til begge versjonene av modellen. I neste trinn distribuerer du et inferensendepunkt for den forhåndstrente modellen. Deretter distribuerer du et endepunkt for din finjusterte modell.
Implementer den forhåndstrente modellen
La oss starte med å distribuere den forhåndstrente modellen for å hente inferens Docker image URI. Dette er det grunnleggende Hugging Face-beholderbildet. Bruk følgende kode:
Du kan nå opprette endepunktet og distribuere den forhåndstrente modellen. Merk at du må bestå Predictor-klassen når du distribuerer modellen gjennom Model-klassen for å kunne kjøre inferens gjennom SageMaker API. Se følgende kode:
Opprettelsen av endepunkt og modellimplementering kan ta noen minutter, deretter er endepunktet ditt klart til å motta slutningsanrop.
Implementer den finjusterte modellen
La oss distribuere den finjusterte modellen til sitt eget endepunkt. Prosessen er nesten identisk med den vi brukte tidligere for den ferdigtrente modellen. Den eneste forskjellen er at vi bruker det finjusterte modellnavnet og URI:
Når denne prosessen er fullført, blir både forhåndstrente og finjusterte modeller distribuert bak sine egne endepunkter. La oss sammenligne resultatene deres.
Generer utdata og sammenlign resultatene
Definer noen verktøyfunksjoner for å spørre endepunktet og analysere svaret:
I den neste kodebiten definerer vi ledeteksten og testdataene. Den beskriver måloppgaven vår, som er å generere spørsmål som er relatert til den oppgitte teksten, men som ikke kan besvares basert på den.
Testdataene består av tre forskjellige avsnitt, ett om den australske byen Adelaide fra to første avsnitt av Wikipedia-siden, en vedr Amazon Elastic Block Store (Amazon EBS) fra Amazon EBS-dokumentasjon, og en av Amazon Comprehend fra Amazon Comprehend-dokumentasjon. Vi forventer at modellen identifiserer spørsmål knyttet til disse avsnittene, men det kan ikke besvares med informasjonen som er gitt der.
Du kan nå teste endepunktene ved å bruke eksempelartiklene
Testdata: Adelaide
Vi bruker følgende kontekst:
Den forhåndstrente modellens respons er som følger:
De finjusterte modellsvarene er som følger:
Testdata: Amazon EBS
Vi bruker følgende kontekst:
De forhåndstrente modellsvarene er som følger:
De finjusterte modellsvarene er som følger:
Testdata: Amazon Comprehend
Vi bruker følgende kontekst:
De forhåndstrente modellsvarene er som følger:
De finjusterte modellsvarene er som følger:
Forskjellen i utskriftskvalitet mellom den forhåndstrente modellen og den finjusterte modellen er sterk. Spørsmålene fra den finjusterte modellen berører et bredere spekter av emner. De er systematisk meningsfulle spørsmål, noe som ikke alltid er tilfellet for den forhåndstrente modellen, som illustrert med Amazon EBS-eksemplet.
Selv om dette ikke utgjør en formell og systematisk evaluering, er det tydelig at finjusteringsprosessen har forbedret kvaliteten på modellens svar på denne oppgaven.
Rydd opp
Til slutt, husk å rydde opp og slette endepunktene:
konklusjonen
I dette innlegget viste vi hvordan du bruker instruksjonsfinjustering med FLAN T5-modeller ved å bruke Jumpstart UI eller en Jupyter-notebook som kjører i Studio. Vi ga kode som forklarer hvordan du trener modellen på nytt ved å bruke data for måloppgaven og distribuerer den finjusterte modellen bak et endepunkt. Måloppgaven i dette innlegget var å identifisere spørsmål som er relatert til en del av teksten som er gitt i inndataene, men som ikke kan besvares basert på informasjonen i den teksten. Vi demonstrerte at en modell finjustert for denne spesifikke oppgaven gir bedre resultater enn en forhåndstrent modell.
Nå som du vet hvordan du instruerer finjustere en modell med Jumpstart, kan du lage kraftige modeller tilpasset din applikasjon. Samle litt data for brukssaken din, last den opp til Amazon S3, og bruk enten Studio UI eller den bærbare PC-en til å finjustere en FLAN T5-modell!
Referanser
[1] Chung, Hyung Won, et al. "Skalering av instruksjonsfinjusterte språkmodeller." arXiv preprint arXiv:2210.11416 (2022).
[2] Rajpurkar, Pranav, Robin Jia og Percy Liang. "Vet hva du ikke vet: Ubesvarlige spørsmål for SQuAD." Saker fra det 56. årsmøtet i Association for Computational Linguistics (Volum 2: Short Papers). 2018.
Om forfatterne
Laurent Callot er en Principal Applied Scientist og leder ved AWS AI Labs som har jobbet med en rekke maskinlæringsproblemer, fra grunnleggende modeller og generativ AI til prognoser, avviksdeteksjon, kausalitet og AI-operasjoner.
Andrey Kan er Senior Applied Scientist ved AWS AI Labs innen interesser og erfaring innen forskjellige felt innen maskinlæring. Disse inkluderer forskning på grunnmodeller, samt ML-applikasjoner for grafer og tidsserier.
Dr. Ashish Khetan er en Senior Applied Scientist med Amazon SageMaker innebygde algoritmer og hjelper til med å utvikle maskinlæringsalgoritmer. Han fikk sin doktorgrad fra University of Illinois Urbana Champaign. Han er en aktiv forsker innen maskinlæring og statistisk inferens og har publisert mange artikler i NeurIPS, ICML, ICLR, JMLR, ACL og EMNLP-konferanser.
Baris Kurt er en Applied Scientist ved AWS AI Labs. Hans interesser er i tidsserieavviksdeteksjon og fundamentmodeller. Han elsker å utvikle brukervennlige ML-systemer.
Jonas Kübler er en Applied Scientist ved AWS AI Labs. Han jobber med fundamentmodeller med mål om å lette bruksspesifikke applikasjoner.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoAiStream. Web3 Data Intelligence. Kunnskap forsterket. Tilgang her.
- Minting the Future med Adryenn Ashley. Tilgang her.
- Kjøp og selg aksjer i PRE-IPO-selskaper med PREIPO®. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/instruction-fine-tuning-for-flan-t5-xl-with-amazon-sagemaker-jumpstart/
- : har
- :er
- :ikke
- $OPP
- 000
- 1
- 10
- 100
- 11
- 12
- 13
- 17
- 1M
- 20
- 2018
- 2022
- 22
- 40
- 50
- 60
- 7
- 8
- 80
- 9
- a
- I stand
- Om oss
- Aksepterer
- adgang
- tilgjengelig
- utrette
- Logg inn
- nøyaktighet
- nøyaktig
- aktiv
- tillegg
- Ytterligere
- tilstrekkelig
- Etter
- AI
- AL
- algoritmer
- Alle
- tillater
- allerede
- også
- alltid
- Amazon
- Amazon Comprehend
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- an
- analyse
- analysere
- og
- årlig
- anomali påvisning
- svar
- noen
- api
- APIer
- Søknad
- søknader
- anvendt
- hensiktsmessig
- ER
- AREA
- argument
- Artikkel
- artikler
- AS
- assosiert
- Association
- At
- Australia
- Australian
- automatisk
- tilgjengelig
- AWS
- basen
- basert
- BE
- Strand
- Beam
- bak
- være
- under
- Bedre
- mellom
- milliarder
- Blokker
- kroppen
- pin
- både
- innebygd
- men
- by
- som heter
- Samtaler
- CAN
- kan ikke
- evner
- stand
- Kapasitet
- hovedstad
- saken
- senter
- endring
- valg
- Velg
- valgte
- valgt ut
- City
- klasse
- klasser
- klassifisering
- fjerne
- kunde
- Coast
- kode
- kommer
- Felles
- sammenligne
- fullføre
- ferdigstillelse
- komponert
- fatte
- konferanser
- Konfigurasjon
- Konsoll
- utgjør
- Container
- inneholder
- innhold
- kontekst
- kontinuerlig
- kontinuerlig
- Praktisk
- tilsvarer
- kunne
- Par
- skape
- opprettet
- Opprette
- skaperverket
- Gjeldende
- skikk
- kunde
- Kunder
- tilpasset
- dato
- databaser
- datasett
- Misligholde
- demonstrere
- demonstrert
- avhengig
- utplassere
- utplassert
- utplasserings
- distribusjon
- beskrivelse
- Gjenkjenning
- Bestem
- utvikle
- utvikle
- utvikler
- enhet
- Enheter
- forskjell
- forskjellig
- direkte
- Vise
- diverse
- do
- Docker
- dokument
- dokumenter
- gjør
- ikke
- dominerende
- ikke
- stasjonen
- under
- dynamisk
- E&T
- hver enkelt
- Tidligere
- øst
- Effektiv
- enten
- elementer
- ellers
- slutt
- Endpoint
- Hele
- enheter
- enhet
- epoke
- epoker
- spesielt
- evaluering
- Selv
- undersøke
- eksempel
- eksempler
- henrette
- gjennomføring
- forvente
- erfaring
- forklare
- utsatt
- strekker
- forlengelse
- omfattende
- trekke ut
- ekstremt
- Face
- legge til rette
- langt
- Mote
- Trekk
- Egenskaper
- Noen få
- Felt
- filet
- Filer
- Endelig
- Finn
- slutt
- Først
- etter
- følger
- Til
- skjema
- formell
- format
- funnet
- Fundament
- Fjerde
- Rammeverk
- ofte
- vennlig
- fra
- funksjoner
- videre
- samle
- general
- generere
- generert
- genererer
- generasjonen
- generative
- Generativ AI
- få
- GitHub
- gitt
- mål
- god
- grafer
- flott
- større
- Vekst
- Hard
- harddisk
- Ha
- he
- hjelper
- høyere
- Hills
- hans
- TIMER
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- Klem ansikt
- menneskelig
- Hundrevis
- Hybrid
- i
- ID
- identiske
- identifisere
- ids
- if
- Illinois
- bilde
- importere
- forbedre
- forbedret
- in
- inkludere
- Inkludert
- Øke
- stadig
- uavhengig av hverandre
- info
- informasjon
- informative
- innledende
- inngang
- innganger
- innsikt
- installere
- installere
- f.eks
- interessert
- interesser
- Introduksjon
- IT
- DET ER
- Jobb
- Jobb
- jpg
- JSON
- Hold
- nøkkel
- Vet
- kjent
- Labs
- Språk
- språk
- stor
- største
- lansere
- LÆRE
- læring
- minst
- Lengde
- Nivå
- Life
- i likhet med
- linje
- linjer
- Liste
- LLM
- lokalt
- ligger
- plassering
- oppløftet
- Lang
- langsiktig
- tap
- elsker
- maskin
- maskinlæring
- leder
- mange
- merket
- max
- Kan..
- meningsfylt
- møte
- nevner
- Meny
- Metrics
- minutter
- mangler
- ML
- modell
- modeller
- Overvåke
- mer
- mest
- MONTER
- film
- mye
- må
- navn
- nemlig
- Naturlig
- Natural Language Processing
- Navigasjon
- nødvendig
- Trenger
- nødvendig
- behov
- negativ
- nettverk
- Nøytral
- Ny
- nye produkter
- neste
- nlp
- nord
- bærbare
- nå
- Antall
- mål
- få
- of
- on
- ONE
- bare
- åpen
- or
- original
- Annen
- vår
- produksjon
- enn
- overstyring
- egen
- eiere
- pakker
- par
- brød
- papirer
- parametere
- del
- Spesielt
- spesielt
- passere
- banen
- Ansatte
- Utfør
- ytelse
- perioden
- utholdenhet
- setninger
- plato
- Platon Data Intelligence
- PlatonData
- plausibel
- Point
- befolkningen
- positiv
- Post
- makt
- kraftig
- forutsi
- forutsi
- Predictor
- tidligere
- primære
- Principal
- utskrift
- problemer
- prosess
- prosessering
- Produkter
- Profil
- Progress
- utprøvd
- gi
- forutsatt
- gir
- offentlig
- publisert
- Python
- kvalitet
- spørsmål
- spørsmål
- spørsmål
- raskt
- tilfeldig
- område
- Raw
- klar
- sanntids
- motta
- nylig
- anerkjennelse
- gjenkjenne
- gjenkjenne
- anbefaler
- anbefales
- om
- regex
- region
- i slekt
- utgitt
- relevant
- avhengige
- husker
- Repository
- krever
- påkrevd
- Krever
- forskning
- forsker
- innbyggere
- Ressurser
- svar
- svar
- begrense
- Resultater
- retur
- avkastning
- anmeldelse
- Robin
- Rolle
- Kjør
- rennende
- s
- sagemaker
- samme
- skanne
- Forsker
- Søk
- Sekund
- Seksjon
- sikkerhet
- se
- utvalg
- senior
- dømme
- sentiment
- Serien
- tjeneste
- Tjenester
- Session
- sett
- sett
- oppsett
- flere
- Kort
- bør
- viste
- Viser
- Enkelt
- Størrelse
- størrelser
- liten
- Snapshot
- So
- selskap
- Sosialt nettverk
- noen
- kilde
- Sør
- spesifikk
- splittet
- stanford
- stark
- Begynn
- startet
- Tilstand
- statistisk
- status
- Trinn
- Steps
- Still
- lagring
- oppbevare
- struktur
- strukturert
- studio
- Stunning
- slik
- støtte
- Støttes
- rundt
- system
- Systemer
- Ta
- Target
- Oppgave
- oppgaver
- mal
- test
- enn
- Det
- De
- Området
- Hovedstaden
- informasjonen
- Kilden
- Staten
- Vesten
- verden
- deres
- Dem
- deretter
- deri
- Disse
- de
- denne
- De
- tre
- Gjennom
- tid
- Tidsserier
- til
- tokens
- topp
- temaer
- berøre
- spor
- tradisjonelle
- Tog
- trent
- Kurs
- Trillion
- sant
- to
- typen
- typer
- ui
- forståelse
- universitet
- oppdateringer
- lastet opp
- bruke
- bruk sak
- brukt
- Bruker
- ved hjelp av
- verktøyet
- validering
- verdi
- Verdier
- variasjon
- versjon
- vincent
- synlig
- volum
- volumer
- W
- ønsker
- var
- Vei..
- we
- web
- webtjenester
- VI VIL
- Vest
- Hva
- Hva er
- når
- om
- hvilken
- mens
- HVEM
- bred
- Bred rekkevidde
- bredere
- bredde
- Wikipedia
- vil
- med
- innenfor
- Vant
- ord
- arbeidet
- arbeid
- verden
- ville
- Du
- Din
- zephyrnet