Tässä viestissä esittelemme Llama 2 -mallin hienosäätöä parametritehokkaalla hienosäätömenetelmällä (PEFT) ja käytämme hienosäädettyä mallia AWS Inferentia2. Käytämme AWS Neuron ohjelmistokehityspaketti (SDK) päästäksesi AWS Inferentia2 -laitteeseen ja hyötyä sen korkeasta suorituskyvystä. Käytämme sitten suurta mallipäätelmäsäiliötä, jonka virtalähteenä on Syvä Java-kirjasto (DJLServing) mallina palveleva ratkaisumme.
Ratkaisun yleiskatsaus
Tehokas Llama2:n hienosäätö QLoRalla
Llama 2 -perhe suuria kielimalleja (LLM) on kokoelma esikoulutettuja ja hienosäädettyjä generatiivisia tekstimalleja, joiden skaala vaihtelee 7 miljardista 70 miljardiin parametriin. Llama 2 oli esikoulutettu 2 biljoonalla datatunnisteella julkisista lähteistä. AWS-asiakkaat päättävät joskus hienosäätää Llama 2 -malleja asiakkaiden omilla tiedoilla saavuttaakseen paremman suorituskyvyn loppupään tehtäviin. Llama 2 -mallin suuren parametrimäärän vuoksi täydellinen hienosäätö voi kuitenkin olla kohtuuttoman kallista ja aikaa vievää. Parametritehokas hienosäätö (PEFT) voi ratkaista tämän ongelman hienosäätämällä vain pientä määrää ylimääräisiä malliparametreja samalla, kun useimmat esiopetetun mallin parametrit jäädytetään. Lisätietoja PEFT:stä voi lukea tästä posti. Tässä viestissä käytämme QLoRa hienosäätää Llama 2 7B -mallia.
Ota hienosäädetty malli käyttöön Inf2:ssa Amazon SageMakerin avulla
AWS Inferentia2 on tarkoitukseen rakennettu koneoppimisen (ML) kiihdytin, joka on suunniteltu päättelytyökuormille ja tarjoaa korkean suorituskyvyn jopa 40 % pienemmillä kustannuksilla generatiivisissa AI- ja LLM-työkuormissa verrattuna muihin AWS:n päätelmiin optimoituihin instansseihin. Tässä viestissä käytämme Amazon Elastic Compute Cloudia (Amazon EC2) Inf2-instanssi, joka sisältää AWS Inferentia2:n, toisen sukupolven Inferentia2-kiihdytin, joista jokaisessa on kaksi NeuronCores-v2. Jokainen NeuronCore-v2 on itsenäinen, heterogeeninen laskentayksikkö, jossa on neljä pääkonetta: Tensor-, Vector-, Scalar- ja GPSIMD-moottorit. Se sisältää sirulla olevan ohjelmistohallinnan SRAM-muistin, joka maksimoi tiedon paikallisuuden. Koska Inf2:ssa on julkaistu useita blogeja, lukija voi viitata tähän posti ja meidän dokumentointi lisätietoja Inf2:sta.
Mallien käyttöönottamiseksi Inf2:ssa tarvitsemme AWS Neuron SDK:n ohjelmistokerroksena, joka toimii Inf2-laitteiston päällä. AWS Neuron on SDK, jota käytetään suorittamaan syvän oppimisen työkuormia AWS Inferentiassa ja AWS Trainium perustuvia tapauksia. Se mahdollistaa kokonaisvaltaisen ML-kehityksen elinkaaren uusien mallien rakentamisen, näiden mallien kouluttamisen ja optimoinnin sekä niiden käyttöönoton tuotantoon. AWS Neuron sisältää syvän oppimisen kääntäjä, runtimeja työkalut jotka on integroitu natiivisti suosittuihin kehyksiin, kuten TensorFlow ja PyTorch. Tässä blogissa aiomme käyttää transformers-neuronx
, joka on osa AWS Neuron SDK:ta muuntajan dekooderin päättelytyönkulkuille. Se tukee valikoima suosittuja malleja, mukaan lukien Llama 2.
Mallien käyttöönotto Amazon Sage Maker, käytämme yleensä säilöä, joka sisältää tarvittavat kirjastot, kuten Neuron SDK ja transformers-neuronx
sekä mallin palveleva komponentti. Amazon SageMaker ylläpitää syväoppimissäiliöt (DLC) suosituilla avoimen lähdekoodin kirjastoilla suurten mallien isännöintiin. Tässä viestissä käytämme Suuri mallin päättelysäiliö Neuronille. Tässä säilössä on kaikki mitä tarvitset Llama 2 -mallin käyttöönottoon Inf2:ssa. Katso resurssit LMI:n aloittamiseen Amazon SageMakerissa monista olemassa olevista viesteistämme (blogi 1, blogi 2, blogi 3) tässä aiheessa. Lyhyesti sanottuna voit ajaa säilön kirjoittamatta lisäkoodia. Voit käyttää oletuskäsittelijä saumattoman käyttökokemuksen takaamiseksi ja välitä jokin tuetuista mallien nimistä ja latausajan konfiguroitavista parametreista. Tämä kokoaa ja palvelee LLM:ää Inf2-esiintymässä. Esimerkiksi käyttöönottamiseksi OpenAssistant/llama2-13b-orca-8k-3319
, voit antaa seuraavat asetukset (kuten serving.properties
tiedosto). Sisään serving.properties
, määritämme mallin tyypin muodossa llama2-13b-orca-8k-3319
, erän koko on 4, tensorin yhdensuuntaisuusaste 2, ja siinä se. Täydellinen luettelo konfiguroitavista parametreista on kohdassa Kaikki DJL-kokoonpanovaihtoehdot.
Vaihtoehtoisesti voit kirjoittaa oman mallikäsittelijän tiedoston tässä esitetyllä tavalla esimerkki, mutta tämä edellyttää mallin lataus- ja päättelymenetelmien toteuttamista, jotta ne toimivat siltana DJLServing API:iden välillä.
Edellytykset
Seuraavassa luettelossa esitetään tässä blogikirjoituksessa kuvatun mallin käyttöönoton edellytykset. Voit toteuttaa jommankumman AWS-hallintakonsoli tai käyttämällä uusinta versiota AWS-komentoriviliitäntä (AWS CLI).
Walkthrough
Seuraavassa osiossa käymme läpi koodin kahdessa osassa:
- Hienosäädä Llama2-7b-mallia ja lataa mallin artefaktit määritettyyn Amazon S3 -säilöpaikkaan.
- Ota malli käyttöön Inferentia2:ssa käyttämällä Amazon SageMakerissa isännöityä DJL-käyttösäiliötä.
Täydelliset koodiesimerkit ohjeineen löytyvät tästä GitHub arkistoon.
Osa 1: Hienosäädä Llama2-7b-malli PEFT:n avulla
Aiomme käyttää äskettäin esiteltyä menetelmää paperissa QLoRA: Kvantisointitietoinen matalan tason sovittimen viritys kielten luomista varten Tim Dettmers et ai. QLoRA on uusi tekniikka, joka pienentää suurten kielimallien muistijalanjälkeä hienosäädön aikana suorituskyvystä tinkimättä.
Huomautus: Seuraavassa näkyvää llama2-7b-mallin hienosäätöä on testattu Amazonilla SageMaker Studio -muistikirja Python 2.0 GPU -optimoidun ytimen kanssa käyttämällä a ml.g5.2xsuuri ilmentymän tyyppi. Parhaana käytäntönä suosittelemme käyttämään Amazon SageMaker Studio Integrated Development Environment (IDE) julkaistiin omassasi Amazonin virtuaalinen yksityinen pilvi (Amazon VPC). Tämän avulla voit hallita, valvoa ja tarkastaa verkkoliikennettä VPC: ssäsi ja sen ulkopuolella käyttämällä AWS: n vakio-verkko- ja suojausominaisuuksia. Katso lisätietoja Amazon SageMaker Studio -yhteyksien suojaaminen yksityisellä VPC: llä.
Kvantoi perusmalli
Lataamme ensin kvantisoidun mallin 4-bittisellä kvantisoinnilla käyttämällä Huggingface muuntajat kirjasto seuraavasti:
Lataa harjoitustietojoukko
Seuraavaksi lataamme tietojoukon mallin syöttämiseksi hienosäätövaihetta varten seuraavasti:
Kiinnitä sovitinkerros
Tähän kiinnitämme pienen, koulutettavan sovitinkerroksen, joka on konfiguroitu LoraConfig määritelty Hugging Face'sissa peft kirjasto.
Kouluta malli
Yllä esitettyä LoRA-kokoonpanoa käyttämällä hienosäädämme Llama2-mallia hyperparametrien kanssa. Mallin kouluttamiseen tarkoitettu koodinpätkä näkyy seuraavassa:
Yhdistä mallin paino
Yllä suoritettu hienosäädety malli loi uuden mallin, joka sisälsi koulutetut LoRA-sovittimen painot. Seuraavassa koodinpätkässä yhdistämme sovittimen perusmalliin, jotta voimme käyttää hienosäädettyä mallia johtopäätösten tekemiseen.
Lataa mallin paino Amazon S3:een
Osan 1 viimeisessä vaiheessa tallennamme yhdistettyjen mallien painot määritettyyn Amazon S3 -sijaintiin. Mallin painoa käyttää Amazon SageMakerin mallinkäyttösäiliö mallin isännöimiseen Inferentia2-esiintymän avulla.
Osa 2: Isäntä QLoRA-malli AWS Inf2:n päättelemiseksi SageMaker LMI Containerin avulla
Tässä osiossa käymme läpi vaiheet QLoRA-hienoviritetyn mallin käyttöönottamiseksi Amazon SageMaker -isännöintiympäristöön. Käytämme a DJL-tarjoilu kontti SageMakerilta DLC, joka integroituu muuntajat-neuronx kirjasto tämän mallin isännöimiseksi. Asennus helpottaa mallien lataamista AWS Inferentia2 -kiihdyttimiin, rinnastaa mallin useisiin NeuronCoresiin ja mahdollistaa palvelun HTTP-päätepisteiden kautta.
Valmistele malliesineet
DJL tukee monia syvän oppimisen optimointikirjastoja, mukaan lukien Syvä nopeus, FasterTransformer ja enemmän. Mallikohtaisia kokoonpanoja varten tarjoamme a serving.properties
avainparametreilla, kuten tensor_parallel_degree
ja model_id
määrittääksesi mallin latausasetukset. The model_id
voi olla Hugging Face -mallin tunnus tai Amazon S3 -polku, johon mallin painot on tallennettu. Esimerkissämme tarjoamme hienosäädetyn mallimme Amazon S3 -sijainnin. Seuraava koodinpätkä näyttää mallin näyttämiseen käytetyt ominaisuudet:
Ole hyvä ja katso tämä dokumentointi saadaksesi lisätietoja konfiguroitavista vaihtoehdoista, jotka ovat käytettävissä osoitteessa serving.properties
. Huomaa, että käytämme option.n_position=512
tässä blogissa nopeampaa AWS Neuron -kokoelmaa varten. Jos haluat kokeilla suurempaa syöttötunnisteen pituutta, suosittelemme lukijaa esikääntämään mallin etukäteen (katso AOT Pre-Compile -malli EC2:ssa). Muussa tapauksessa saatat joutua aikakatkaisuvirheeseen, jos käännösaika on liian pitkä.
Jälkeen serving.properties
tiedosto on määritetty, pakkaamme tiedoston a tar.gz
muodossa seuraavasti:
Sitten lataamme tar.gz-tiedoston Amazon S3 -säilön sijaintiin:
Luo Amazon SageMaker -mallin päätepiste
Käyttääksemme Inf2-instanssia palvelemiseen käytämme Amazonia SageMaker LMI-säiliö DJL neuronX -tuella. Katso tästä posti saadaksesi lisätietoja DJL NeuronX -säiliön käyttämisestä johtopäätösten tekemiseen. Seuraava koodi näyttää, kuinka malli otetaan käyttöön Amazon SageMaker Python SDK:lla:
Testimallin päätepiste
Kun malli on otettu käyttöön onnistuneesti, voimme vahvistaa päätepisteen lähettämällä näytepyynnön ennustajalle:
Näytetuloste näytetään seuraavasti:
Data-analyysin yhteydessä koneoppiminen (ML) viittaa tilastolliseen tekniikkaan, joka kykenee poimimaan ennustevoimaa tietojoukosta entistä monimutkaisemmalla ja tarkemmalla tavalla kaventamalla iteratiivisesti tilaston laajuutta.
Koneoppiminen ei ole uusi tilastotekniikka, vaan pikemminkin olemassa olevien tekniikoiden yhdistelmä. Sitä ei myöskään ole suunniteltu käytettäväksi tietyn tietojoukon kanssa tai tietyn tuloksen tuottamiseen. Sen sijaan se suunniteltiin riittävän joustavaksi mukautumaan mihin tahansa tietojoukkoon ja tekemään ennusteita kaikista tuloksista.
Puhdistaa
Jos päätät, että et enää halua pitää SageMaker-päätepistettä käynnissä, voit poistaa sen käyttämällä AWS SDK Pythonille (boto3), AWS CLI:lle tai Amazon SageMaker Consolelle. Voit myös sammuta Amazon SageMaker Studio Resources joita ei enää tarvita.
Yhteenveto
Tässä viestissä näytimme sinulle kuinka hienosäätää Llama2-7b-mallia käyttämällä LoRA-sovitinta 4-bittisellä kvantisoinnilla käyttämällä yhtä GPU-esiintymää. Sitten otimme mallin käyttöön Amazon SageMakerissa isännöityyn Inf2-instanssiin käyttämällä DJL-käyttösäiliötä. Lopuksi validoimme Amazon SageMaker -mallin päätepisteen tekstin sukupolven ennusteella käyttämällä SageMaker Python SDK:ta. Kokeile, haluamme kuulla palautettasi. Pysy kuulolla uusista ominaisuuksista ja uusista innovaatioista AWS Inferentialla.
Katso lisää esimerkkejä AWS Neuronista aws-neuroninäytteet.
Tietoja Tekijät
Wei Teh on AWS:n vanhempi AI/ML Specialist Solutions -arkkitehti. Hän on intohimoinen auttaa asiakkaita edistämään AWS-matkaansa keskittyen Amazon Machine Learning -palveluihin ja koneoppimiseen perustuviin ratkaisuihin. Työn ulkopuolella hän harrastaa ulkoilua, kuten telttailua, kalastusta ja patikointia perheen kanssa.
Qingweminä Li on koneoppimisen asiantuntija Amazon Web Services -palvelussa. Hän sai tohtorin tutkinnon operatiivisessa tutkimuksessa sen jälkeen, kun hän rikkoi neuvonantajan tutkimusapurahatilin ja ei toimittanut lupaamaansa Nobelin palkintoa. Tällä hetkellä hän auttaa finanssi- ja vakuutusalan asiakkaita rakentamaan koneoppimisratkaisuja AWS: lle. Vapaa-ajallaan hän pitää lukemisesta ja opettamisesta.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :on
- :On
- :ei
- :missä
- $ YLÖS
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- Meistä
- edellä
- kiihdytin
- kiihdyttimiä
- pääsy
- Tili
- tarkkuus
- Saavuttaa
- poikki
- toiminta
- sopeuttaa
- lisä-
- Lisäksi
- osoite
- edistää
- Jälkeen
- eteenpäin
- AI
- AI / ML
- AL
- mahdollistaa
- pitkin
- Alpha
- Myös
- Amazon
- Amazonin koneoppiminen
- Amazon Sage Maker
- Amazon SageMaker Studio
- Amazon Web Services
- an
- analyysi
- ja
- Kaikki
- API
- käyttää
- lähestymistapa
- OVAT
- AS
- At
- liittää
- auto
- saatavissa
- AWS
- AWS Inferencia
- pallo
- pohja
- perustua
- annostelu-
- BE
- ollut
- hyödyttää
- PARAS
- Paremmin
- välillä
- Miljardi
- Blogi
- blogit
- SILTA
- Broke
- rakentaa
- mutta
- by
- CAN
- kyvyt
- kykenee
- Valita
- pilvi
- koodi
- kokoelma
- yhdistelmä
- täydellinen
- monimutkaisuus
- komponentti
- Laskea
- Konfigurointi
- määritetty
- Liitännät
- Console
- kuluttaa
- Kontti
- sisältää
- tausta
- ohjaus
- Hinta
- voisi
- luotu
- Tällä hetkellä
- Asiakkaat
- tiedot
- tietojen analysointi
- päättää
- syvä
- syvä oppiminen
- oletusarvo
- määritellä
- määritelty
- Aste
- toimittaa
- Antaa
- sijoittaa
- käyttöön
- levityspinnalta
- on kuvattu
- suunniteltu
- Kehitys
- laite
- Satamatyöläinen
- alas
- kaksi
- aikana
- dynaaminen
- E&T
- kukin
- myöskään
- mahdollistaa
- päittäin
- päätepiste
- Moottori
- Moottorit
- tarpeeksi
- ympäristö
- virhe
- jne.
- kaikki
- esimerkki
- Esimerkit
- teloitettiin
- olemassa
- kallis
- experience
- lisää
- Kasvot
- Helpottaa
- Epäonnistui
- väärä
- perhe
- nopeampi
- Featuring
- palaute
- filee
- lopullinen
- Vihdoin
- taloudellinen
- rahoituspalvelu
- Etunimi
- Kalastus
- joustava
- tarkennus
- seurata
- seurannut
- jälkeen
- seuraa
- Jalanjälki
- varten
- muoto
- löytyi
- neljä
- puitteet
- Pakastaminen
- alkaen
- koko
- Lisäksi
- sukupolvi
- generatiivinen
- Generatiivinen AI
- saada
- Antaa
- Go
- menee
- GPU
- myöntää
- Palvelimet
- he
- kuulla
- auttaa
- auttaa
- tätä
- Korkea
- korkea suorituskyky
- hänen
- isäntä
- isännöi
- hotellit
- Talo
- Miten
- Miten
- Kuitenkin
- HTML
- http
- HTTPS
- ID
- if
- kuva
- toteuttaa
- täytäntöönpanosta
- in
- sisältää
- sisältää
- Mukaan lukien
- lisää
- itsenäinen
- teollisuus
- tiedot
- innovaatiot
- panos
- tuloa
- esimerkki
- ohjeet
- vakuutus
- integroitu
- integroi
- tulee
- käyttöön
- IT
- iteraatio
- SEN
- Jaava
- matka
- jpg
- json
- Pitää
- avain
- Kit (SDK)
- Kieli
- suuri
- suurempi
- uusin
- käynnistettiin
- kerros
- kerrokset
- oppiminen
- Pituus
- Taso
- kirjastot
- Kirjasto
- elinkaari
- pitää
- tykkää
- linja
- Lista
- liekki
- OTK
- kuormitus
- lastaus
- sijainti
- kauemmin
- rakkaus
- alentaa
- kone
- koneoppiminen
- tärkein
- ylläpitää
- tehdä
- johto
- monet
- maksimointi
- Muisti
- mennä
- menetelmä
- menetelmät
- ehkä
- ML
- malli
- mallit
- Moduulit
- monitori
- lisää
- eniten
- paljon
- moninkertainen
- nimet
- klo
- Tarve
- verkko
- verkkoliikenne
- verkostoituminen
- Uusi
- Nro
- Nobel palkinto
- Ei eristetty
- huomata
- numero
- of
- on
- ONE
- vain
- päälle
- avata
- avoimen lähdekoodin
- Operations
- optimointi
- Optimoida
- optimoitu
- Vaihtoehto
- Vaihtoehdot
- or
- Muut
- muuten
- meidän
- Tulos
- ääriviivat
- ulostulo
- ulkopuolella
- yli
- oma
- paketti
- Paperi
- Parallel
- parametri
- parametrit
- osa
- osat
- kulkea
- intohimoinen
- polku
- suorituskyky
- suoritettu
- suunnitelma
- Platon
- Platonin tietotieto
- PlatonData
- Ole hyvä
- Suosittu
- Kirje
- Viestejä
- teho
- powered
- harjoitusta.
- Tarkkuus
- ennustus
- Ennusteet
- Predictor
- edellytyksiä
- yksityinen
- palkinto
- Ongelma
- prosessi
- tuottaa
- tuotanto
- luvattu
- ominaisuudet
- toimittaa
- julkisesti
- julkaistu
- Python
- pytorch
- alue
- alainen
- pikemminkin
- Lue
- lukija
- Lukeminen
- sai
- äskettäin
- suositella
- vähentää
- katso
- viittaa
- säilytyspaikka
- pyyntö
- pyynnöt
- tarvitaan
- Vaatii
- tutkimus
- Esittelymateriaalit
- vastaus
- vasteet
- oikein
- ajaa
- juoksu
- uhraa
- sagemaker
- Säästä
- Asteikko
- skaalaus
- laajuus
- sdk
- saumaton
- Toinen
- Toinen sukupolvi
- Osa
- turvallisuus
- nähdä
- lähettäminen
- vanhempi
- Järjestys
- palvella
- palvelu
- Palvelut
- palvelevat
- setti
- asetus
- setup
- useat
- Lyhyt
- näyteikkuna
- osoittivat
- esitetty
- Näytä
- koska
- single
- Koko
- pieni
- pätkä
- So
- Tuotteemme
- ohjelmistokehitys
- ohjelmistokehityspaketti
- ratkaisu
- Ratkaisumme
- joskus
- lähde
- Lähteet
- asiantuntija
- erityinen
- määritelty
- standardi
- alkoi
- tilastollinen
- pysyä
- Vaihe
- Askeleet
- tallennettu
- studio
- Onnistuneesti
- niin
- tuki
- Tuetut
- Tukee
- tehtävät
- Opetus
- tekniikka
- tekniikat
- tensorflow
- testattu
- teksti
- että
- -
- heidän
- Niitä
- sitten
- Nämä
- tätä
- Kautta
- Tim
- aika
- että
- symbolinen
- tokens
- liian
- ylin
- aihe
- taskulamppu
- liikenne
- Juna
- koulutettu
- koulutus
- muuntaja
- Biljoona
- totta
- yrittää
- viritetty
- viritys
- kaksi
- tyyppi
- Päivitykset
- ladattu
- URL
- käyttää
- käytetty
- käyttäjä
- Käyttäjäkokemus
- käyttämällä
- yleensä
- VAHVISTA
- validoitu
- versio
- kautta
- Virtual
- kävellä
- läpikäynti
- haluta
- oli
- we
- verkko
- verkkopalvelut
- paino
- HYVIN
- Mitä
- Mikä on
- joka
- vaikka
- tulee
- with
- sisällä
- ilman
- Referenssit
- työntekijä
- työnkulkuja
- kirjoittaa
- kirjoittaminen
- Voit
- Sinun
- zephyrnet