Generativ AI er midt i en periode med forbløffende vækst. Stadig mere dygtige fundamentmodeller frigives løbende, hvor store sprogmodeller (LLM'er) er en af de mest synlige modelklasser. LLM'er er modeller sammensat af milliarder af parametre trænet på omfattende tekstkorpus, op til hundreder af milliarder eller endda en billion tokens. Disse modeller har vist sig ekstremt effektive til en bred vifte af tekstbaserede opgaver, lige fra besvarelse af spørgsmål til sentimentanalyse.
Styrken ved LLM'er kommer fra deres evne til at lære og generalisere fra omfattende og forskelligartede træningsdata. Den indledende træning af disse modeller udføres med en række forskellige mål, overvåget, uden opsyn eller hybrid. Tekstfuldførelse eller imputering er et af de mest almindelige uovervågede mål: Givet en del tekst lærer modellen præcist at forudsige, hvad der kommer næste gang (for eksempel forudsige den næste sætning). Modeller kan også trænes på en overvåget måde ved hjælp af mærkede data til at udføre et sæt opgaver (er f.eks. denne filmanmeldelse positiv, negativ eller neutral). Uanset om modellen er trænet til tekstudfyldelse eller en anden opgave, er det ofte ikke den opgave, kunderne ønsker at bruge modellen til.
For at forbedre ydeevnen af en præ-trænet LLM på en specifik opgave, kan vi tune modellen ved hjælp af eksempler på målopgaven i en proces kendt som finjustering af instruktion. Instruktionsfinjustering bruger et sæt mærkede eksempler i form af {prompt, respons}-par til yderligere at træne den forudtrænede model i tilstrækkeligt at forudsige svaret givet prompten. Denne proces ændrer modellens vægte.
Dette indlæg beskriver, hvordan man udfører instruktionsfinjustering af en LLM, nemlig FLAN T5 XL, vha. Amazon SageMaker Jumpstart. Vi demonstrerer, hvordan du opnår dette ved at bruge både Jumpstart UI og en notesbog i Amazon SageMaker Studio. Du kan finde medfølgende notesbog i amazon-sagemaker-eksempler GitHub -depot.
Løsningsoversigt
Målopgaven i dette indlæg er, givet et stykke tekst i prompten, at returnere spørgsmål, der er relateret til teksten, men som ikke kan besvares baseret på den information, den indeholder. Dette er en nyttig opgave til at identificere manglende oplysninger i en beskrivelse eller identificere, om en forespørgsel har brug for flere oplysninger for at blive besvaret.
FLAN T5-modeller er instruktion finjusteret på en lang række opgaver for at øge disse modellers nul-skuds ydeevne på mange almindelige opgaver[1]. Yderligere instruktionsfinjustering for en bestemt kundeopgave kan yderligere øge nøjagtigheden af disse modeller, især hvis målopgaven ikke tidligere blev brugt til at træne en FLAN T5-model, som det er tilfældet for vores opgave.
I vores eksempelopgave er vi interesserede i at generere relevante, men ubesvarede spørgsmål. Til dette formål bruger vi en delmængde af version 2 af Stanford Question Answering Dataset (SQuAD2.0)[2] til at finjustere modellen. Dette datasæt indeholder spørgsmål stillet af menneskelige annotatorer på et sæt Wikipedia-artikler. Ud over spørgsmål med svar indeholder SQuAD2.0 omkring 50,000 ubesvarede spørgsmål. Sådanne spørgsmål er plausible, men kan ikke besvares direkte ud fra artiklernes indhold. Vi bruger kun de ubesvarede spørgsmål. Vores data er struktureret som en JSON Lines-fil, hvor hver linje indeholder en kontekst og et spørgsmål.
Forudsætninger
For at komme i gang behøver du kun en AWS-konto, hvor du kan bruge Studio. Du skal oprette en brugerprofil til Studio, hvis du ikke allerede har en.
Finjuster FLAN-T5 med Jumpstart UI
Udfør følgende trin for at finjustere modellen med Jumpstart UI:
- Åbn Studio på SageMaker-konsollen.
- Under SageMaker Jumpstart i navigationsruden skal du vælge Modeller, notesbøger, løsninger.
Du vil se en liste over fundamentmodeller, inklusive FLAN T5 XL, som er markeret som finjusterbar.
- Vælg Se model.
- Under Datakilde, kan du angive stien til dine træningsdata. Kilden til de data, der bruges i dette indlæg, er angivet som standard.
- Du kan beholde standardværdien for implementeringskonfigurationen (inklusive instanstype), sikkerhed og hyperparametrene, men du bør øge antallet af epoker til mindst tre for at få gode resultater.
- Vælg Tog at træne modellen.
Du kan spore status for træningsjobbet i brugergrænsefladen.
- Når træningen er afsluttet (efter ca. 53 minutter i vores tilfælde), skal du vælge Implementer at implementere den finjusterede model.
Når slutpunktet er oprettet (et par minutter), kan du åbne en notesbog og begynde at bruge din finjusterede model.
Finjuster FLAN-T5 ved hjælp af en Python-notesbog
Vores eksempel-notesbog viser, hvordan man bruger Jumpstart og SageMaker til programmæssigt at finjustere og implementere en FLAN T5 XL-model. Det kan køres i Studio eller lokalt.
I dette afsnit gennemgår vi først nogle generelle opsætninger. Derefter finjusterer du modellen ved hjælp af SQuADv2-datasættene. Dernæst implementerer du den fortrænede version af modellen bag et SageMaker-endepunkt og gør det samme med den finjusterede model. Endelig kan du forespørge på slutpunkterne og sammenligne kvaliteten af outputtet fra den fortrænede og finjusterede model. Du vil opdage, at outputtet fra den finjusterede model er af meget højere kvalitet.
Opsæt forudsætninger
Begynd med at installere og opgradere de nødvendige pakker. Genstart kernen efter at have kørt følgende kode:
Få derefter den udførelsesrolle, der er knyttet til den aktuelle notesbogsforekomst:
Du kan definere en praktisk rullemenu, der viser de modelstørrelser, der er tilgængelige for finjustering:
Jumpstart henter automatisk passende trænings- og slutningsforekomsttyper for den model, du har valgt:
Du er nu klar til at begynde at finjustere.
Genoplær modellen på finjusteringsdatasættet
Når din opsætning er fuldført, skal du udføre følgende trin:
Brug følgende kode til at hente URI'en for de nødvendige artefakter:
Træningsdataene er placeret i en offentlighed Amazon Simple Storage Service (Amazon S3) spand.
Brug følgende kode til at pege på placeringen af dataene og konfigurer outputplaceringen i en bøtte på din konto:
De originale data er ikke i et format, der svarer til den opgave, som du finjusterer modellen til, så du kan omformatere den:
Nu kan du definere nogle hyperparametre for træningen:
Du er nu klar til at starte træningsjobbet:
Afhængigt af størrelsen på de finjusteringsdata og den valgte model, kan finjusteringen tage op til et par timer.
Du kan overvåge præstationsmålinger såsom træning og valideringstab ved hjælp af amazoncloudwatch under træning. Du kan bekvemt også hente det seneste øjebliksbillede af metrics ved at køre følgende kode:
Når uddannelsen er færdig, har du en finjusteret model kl model_uri
. Lad os bruge det!
Du kan oprette to inferensendepunkter: et for den oprindelige fortrænede model og et for den finjusterede model. Dette giver dig mulighed for at sammenligne output fra begge versioner af modellen. I det næste trin implementerer du et inferensendepunkt for den forudtrænede model. Derefter implementerer du et slutpunkt til din finjusterede model.
Implementer den fortrænede model
Lad os starte med at implementere den præ-trænede model og hente inferens Docker image URI. Dette er det grundlæggende Hugging Face-beholderbillede. Brug følgende kode:
Du kan nu oprette slutpunktet og implementere den forudtrænede model. Bemærk, at du skal bestå Predictor-klassen, når du implementerer modellen gennem Model-klassen for at kunne køre inferens gennem SageMaker API. Se følgende kode:
Oprettelse af slutpunkt og modelimplementering kan tage et par minutter, så er dit slutpunkt klar til at modtage inferensopkald.
Implementer den finjusterede model
Lad os implementere den finjusterede model til sit eget slutpunkt. Processen er næsten identisk med den, vi tidligere brugte til den fortrænede model. Den eneste forskel er, at vi bruger det finjusterede modelnavn og URI:
Når denne proces er afsluttet, er både fortrænede og finjusterede modeller implementeret bag deres egne endepunkter. Lad os sammenligne deres output.
Generer output og sammenlign resultaterne
Definer nogle hjælpefunktioner til at forespørge på slutpunktet og analysere svaret:
I det næste kodestykke definerer vi prompten og testdataene. Den beskriver vores målopgave, som er at generere spørgsmål, der er relateret til den angivne tekst, men som ikke kan besvares ud fra den.
Testdataene består af tre forskellige afsnit, et om den australske by Adelaide fra første to afsnit af den Wikipedia-side, en vedr Amazon Elastic Block Store (Amazon EBS) fra Amazon EBS dokumentation, og en af Amazon Comprehend fra Amazon Comprehend dokumentation. Vi forventer, at modellen identificerer spørgsmål relateret til disse afsnit, men det kan ikke besvares med oplysningerne deri.
Du kan nu teste endepunkterne ved at bruge eksempelartiklerne
Testdata: Adelaide
Vi bruger følgende kontekst:
Den forudtrænede modelrespons er som følger:
De finjusterede modelsvar er som følger:
Testdata: Amazon EBS
Vi bruger følgende kontekst:
De prætrænede modelsvar er som følger:
De finjusterede modelsvar er som følger:
Testdata: Amazon Comprehend
Vi bruger følgende kontekst:
De prætrænede modelsvar er som følger:
De finjusterede modelsvar er som følger:
Forskellen i outputkvalitet mellem den fortrænede model og den finjusterede model er markant. Spørgsmålene fra den finjusterede model berører en bredere vifte af emner. De er systematisk meningsfulde spørgsmål, hvilket ikke altid er tilfældet for den fortrænede model, som illustreret med Amazon EBS-eksemplet.
Selvom dette ikke er en formel og systematisk evaluering, er det klart, at finjusteringsprocessen har forbedret kvaliteten af modellens svar på denne opgave.
Ryd op
Husk endelig at rydde op og slette endepunkterne:
Konklusion
I dette indlæg viste vi, hvordan man bruger instruktionsfinjustering med FLAN T5-modeller ved hjælp af Jumpstart UI eller en Jupyter-notebook, der kører i Studio. Vi leverede kode, der forklarer, hvordan man genoplærer modellen ved hjælp af data til målopgaven og implementerer den finjusterede model bag et slutpunkt. Målopgaven i dette indlæg var at identificere spørgsmål, der relaterer sig til en del af teksten i inputtet, men som ikke kan besvares baseret på oplysningerne i den tekst. Vi demonstrerede, at en model, der er finjusteret til denne specifikke opgave, giver bedre resultater end en præ-trænet model.
Nu hvor du ved, hvordan du instruerer, finjusterer en model med Jumpstart, kan du oprette kraftfulde modeller, der er tilpasset din applikation. Saml nogle data til din brugssag, upload det til Amazon S3, og brug enten Studio UI eller notebooken til at tune en FLAN T5-model!
Referencer
[1] Chung, Hyung Won, et al. "Skalering af instruktionsfinjusterede sprogmodeller." arXiv preprint arXiv:2210.11416 (2022).
[2] Rajpurkar, Pranav, Robin Jia og Percy Liang. "Vid, hvad du ikke ved: Ubesvarlige spørgsmål til SQuAD." Forhandlinger fra det 56. årsmøde i Foreningen for Datalingvistik (Bind 2: Korte artikler). 2018.
Om forfatterne
Laurent Callot er en Principal Applied Scientist og leder ved AWS AI Labs, som har arbejdet med en række maskinlæringsproblemer, fra grundlæggende modeller og generativ AI til prognose, anomalidetektion, kausalitet og AI Ops.
Andrey Kan er Senior Applied Scientist hos AWS AI Labs inden for interesser og erfaring inden for forskellige områder af Machine Learning. Disse omfatter forskning i fundamentmodeller samt ML-applikationer til grafer og tidsserier.
Dr. Ashish Khetan er en Senior Applied Scientist med Amazon SageMaker indbyggede algoritmer og hjælper med at udvikle machine learning algoritmer. Han fik sin ph.d. fra University of Illinois Urbana Champaign. Han er en aktiv forsker i maskinlæring og statistisk inferens og har publiceret mange artikler i NeurIPS, ICML, ICLR, JMLR, ACL og EMNLP konferencer.
Baris Kurt er en anvendt videnskabsmand ved AWS AI Labs. Hans interesser er i tidsserieanomalidetektion og funderingsmodeller. Han elsker at udvikle brugervenlige ML-systemer.
Jonas Kübler er en anvendt videnskabsmand ved AWS AI Labs. Han arbejder på funderingsmodeller med det mål at lette brugsspecifikke applikationer.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoAiStream. Web3 Data Intelligence. Viden forstærket. Adgang her.
- Udmøntning af fremtiden med Adryenn Ashley. Adgang her.
- Køb og sælg aktier i PRE-IPO-virksomheder med PREIPO®. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/instruction-fine-tuning-for-flan-t5-xl-with-amazon-sagemaker-jumpstart/
- :har
- :er
- :ikke
- $OP
- 000
- 1
- 10
- 100
- 11
- 12
- 13
- 17
- 1M
- 20
- 2018
- 2022
- 22
- 40
- 50
- 60
- 7
- 8
- 80
- 9
- a
- I stand
- Om
- Acceptere
- adgang
- tilgængelig
- udrette
- Konto
- nøjagtighed
- præcist
- aktiv
- Desuden
- Yderligere
- tilstrækkeligt
- Efter
- AI
- AL
- algoritmer
- Alle
- tillader
- allerede
- også
- altid
- Amazon
- Amazon Comprehend
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- an
- analyse
- analysere
- ,
- årligt
- afsløring af anomalier
- svar
- enhver
- api
- API'er
- Anvendelse
- applikationer
- anvendt
- passende
- ER
- OMRÅDE
- argument
- artikel
- artikler
- AS
- forbundet
- Association
- At
- Australien
- australsk
- automatisk
- til rådighed
- AWS
- bund
- baseret
- BE
- Beach
- Beam
- bag
- være
- jf. nedenstående
- Bedre
- mellem
- milliarder
- Bloker
- krop
- pin
- både
- indbygget
- men
- by
- kaldet
- Opkald
- CAN
- kan ikke
- kapaciteter
- stand
- Kapacitet
- kapital
- tilfælde
- center
- lave om
- valg
- Vælg
- valgte
- valgt
- By
- klasse
- klasser
- klassificering
- klar
- kunde
- Coast
- kode
- kommer
- Fælles
- sammenligne
- fuldføre
- færdiggørelse
- sammensat
- forstå
- konferencer
- Konfiguration
- Konsol
- udgøre
- Container
- indeholder
- indhold
- sammenhæng
- kontinuerlig
- kontinuerligt
- Praktisk
- svarer
- kunne
- Par
- skabe
- oprettet
- Oprettelse af
- skabelse
- Nuværende
- skik
- kunde
- Kunder
- tilpassede
- data
- databaser
- datasæt
- Standard
- demonstrere
- demonstreret
- Afhængigt
- indsætte
- indsat
- implementering
- implementering
- beskrivelse
- Detektion
- Bestem
- udvikle
- udvikling
- udvikler
- enhed
- Enheder
- forskel
- forskellige
- direkte
- Skærm
- forskelligartede
- do
- Docker
- dokumentet
- dokumenter
- gør
- Er ikke
- dominerende
- Dont
- køre
- i løbet af
- dynamisk
- E&T
- hver
- tidligere
- Øst
- Effektiv
- enten
- elementer
- andet
- ende
- Endpoint
- Hele
- enheder
- enhed
- epoke
- epoker
- især
- evaluering
- Endog
- undersøge
- eksempel
- eksempler
- udføre
- udførelse
- forvente
- erfaring
- forklarer
- udsat
- udvider
- udvidelse
- omfattende
- ekstrakt
- ekstremt
- Ansigtet
- lette
- langt
- Mode
- Feature
- Funktionalitet
- få
- Fields
- File (Felt)
- Filer
- Endelig
- Finde
- ende
- Fornavn
- efter
- følger
- Til
- formular
- formel
- format
- fundet
- Foundation
- Fjerde
- Framework
- hyppigt
- venlige
- fra
- funktioner
- yderligere
- samle
- Generelt
- generere
- genereret
- generere
- generation
- generative
- Generativ AI
- få
- GitHub
- given
- mål
- godt
- grafer
- stor
- større
- Vækst
- Hård Ost
- harddisk
- Have
- he
- hjælper
- højere
- Hills
- hans
- HOURS
- Hvordan
- How To
- HTML
- http
- HTTPS
- KrammerFace
- menneskelig
- Hundreder
- Hybrid
- i
- ID
- identisk
- identificere
- id'er
- if
- Illinois
- billede
- importere
- Forbedre
- forbedret
- in
- omfatter
- Herunder
- Forøg
- stigende
- uafhængigt
- info
- oplysninger
- informative
- initial
- indgang
- indgange
- indsigt
- installere
- installation
- instans
- interesseret
- interesser
- Introduktion
- IT
- ITS
- Job
- Karriere
- jpg
- json
- Holde
- Nøgle
- Kend
- kendt
- Labs
- Sprog
- Sprog
- stor
- største
- lancere
- LÆR
- læring
- mindst
- Længde
- Niveau
- Livet
- ligesom
- Line (linje)
- linjer
- Liste
- LLM
- lokalt
- placeret
- placering
- ophøjede
- Lang
- langsigtet
- off
- elsker
- maskine
- machine learning
- leder
- mange
- markeret
- max
- Kan..
- meningsfuld
- møde
- nævner
- Menu
- Metrics
- minutter
- mangler
- ML
- model
- modeller
- Overvåg
- mere
- mest
- MONTERING
- film
- meget
- skal
- navn
- nemlig
- Natural
- Natural Language Processing
- Navigation
- nødvendig
- Behov
- behov
- behov
- negativ
- netværk
- Neutral
- Ny
- nye produkter
- næste
- NLP
- Nord
- notesbog
- nu
- nummer
- målsætninger
- opnå
- of
- on
- ONE
- kun
- åbent
- or
- original
- Andet
- vores
- output
- i løbet af
- overstyring
- egen
- ejere
- pakker
- par
- brød
- papirer
- parametre
- del
- særlig
- især
- passerer
- sti
- Mennesker
- Udfør
- ydeevne
- periode
- udholdenhed
- sætninger
- plato
- Platon Data Intelligence
- PlatoData
- plausibel
- Punkt
- befolkning
- positiv
- Indlæg
- magt
- vigtigste
- forudsige
- forudsige
- Predictor
- tidligere
- primære
- Main
- trykning
- problemer
- behandle
- forarbejdning
- Produkter
- Profil
- Progress
- gennemprøvet
- give
- forudsat
- giver
- offentlige
- offentliggjort
- Python
- kvalitet
- forespørgsler
- spørgsmål
- Spørgsmål
- hurtigt
- tilfældig
- rækkevidde
- Raw
- klar
- realtid
- modtage
- nylige
- anerkendelse
- genkende
- anerkende
- anbefaler
- anbefales
- om
- regulært udtryk
- region
- relaterede
- frigivet
- relevant
- stole
- huske
- Repository
- kræver
- påkrævet
- Kræver
- forskning
- forsker
- beboere
- Ressourcer
- svar
- reaktioner
- begrænse
- Resultater
- afkast
- afkast
- gennemgå
- Robin
- roller
- Kør
- kører
- s
- sagemaker
- samme
- scanne
- Videnskabsmand
- Søg
- Anden
- Sektion
- sikkerhed
- se
- valg
- senior
- dømme
- stemningen
- Series
- tjeneste
- Tjenester
- Session
- sæt
- sæt
- setup
- flere
- Kort
- bør
- viste
- Shows
- Simpelt
- Størrelse
- størrelser
- lille
- Snapshot
- So
- Social
- sociale netværk
- nogle
- Kilde
- Syd
- specifikke
- delt
- Stanford
- skarp
- starte
- påbegyndt
- Tilstand
- statistiske
- Status
- Trin
- Steps
- Stadig
- opbevaring
- butik
- struktur
- struktureret
- Studio
- Bedøvelse
- sådan
- support
- Understøttet
- Omkringliggende
- systemet
- Systemer
- Tag
- mål
- Opgaver
- opgaver
- skabelon
- prøve
- end
- at
- Området
- Hovedstaden
- oplysninger
- The Source
- Staten
- Vesten
- verdenen
- deres
- Them
- derefter
- deri
- Disse
- de
- denne
- dem
- tre
- Gennem
- tid
- Tidsserier
- til
- Tokens
- top
- Emner
- spor
- traditionelle
- Tog
- uddannet
- Kurser
- trillion
- sand
- to
- typen
- typer
- ui
- forståelse
- universitet
- opdateringer
- uploadet
- brug
- brug tilfælde
- anvendte
- Bruger
- ved brug af
- nytte
- validering
- værdi
- Værdier
- række
- udgave
- vincent
- synlig
- bind
- mængder
- W
- ønsker
- var
- Vej..
- we
- web
- webservices
- GODT
- Vest
- Hvad
- Hvad er
- hvornår
- hvorvidt
- som
- mens
- WHO
- bred
- Bred rækkevidde
- bredere
- bredde
- Wikipedia
- vilje
- med
- inden for
- Vandt
- ord
- arbejdede
- arbejder
- world
- ville
- Du
- Din
- zephyrnet