I dette indlæg viser vi finjustering af en Llama 2-model ved hjælp af en Parameter-Efficient Fine-Tuning-metode (PEFT) og implementerer den finjusterede model på AWS Inferentia2. Vi bruger AWS Neuron softwareudviklingskit (SDK) for at få adgang til AWS Inferentia2-enheden og drage fordel af dens høje ydeevne. Vi bruger derefter en stor model inferensbeholder powered by Deep Java Library (DJLServing) som vores modelserveringsløsning.
Løsningsoversigt
Effektiv finjustering af Llama2 ved hjælp af QLoRa
Llama 2-familien af store sprogmodeller (LLM'er) er en samling af fortrænede og finjusterede generative tekstmodeller i en skala fra 7 milliarder til 70 milliarder parametre. Llama 2 blev fortrænet på 2 billioner tokens af data fra offentligt tilgængelige kilder. AWS-kunder vælger nogle gange at finjustere Llama 2-modeller ved hjælp af kundernes egne data for at opnå bedre ydeevne til downstream-opgaver. På grund af Llama 2-modellens store antal parametre kan fuld finjustering dog være uoverkommeligt dyrt og tidskrævende. Parameter-Efficient Fine-Tuning (PEFT) tilgang kan løse dette problem ved kun at finjustere et lille antal ekstra modelparametre, mens de fleste parametre i den forudtrænede model fryses. For mere information om PEFT kan man læse dette indlæg. I dette indlæg bruger vi QLoRa at finjustere en Llama 2 7B-model.
Implementer en finjusteret model på Inf2 ved hjælp af Amazon SageMaker
AWS Inferentia2 er specialbygget maskinlæringsaccelerator (ML) designet til inferensarbejdsbelastninger og leverer høj ydeevne til op til 40 % lavere omkostninger for generative AI- og LLM-arbejdsbelastninger i forhold til andre inferensoptimerede instanser på AWS. I dette indlæg bruger vi Amazon Elastic Compute Cloud (Amazon EC2) Inf2-forekomst, med AWS Inferentia2, anden generation af Inferentia2-acceleratorer, der hver indeholder to NeuronCores-v2. Hver NeuronCore-v2 er en uafhængig, heterogen computerenhed med fire hovedmotorer: Tensor-, Vector-, Scalar- og GPSIMD-motorer. Den inkluderer en on-chip software-administreret SRAM-hukommelse for at maksimere datalokaliteten. Da der er udgivet flere blogs på Inf2, kan læseren henvise til dette indlæg og vores dokumentation for mere information om Inf2.
For at implementere modeller på Inf2 har vi brug for AWS Neuron SDK som softwarelaget, der kører oven på Inf2-hardwaren. AWS Neuron er SDK'et, der bruges til at køre deep learning workloads på AWS Inferentia og AWS Trainium baseret instanser. Det muliggør end-to-end ML-udviklingslivscyklus til at bygge nye modeller, træne og optimere disse modeller og implementere dem til produktion. AWS Neuron inkluderer en dyb læring compiler, runtimeog værktøjer der er integreret med populære rammer som TensorFlow og PyTorch. I denne blog skal vi bruge transformers-neuronx
, som er en del af AWS Neuron SDK for transformer dekoder inferens workflows. Det understøtninger en række populære modeller, herunder Llama 2.
Til at implementere modeller på Amazon SageMaker, bruger vi normalt en beholder, der indeholder de nødvendige biblioteker, såsom Neuron SDK og transformers-neuronx
samt modelserveringskomponenten. Amazon SageMaker fastholder dybe læringscontainere (DLC'er) med populære open source-biblioteker til hosting af store modeller. I dette indlæg bruger vi Stor model inferensbeholder til neuron. Denne container har alt hvad du behøver for at implementere din Llama 2-model på Inf2. For ressourcer til at komme i gang med LMI på Amazon SageMaker, se mange af vores eksisterende indlæg (blog 1, blog 2, blog 3) om dette emne. Kort sagt kan du køre containeren uden at skrive yderligere kode. Du kan bruge standardhandler for en problemfri brugeroplevelse og videregive et af de understøttede modelnavne og alle parametre, der kan indstilles til indlæsningstid. Dette kompilerer og serverer en LLM på en Inf2-instans. For eksempel at implementere OpenAssistant/llama2-13b-orca-8k-3319
, kan du angive følgende konfiguration (som serving.properties
fil). I serving.properties
, angiver vi modeltypen som llama2-13b-orca-8k-3319
, batchstørrelsen som 4, tensor parallelgraden som 2, og det er det. Se den fulde liste over konfigurerbare parametre Alle DJL-konfigurationsmuligheder.
Alternativt kan du skrive din egen modelbehandlerfil som vist i denne eksempel, men det kræver implementering af modelindlæsnings- og inferensmetoderne for at fungere som en bro mellem DJLServing API'erne.
Forudsætninger
Den følgende liste skitserer forudsætningerne for implementering af modellen beskrevet i dette blogindlæg. Du kan implementere enten fra AWS Management Console eller ved at bruge den nyeste version af AWS kommandolinjegrænseflade (AWS CLI).
Går igennem
I det følgende afsnit gennemgår vi koden i to dele:
- Finjustering af en Llama2-7b-model, og upload modelartefakter til en specificeret Amazon S3-spandplacering.
- Implementer modellen i en Inferentia2 ved hjælp af DJL-serveringscontainer hostet i Amazon SageMaker.
De komplette kodeeksempler med instruktioner kan findes i denne GitHub repository.
Del 1: Finjuster en Llama2-7b-model ved hjælp af PEFT
Vi vil bruge den nyligt introducerede metode i papiret QLoRA: Kvantiseringsbevidst Low-Rank Adapter Tuning til sproggenerering af Tim Dettmers et al. QLoRA er en ny teknik til at reducere hukommelsesfodaftrykket for store sprogmodeller under finjustering uden at ofre ydeevnen.
Bemærk: Finjusteringen af llama2-7b-modellen vist i det følgende blev testet på en Amazon SageMaker Studio notesbog med Python 2.0 GPU-optimeret kerne ved hjælp af en ml.g5.2xlarge instanstype. Som en bedste praksis anbefaler vi at bruge en Amazon SageMaker Studio Integreret udviklingsmiljø (IDE) lanceret i dit eget Amazon Virtual Private Cloud (Amazon VPC). Dette giver dig mulighed for at kontrollere, overvåge og inspicere netværkstrafik inden for og uden for din VPC ved hjælp af standard AWS-netværks- og sikkerhedsfunktioner. For mere information, se Sikring af Amazon SageMaker Studio-forbindelse ved hjælp af en privat VPC.
Kvantiser basismodellen
Vi indlæser først en kvantiseret model med 4-bit kvantisering vha Huggingface transformere bibliotek som følger:
Indlæs træningsdatasæt
Dernæst indlæser vi datasættet for at feed modellen til finjusteringstrin vist som følger:
Vedhæft et adapterlag
Her vedhæfter vi et lille, trænebart adapterlag, konfigureret som LoraConfig defineret i Hugging Face's peft bibliotek.
Træn en model
Ved at bruge LoRA-konfigurationen vist ovenfor, finjusterer vi Llama2-modellen sammen med hyper-parametre. Et kodestykke til træning af modellen er vist i følgende:
Kombiner modelvægt
Den finjusterede model udført ovenfor skabte en ny model indeholdende de trænede LoRA adaptervægte. I det følgende kodestykke fusionerer vi adapteren med basismodellen, så vi kan bruge den finjusterede model til slutninger.
Upload modelvægt til Amazon S3
I det sidste trin i del 1 gemmer vi de sammenlagte modelvægte til en specificeret Amazon S3-placering. Modelvægten vil blive brugt af en modelbeholder i Amazon SageMaker til at hoste modellen ved hjælp af en Inferentia2-instans.
Del 2: Vært vært for QLoRA-model for inferens med AWS Inf2 ved hjælp af SageMaker LMI Container
I dette afsnit gennemgår vi trinene til at implementere en QLoRA finjusteret model i et Amazon SageMaker-hostingmiljø. Vi bruger en DJL servering container fra SageMaker DLC, som integreres med transformatorer-neuronx bibliotek til at være vært for denne model. Opsætningen letter indlæsningen af modeller på AWS Inferentia2-acceleratorer, paralleliserer modellen på tværs af flere NeuronCores og muliggør servering via HTTP-endepunkter.
Forbered modelartefakter
DJL understøtter mange deep learning optimeringsbiblioteker, herunder DeepSpeed, Hurtigere Transformer og mere. For modelspecifikke konfigurationer leverer vi en serving.properties
med nøgleparametre, som f.eks tensor_parallel_degree
, model_id
for at definere modelbelastningsmulighederne. Det model_id
kunne være et Hugging Face-model-ID eller en Amazon S3-sti, hvor modelvægtene er gemt. I vores eksempel giver vi Amazon S3-placeringen af vores finjusterede model. Følgende kodestykke viser de egenskaber, der bruges til modelvisningen:
Henvis venligst til dette dokumentation for mere information om de konfigurerbare muligheder, der er tilgængelige via serving.properties
. Bemærk venligst, at vi bruger option.n_position=512
i denne blog for hurtigere AWS Neuron-kompilering. Hvis du vil prøve en større input token-længde, anbefaler vi læseren at prækompilere modellen på forhånd (se AOT Pre-Compile Model på EC2). Ellers kan du løbe ind i timeout-fejl, hvis kompileringstiden er for lang.
Efter serving.properties
fil er defineret, pakker vi filen i en tar.gz
format, som følger:
Derefter uploader vi tar.gz til en Amazon S3-bøtteplacering:
Opret et Amazon SageMaker-modelslutpunkt
For at bruge en Inf2-instans til visning bruger vi en Amazon SageMaker LMI container med DJL neuronX-understøttelse. Henvis venligst til dette indlæg for mere information om brug af en DJL NeuronX-beholder til slutninger. Følgende kode viser, hvordan man implementerer en model ved hjælp af Amazon SageMaker Python SDK:
Test model slutpunkt
Efter at modellen er implementeret med succes, kan vi validere slutpunktet ved at sende en prøveanmodning til forudsigeren:
Eksempeloutputtet vises som følger:
I forbindelse med dataanalyse refererer Machine Learning (ML) til en statistisk teknik, der er i stand til at udtrække forudsigelseskraft fra et datasæt med stigende kompleksitet og nøjagtighed ved iterativt at indsnævre omfanget af en statistik.
Machine Learning er ikke en ny statistisk teknik, men snarere en kombination af eksisterende teknikker. Desuden er det ikke designet til at blive brugt med et specifikt datasæt eller til at producere et specifikt resultat. Det var snarere designet til at være fleksibelt nok til at tilpasse sig ethvert datasæt og til at forudsige ethvert resultat.
Ryd op
Hvis du beslutter, at du ikke længere ønsker at holde SageMaker-slutpunktet kørende, kan du slette det vha AWS SDK til Python (boto3), AWS CLI eller Amazon SageMaker Console. Derudover kan du også lukke Amazon SageMaker Studio-ressourcerne som ikke længere er nødvendige.
Konklusion
I dette indlæg viste vi dig, hvordan du finjusterer en Llama2-7b-model ved hjælp af LoRA-adapter med 4-bit kvantisering ved hjælp af en enkelt GPU-instans. Derefter implementerede vi modellen til en Inf2-instans hostet i Amazon SageMaker ved hjælp af en DJL-serveringscontainer. Endelig validerede vi Amazon SageMaker-modellens slutpunkt med en tekstgenereringsforudsigelse ved hjælp af SageMaker Python SDK. Gå videre og prøv det, vi elsker at høre din feedback. Hold dig opdateret for opdateringer om flere muligheder og nye innovationer med AWS Inferentia.
For flere eksempler om AWS Neuron, se aws-neuron-prøver.
Om forfatterne
Wei Teh er Senior AI/ML Specialist Solutions Architect hos AWS. Han brænder for at hjælpe kunder med at fremme deres AWS-rejse, med fokus på Amazon Machine Learning-tjenester og maskinlæringsbaserede løsninger. Uden for arbejdet nyder han udendørsaktiviteter som camping, fiskeri og vandreture med sin familie.
Qingwei Li er Machine Learning Specialist hos Amazon Web Services. Han fik sin ph.d. i Operations Research, efter at han brød sin rådgivers forskningsbevillingskonto og undlod at levere den nobelpris, han lovede. I øjeblikket hjælper han kunder i finans- og forsikringsbranchen med at bygge maskinlæringsløsninger på AWS. I sin fritid kan han godt lide at læse og undervise.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :har
- :er
- :ikke
- :hvor
- $OP
- 1
- 10
- 100
- 11
- 15 %
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- Om
- over
- accelerator
- acceleratorer
- adgang
- Konto
- nøjagtighed
- opnå
- tværs
- aktiviteter
- tilpasse
- Yderligere
- Derudover
- adresse
- fremme
- Efter
- forude
- AI
- AI / ML
- AL
- tillader
- sammen
- Alpha
- også
- Amazon
- Amazon maskinindlæring
- Amazon SageMaker
- Amazon SageMaker Studio
- Amazon Web Services
- an
- analyse
- ,
- enhver
- API'er
- Indløs
- tilgang
- ER
- AS
- At
- vedhæfte
- auto
- til rådighed
- AWS
- AWS-inferens
- bold
- bund
- baseret
- vejeafmålings
- BE
- været
- gavner det dig
- BEDSTE
- Bedre
- mellem
- Billion
- Blog
- blogs
- BRIDGE
- Broke
- bygge
- men
- by
- CAN
- kapaciteter
- stand
- Vælg
- Cloud
- kode
- samling
- kombination
- fuldføre
- kompleksitet
- komponent
- Compute
- Konfiguration
- konfigureret
- Connectivity
- Konsol
- forbrugende
- Container
- indeholder
- sammenhæng
- kontrol
- Koste
- kunne
- oprettet
- For øjeblikket
- Kunder
- data
- dataanalyse
- beslutte
- dyb
- dyb læring
- Standard
- definere
- definerede
- Degree
- levere
- leverer
- indsætte
- indsat
- implementering
- beskrevet
- konstrueret
- Udvikling
- enhed
- Docker
- ned
- grund
- i løbet af
- dynamisk
- E&T
- hver
- enten
- muliggør
- ende til ende
- Endpoint
- Engine (Motor)
- Motorer
- nok
- Miljø
- fejl
- etc.
- at alt
- eksempel
- eksempler
- henrettet
- eksisterende
- dyrt
- erfaring
- ekstra
- Ansigtet
- letter
- mislykkedes
- falsk
- familie
- hurtigere
- Med
- tilbagemeldinger
- File (Felt)
- endelige
- Endelig
- finansielle
- finansiel service
- Fornavn
- Fiskeri
- fleksibel
- fokusering
- følger
- efterfulgt
- efter
- følger
- Fodspor
- Til
- format
- fundet
- fire
- rammer
- Frysning
- fra
- fuld
- Endvidere
- generation
- generative
- Generativ AI
- få
- Giv
- Go
- gå
- GPU
- indrømme
- Hardware
- he
- høre
- hjælpe
- hjælper
- link.
- Høj
- Høj ydeevne
- hans
- host
- hostede
- Hosting
- hus
- Hvordan
- How To
- Men
- HTML
- http
- HTTPS
- ID
- if
- billede
- gennemføre
- gennemføre
- in
- omfatter
- omfatter
- Herunder
- stigende
- uafhængig
- industrien
- oplysninger
- innovationer
- indgang
- indgange
- instans
- anvisninger
- forsikring
- integreret
- Integrerer
- ind
- introduceret
- IT
- iteration
- ITS
- Java
- rejse
- jpg
- json
- Holde
- Nøgle
- Kit (SDK)
- Sprog
- stor
- større
- seneste
- lanceret
- lag
- lag
- læring
- Længde
- Niveau
- biblioteker
- Bibliotek
- livscyklus
- ligesom
- synes godt om
- Line (linje)
- Liste
- Llama
- LLM
- belastning
- lastning
- placering
- længere
- kærlighed
- lavere
- maskine
- machine learning
- Main
- fastholder
- lave
- ledelse
- mange
- maksimere
- Hukommelse
- Flet
- metode
- metoder
- måske
- ML
- model
- modeller
- Moduler
- Overvåg
- mere
- mest
- meget
- flere
- navne
- ved
- Behov
- netværk
- netværkstrafik
- netværk
- Ny
- ingen
- Nobel pris
- Ingen
- Bemærk
- nummer
- of
- on
- ONE
- kun
- på
- åbent
- open source
- Produktion
- optimering
- Optimer
- optimeret
- Option
- Indstillinger
- or
- Andet
- Ellers
- vores
- Resultat
- konturer
- output
- uden for
- i løbet af
- egen
- pakke
- Papir
- Parallel
- parameter
- parametre
- del
- dele
- passerer
- lidenskabelige
- sti
- ydeevne
- udføres
- fly
- plato
- Platon Data Intelligence
- PlatoData
- Vær venlig
- Populær
- Indlæg
- Indlæg
- magt
- strøm
- praksis
- Precision
- forudsigelse
- Forudsigelser
- Predictor
- forudsætninger
- private
- præmie
- Problem
- behandle
- producere
- produktion
- lovede
- egenskaber
- give
- offentligt
- offentliggjort
- Python
- pytorch
- rækkevidde
- spænder
- hellere
- Læs
- Læser
- Læsning
- modtaget
- for nylig
- anbefaler
- reducere
- henvise
- refererer
- Repository
- anmode
- anmodninger
- påkrævet
- Kræver
- forskning
- Ressourcer
- svar
- reaktioner
- højre
- Kør
- kører
- at ofre
- sagemaker
- Gem
- Scale
- skalering
- rækkevidde
- SDK
- sømløs
- Anden
- Anden generation
- Sektion
- sikkerhed
- se
- afsendelse
- senior
- Sequence
- tjener
- tjeneste
- Tjenester
- servering
- sæt
- indstilling
- setup
- flere
- Kort
- udstillingsvindue
- viste
- vist
- Shows
- siden
- enkelt
- Størrelse
- lille
- uddrag
- So
- Software
- softwareudvikling
- softwareudviklingssæt
- løsninger
- Løsninger
- sommetider
- Kilde
- Kilder
- specialist
- specifikke
- specificeret
- standard
- påbegyndt
- statistiske
- forblive
- Trin
- Steps
- opbevaret
- Studio
- Succesfuld
- sådan
- support
- Understøttet
- Understøtter
- opgaver
- Undervisning
- teknik
- teknikker
- tensorflow
- afprøvet
- tekst
- at
- deres
- Them
- derefter
- Disse
- denne
- Gennem
- Tim
- tid
- til
- token
- Tokens
- også
- top
- emne
- fakkel
- Trafik
- Tog
- uddannet
- Kurser
- transformer
- trillion
- sand
- prøv
- tunet
- tuning
- to
- typen
- opdateringer
- uploadet
- URL
- brug
- anvendte
- Bruger
- Brugererfaring
- ved brug af
- sædvanligvis
- VALIDATE
- valideret
- udgave
- via
- Virtual
- gå
- går igennem
- ønsker
- var
- we
- web
- webservices
- vægt
- GODT
- Hvad
- Hvad er
- som
- mens
- vilje
- med
- inden for
- uden
- Arbejde
- arbejdstager
- arbejdsgange
- skriver
- skrivning
- Du
- Din
- zephyrnet