TinyLlama 1.1B - Koolla ei ole väliä

TinyLlama 1.1B – koolla ei ole väliä

Lähdesolmu: 3081711

esittely

Nopeasti kasvavassa tekoälyn ja koneoppimisen maisemassa TinyLlama 1.1B on huomionarvoinen kehityskulku. Aikakaudella, jolloin laskennalliset rajoitteet asettavat haasteita monimutkaisempien mallien käyttämiselle, TinyLlama erottuu joukosta uhmaamalla odotuksia. Se esittelee kompaktien mallien huomattavaa suorituskykyä.

Tämän artikkelin tarkoituksena on tarjota analyysi TinyLlama 1.1B:stä, kompaktista suuresta kielimallista. Syvennymme sen ydinnäkökohtiin, kuten siihen, kuinka se koulutettiin suorituskyvyn vertailuarvoihin ja käytännön toteutukseen Hugging Face -alustan avulla. Käytämme jopa tätä mallia ilmaisessa Google Colabissa ja testaamme sen matemaattisia ja päättelykykyjä.

TinyLlama 1.1B

Oppimistavoitteet

  • Hanki kattava käsitys TinyLlama 1.1B:stä
  • Tutustu mallin läpikäymään monimutkaiseen koulutusprosessiin
  • Analysoi suorituskyky ja vertaile tuloksia arvioidaksesi sen tehokkuutta
  • Opi käytännön vaiheet TinyLlama 1.1B:n käyttöönottamiseksi koodausesimerkkien avulla

Tämä artikkeli julkaistiin osana Data Science Blogathon.

Sisällysluettelo

Mikä on TinyLlama 1.1B?

TinyLlama 1.1B, osa laajempaa Llama-projektia, on osoitus kielimallinnuksen edistymisestä. Se on malli, jossa on 1.1 miljardia parametria ja joka on koulutettu hämmästyttävillä 3 biljoonalla tokenilla, mikä asettaa sen ainutlaatuiseen asemaan tekoälymaailmassa. Toisin kuin suuremmat vastineensa, TinyLlama 1.1B on suunniteltu tehokkaammaksi ja hallittavammaksi, joten se on hyvä valinta sovelluksiin, joiden laskentaresurssit ovat rajalliset.

Tämä avoimen lähdekoodin malli demokratisoi pääsyn uusimpaan tekoälytekniikkaan, jolloin monet kehittäjät ja tutkijat voivat tutkia ja innovoida luonnollisen kielen käsittelyn alalla. Se on malli, joka tunnetaan kyvystään tasapainottaa suorituskykyä resurssien kulutuksen kanssa, mikä on kriittinen näkökohta nykypäivän erilaisissa laskentaympäristöissä.

TinyLlaman koulutusprosessi 1.1B

TinyLlama 1.1B:n koulutusprosessi on kiehtova, kuten itse malli. TinyLlaman koulutus kesti vain 90 päivää 16 A100-40G GPU:lla. Esiharjoittelu tehtiin 3 biljoonalla Tokenilla, ja TinyLlama Team on julkaissut välimallin kunkin puolen biljoonan välillä. 

Mitä tulee dataan, Slimpajama ja Starcoderdata otettiin 950 miljardin Tokenin yhdistetyllä tietojoukolla. Luonnollisen kielen ja koodin välinen suhde pidettiin 7:3:ssa eli 70 % tiedoista oli luonnollista kieltä ja 30 % koodia. Siten saavuttaakseen 3 biljoonaa merkkiä hienosäätöä varten TinyLlama kävi läpi 3 koulutusjaksoa tätä tietojoukkoa varten. 

TinyLlamasta on jopa julkaistu chat-versio nimeltä TinyLlama-Chat. Aluksi tätä mallia hienosäädettiin UltraChat-tietojoukossa, joka sisältää erilaisia ​​ChatGPT:n luomia synteettisiä keskusteluja. Tämä vaihe oli ratkaiseva, kun mallista tehtiin käsittelemään erilaisia ​​keskustelukonteksteja ja -tyylejä.

Lisätarkennus tehtiin UltraFeedback-tietojoukon DPOTrainerilla. Tämä koulutusvaihe keskittyi mallin vastausten kohdistamiseen ihmisen kaltaisten keskustelumallien mukaisiksi. Tuloksena on malli, joka ei vain tartu tietoon eri aiheista, vaan on jopa vuorovaikutuksessa luonnollisella ja mukaansatempaavalla tavalla.

Voit myös lukea: LlaMA 2:n käytön aloittaminen: Aloittelijan opas

Suorituskyky ja vertailutulokset

TinyLlama 1.1B:n suorituskyvyn arvioiminen paljastaa sen kyvyn toimittaa korkealaatuisia vastauksia nopeasti. Sen koulutus on antanut sille mahdollisuuden vastata monikielisiin sovelluksiin, mikä on tärkeä ominaisuus globalisoituneessa maailmassamme. Pienemmästä koostaan ​​huolimatta TinyLlama 1.1B saavuttaa edelleen suurempia kollegansa vasteen laadun ja nopeuden suhteen, mikä tekee siitä tehokkaan työkalun erilaisissa tekoälysovelluksissa.

Vaikka TinyLlama 1.1B:n vertailuarvot ovat vähemmän laajoja kuin suurempien mallien vertailuarvot, ne osoittavat silti sen kyvyn käsitellä monimutkaisia ​​kielitehtäviä. Sen kyky tuottaa johdonmukaisia ​​ja asiayhteyteen liittyviä vastauksia useilla kielillä on erityisen vaikuttava. Mallia testattiin erilaisilla benchmarkilla, kuten HellaSwag, WinoGrande, ARC, MMLU ja muut. Yhdistetty keskiarvo oli 52.99. Tämä on paljon parempi kuin toinen 1 miljardin parametrimalli eli Pythia 1B, joka saavutti keskiarvon 48.3. Taulukko kuvaa kunkin vertailuarvon yksittäiset pisteet

benchmark TinyLlama 1.1B Pisteet
HellaSwag 59.2
Obqa 36.0
WinoGrande 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
piqa 73.29
avg 52.9

TinyLlama – Aloitus

Täällä, tässä osiossa, lataamme TinyLlama Chatin kvantisoidun version ja käytämme sitä Google Colabissa. Ennen mallin lataamista meidän on ladattava ja asennettava seuraavat Python-paketit

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • - CMAKE_ARGS=”-DLLAMA_CUBLAS=on” ja FORCE_CMAKE=1, sallii llama_cpp_pythonin käyttää Nvidia GPU:ta, joka on saatavilla ilmaisessa colab-versiossa.
  • Sitten asennamme llama_cpp_python paketti pip3:n kautta
  • Lataamme jopa halaavat kasvot, jonka avulla lataamme kvantisoidun TinyLlama 1.1B Chatin

TinyLlama 1.1B Chat -mallin testaamiseksi meidän on ensin ladattava sen kvantisoitu versio. Ladataksemme sen suorittamalla seuraavan koodin

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

Tässä, hugging_face_hub kirjasto huolehtii kvantisoidun mallin latausprosessista. Tätä varten tuomme maahan hf_hub_download joka ottaa käyttöön seuraavat parametrit:

  • mallinimi: Tälle muuttujalle välitämme mallin, jonka haluamme ladata. Täältä haluamme ladata TinyLlama 1.1B Chat GGUF -mallin.
  • model_file: Tässä määritämme ladattavan kvantisoidun mallin tyypin. Täältä lataamme TinyLlama 8B Chatin 1.1-bittisen kvantisoidun version.
  • Lopuksi välitämme nämä parametrit hf_hub_download, joka ottaa nämä parametrit ja lataa määritetyn mallin. Latauksen jälkeen se palauttaa polun, josta malli on ladattu.
  • Tämä palautettu polku tallennetaan kohteeseen malli_polku muuttuja.

Nyt voimme ladata tämän mallin kautta llama_cpp_python kirjasto. Mallin latauskoodi on alla olevan kaltainen.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

Tuomme maahan liekki luokasta alkaen llama_cpp, joka ottaa käyttöön seuraavat parametrit

  • model_path: Tämä muuttuja valitsee polun, johon mallimme on tallennettu. Olemme saaneet polun edellisestä vaiheesta, jonka tarjoamme täällä
  • n_ctx: Tässä annamme mallin kontekstin pituuden. Toistaiseksi tarjoamme kontekstin pituudeksi 512 merkkiä
  • n_threads: Mainitsemme tässä ketjun käyttämien säikeiden määrän liekki luokka
  • n_gpu_layers: Määritämme tämän, jos meillä on käynnissä oleva GPU, minkä teemme ilmaisen yhteistyön tapauksessa. Tästä hyväksymme 40, mikä tarkoittaa, että haluamme ladata koko mallin grafiikkasuorittimeen emmekä halua minkään osan siitä toimivan järjestelmän RAM-muistissa.
  • Lopuksi luomme tästä objektin liekki luokka ja anna se muuttujalle llm

Tämän koodin suorittaminen lataa TinyLlama 1.1B Chat -kvantisoidun mallin GPU:lle ja asettaa sopivan kontekstin pituuden. Nyt on aika tehdä joitain päätelmiä tästä mallista. Tätä varten käytämme alla olevaa koodia

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

Mallin päättelemiseksi välitämme seuraavat parametrit LLM:lle:

  • kehote/chat-malli: Tämä on kehotemalli, jota tarvitaan chattailuun mallin kanssa. Yllä mainittu malli(eli , ) on se, joka toimii TinyLlama 1.1B Chat -mallissa. Mallissa Käyttäjän jälkeen oleva lause on Käyttäjäkehote, ja sukupolvi luodaan Assistantin jälkeen.
  • max_tokens: Tälle muuttujalle välitämme arvon, joka määrittää, kuinka monta merkkiä Large Language -malli voi tulostaa, kun kehote annetaan. Toistaiseksi rajoitamme sen 512 tokeniin.
  • Stop: Tälle muuttujalle välitämme pysäytysmerkin. Pysäytystunnus käskee Large Language -mallia lopettamaan uusien merkkien luomisen. TinyLlama 1.1B Chatissa stop-tunnus on

Luotu teksti tallennetaan tulosmuuttujaan, kun suoritamme tämän. Tulos luodaan muodossa, joka on samanlainen kuin OpenAI API -kutsu. Näin ollen voimme käyttää sukupolvea annetun print-lauseen kautta, samalla tavalla kuin pääsemme sukupolveen OpenAI-vastauksista. Luotu tulos näkyy alla

TinyLlama 1.1B

Tämän kokoiselle mallille sen luoma vaste on huippuluokkaa. Tämä on odottamatonta tämän kokoiselta mallilta; kielioppi ja sävy näyttävät täysin hyvältä, eikä lauseiden toistosta ole merkkejä. Yritetään testata mallin päättelykykyä

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
TinyLlama 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Toistaiseksi hyvin. Näkemiemme esimerkkien perusteella malli tuottaa hyviä vastauksia. Mutta tämä ei välttämättä ole totta kaikissa tapauksissa, koska testaamme sitä vain rajoitetulla määrällä kysymyksiä. Testataan jopa mallia sen matemaattisten päättelykykyjen perusteella

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Näkemistämme esimerkeistä on selvää, että TinyLlamaChat vastaa erittäin huonosti yksinkertaisiin soveltuvuuskysymyksiin matematiikassa. Tämä on odotettavissa, koska mallia ei esiopetettu millään matemaattisella tietojoukolla. Sukupolven laatua voidaan parantaa hienosäätämällä sitä matemaattisessa tietojoukossa

Kun tulee hienosäätöön, TinyLlama on hyvä valinta niille, joilla on rajoitettu laitteisto ja jotka haluavat hienosäätää suuria kielimalleja tietyssä tietojoukossaan.

Mahdolliset käyttötapaukset ja sovellukset

Koska pieni koko TinyLlama, jossa on 1.1 miljardia parametria, sen sovellukset sopivat pääasiassa ympäristöihin, joissa suuremmat mallit eivät ehkä ole yhtä käyttökelpoisia laitteistorajoitusten tai suuremman tehokkuuden vuoksi. Tässä on joitain erityisiä käyttötapauksia, joissa sen koko otetaan huomioon:

Mobiilisovellukset: TinyLlaman pienempi koko tekee siitä hyvän valinnan integroitavaksi mobiilisovelluksiin, joissa tarvitaan laitteen sisäistä käsittelyä. Tämä sisältää kielenkäännössovellukset, henkilökohtaisen avustajan ominaisuudet ja chatbotit, jotka voivat toimia tehokkaasti älypuhelimissa.

Sulautetut järjestelmät IoT-laitteissa: Internet of Things (IoT) -kentällä laskentaresurssit ovat usein rajalliset; TinyLlamaa voidaan käyttää älykkäiden kieltenkäsittelyominaisuuksien lisäämiseen erilaisiin laitteisiin, kuten älykkään kodin avustajiin, puettavaan tekniikkaan ja muihin vastaaviin kytkettyihin laitteisiin.

Edge Computing: TinyLlamaa voidaan käyttää tehokkaasti sovelluksissa, jotka hyötyvät tietojen käsittelystä lähempänä lähdettä keskitetyn pilviympäristön sijaan. Tämä sisältää reaaliaikaisen kielenkäsittelyn autojärjestelmissä, valmistuslaitteissa ja muissa reunalaitteissa.

Vähän resursseja vaativa kielentutkimus: Pienen kokonsa ja pienempien laskentavaatimustensa vuoksi TinyLlama voi olla arvokas työkalu kielitutkimuksessa erityisesti aliresurssoiduissa kielissä, joissa laajamittainen mallikoulutus ei ole mahdollista.

Koulutusvälineet: TinyLlamaa voidaan käyttää oppimisympäristöissä, erityisesti niissä, joilla on rajoitettu pääsy huippuluokan tietotekniikkaresursseihin, kieltenoppimissovellusten, interaktiivisten opetustyökalujen ja muiden oppimisapuvälineiden kehittämiseen.

Sisällön luominen pienyrityksille: Pienet yritykset, joilla on rajalliset resurssit, voivat käyttää TinyLlamaa sisällön, kuten tuotekuvausten, markkinointitekstien ja asiakaskirjeen luomiseen, ilman suurta laskentatehoa.

Prototyyppi ja kokeilu: Kehittäjät ja tutkijat, jotka haluavat kokeilla kielimalleja, mutta joilla ei ole pääsyä suuritehoisiin laskentaresursseihin, voivat käyttää TinyLlamaa prototyyppien tekemiseen ja uusien NLP-sovellusten kehittämiseen.

Tehokas data-analyysi: TinyLlamaa voidaan käyttää tekstin analysointiin ja tiedon poimimiseen tilanteissa, joissa tarvitaan nopeaa ja tehokasta käsittelyä, kuten asiakaspalautteen, kyselyvastausten tai sosiaalisen median vuorovaikutuksen analysointi.

Yhteenveto

TinyLlama 1.1B on osoitus tekoälyn ja luonnollisen kielen käsittelyn edistymisestä. Sen kehittäminen ja laaja saatavuus ovat elintärkeitä tehokkaampien, pienten ja nopeampien päättelykielimallien luomiseksi. TinyLlama 1.1B tasapainottaa pienemmän parametrijalanjäljen ja vankan suorituskyvyn tehokkaan ja käytännöllisen mallin kriittiseen tarpeeseen monenlaisiin sovelluksiin. Sen kyky ymmärtää ja tuottaa kieltä ihmismaisella tavalla samalla kun se on riittävän kevyt erilaisiin laskentaympäristöihin, tekee siitä hyvän valinnan ihmisille, jotka kamppailevat suurten kielimallien käyttämisestä koneissaan. Mallia voidaan hienosäätää helposti tietojoukossa ja sitä voidaan kouluttaa rajoitetuilla laskentaresursseilla. 

Tärkeimmät poiminnat tästä artikkelista ovat

  • Tehokkuuteen suunniteltu TinyLlama 1.1B on saatavilla laajemmalle yleisölle, mukaan lukien rajalliset laskentaresurssit, joten se sopii useisiin sovelluksiin.
  • Malli käytiin läpi laajan koulutusprosessin, mukaan lukien 3 biljoonaa tokenia 90 päivän aikana käyttämällä 16 A100-40G GPU:ta.
  • Pienemmästä koostaan ​​huolimatta TinyLlama 1.1B tarjoaa korkealaatuisia, asiayhteyteen liittyviä vastauksia useilla kielillä, joten se on malli, jota kannattaa harkita.
  • Se on hyvä valinta mobiilisovelluksiin, IoT-laitteisiin, koulutustyökaluihin ja muuhun, sen kompakti koko ja tehokkuus mahdollistavat laajoja sovelluksia.
  • Sen alhaisemmat laskentavaatimukset tekevät siitä arvokkaan työkalun kielitutkimuksessa, erityisesti aliresurssoiduille kielille.
  • Malli on hyvä valinta niille, jotka kokeilevat kielimalleja tai kehittävät uusia NLP-sovelluksia, pääasiassa asetuksissa, joissa laskentateho on rajoitettu.

Usein kysytyt kysymykset

Q1. Mikä on TinyLlama 1.1B?

A. TinyLlama 1.1B on kompakti, tehokas suurikielinen malli, jossa on 1.1 miljardia parametria, joka on koulutettu 3 biljoonalla tunnisteella ja sopii sovelluksiin, joissa on rajoitetut laskentaresurssit.

Q2. Miten TinyLlama 1.1B koulutettiin?

A. Sitä koulutettiin 90 päivän ajan käyttämällä 16 A100-40G GPU:ta tietojoukoissa, mukaan lukien Slimpajama ja Starcoderdata, luonnollisen kielen ja koodin suhteen 7:3.

Q3. Mitkä ovat TinyLlama 1.1B:n suorituskyvyn vertailuarvot?

A. TinyLlama 1.1B osoittaa taitonsa monimutkaisten kielitehtävien käsittelyssä ja saa keskimäärin 52.99 pistemäärää vertailuarvoissa, kuten HellaSwag, MMLU ja WinoGrande.

Q4. Mitkä ovat mahdollisia TinyLlama 1.1B:n käyttötapauksia?

A. Se sopii sovelluksiin, joissa koko ja nopeus ovat tärkeitä asioita. Näitä ovat mobiilisovellukset, IoT-laitteet, kuten kodin automaatiolaitteet, sisällöntuotanto pienyrityksille ja tehokas data-analyysi.

Q5. Sopiiko TinyLlama 1.1B kehittäjille, joilla on rajalliset resurssit?

A. Ehdottomasti se on täydellinen valinta kehittäjille ja tutkijoille, joilla ei ole pääsyä suuritehoisiin laskentaresursseihin prototyyppien luomiseen ja uusien NLP-sovellusten kehittämiseen. TinyLlama-mallia voidaan ajaa jopa Raspberry Pi -koneella.

Q6. Miten TinyLlama 1.1B toimii matemaattisissa päättelytehtävissä?

A. Vaikka se todella on erinomainen eri kielitehtävissä, se osoittaa rajoituksia matemaattisessa päättelyssä, jota voidaan parantaa hienosäätämällä asiaankuuluvia tietojoukkoja.

Tässä artikkelissa näkyvä media ei ole Analytics Vidhyan omistuksessa, ja sitä käytetään tekijän harkinnan mukaan.

Aikaleima:

Lisää aiheesta Analyysi Vidhya