TinyLlama 1.1B - Velikost ni pomembna

TinyLlama 1.1B – Velikost ni pomembna

Izvorno vozlišče: 3081711

Predstavitev

V hitro rastoči pokrajini umetne inteligence in strojnega učenja se TinyLlama 1.1B pojavi kot omembe vreden razvoj. V obdobju, ko računalniške omejitve predstavljajo izziv za izvajanje bolj zapletenih modelov, TinyLlama izstopa s tem, da kljubuje pričakovanjem. Predstavlja izjemno zmogljivost kompaktnih modelov.

Namen tega članka je zagotoviti analizo TinyLlama 1.1B, kompaktnega velikega jezikovnega modela. Poglobili se bomo v njegove glavne vidike, na primer, kako je bil usposobljen za merila uspešnosti in praktično implementacijo s platformo Hugging Face. Ta model bomo celo zagnali v brezplačnem Google Colabu in preizkusili njegove matematične in sklepne sposobnosti.

TinyLlama 1.1B

Učni cilji

  • Pridobite celovito razumevanje TinyLlama 1.1B
  • Raziščite zapleten proces usposabljanja, skozi katerega je šel model
  • Analizirajte uspešnost in primerjalne rezultate, da ocenite njegovo učinkovitost
  • Naučite se praktičnih korakov za implementacijo TinyLlama 1.1B z uporabo primerov kodiranja

Ta članek je bil objavljen kot del Blogaton podatkovne znanosti.

Kazalo

Kaj je TinyLlama 1.1B?

TinyLlama 1.1B, del širšega projekta Llama, je dokaz napredka pri jezikovnem modeliranju. To je model z 1.1 milijarde parametrov, ki je usposobljen na osupljivih 3 bilijonih žetonov, kar ga postavlja v edinstven položaj v pokrajini umetne inteligence. Za razliko od svojih večjih sorodnikov je TinyLlama 1.1B zasnovan tako, da je bolj učinkovit in obvladljiv, zaradi česar je dobra izbira za aplikacije z omejenimi računalniškimi viri.

Ta odprtokodni model demokratizira dostop do najsodobnejše tehnologije umetne inteligence, kar mnogim razvijalcem in raziskovalcem omogoča raziskovanje in inovacije na področju obdelave naravnega jezika. To je model, znan po svoji zmožnosti uravnoteženja zmogljivosti s porabo virov, kar je ključnega pomena v današnjih raznolikih računalniških okoljih.

Proces usposabljanja za TinyLlama 1.1B

Proces usposabljanja TinyLlama 1.1B je fascinanten, tako kot sam model. Usposabljanje TinyLlame je potekalo samo 90 dni, usposabljalo se je na 16 grafičnih procesorjih A100-40G. Predhodno usposabljanje je bilo izvedeno na 3 bilijonih žetonov, ekipa TinyLlama pa je objavila vmesni model med vsakim pol bilijona. 

Kar zadeva podatke, sta bili Slimpajama in Starcoderdata vzeti s skupno velikostjo nabora podatkov 950 milijard žetonov. Razmerje med naravnim jezikom in kodo je bilo ohranjeno pri 7:3, tj. 70 % podatkov je bil naravni jezik, 30 % pa koda. Tako je TinyLlama za dosego oznake 3 bilijonov žetonov za natančno uravnavanje opravila 3 obdobja usposabljanja za ta nabor podatkov. 

Izdana je celo različica za klepet TinyLlama, imenovana TinyLlama-Chat. Na začetku je bil ta model podvržen natančnemu prilagajanju podatkovnega niza UltraChat, ki vsebuje različne sintetične pogovore, ki jih ustvari ChatGPT. Ta korak je bil ključen pri izdelavi modela za obvladovanje različnih pogovornih kontekstov in stilov.

Nadaljnja izboljšava je bila dosežena z uporabo DPOTrainerja na naboru podatkov UltraFeedback. Ta faza usposabljanja se je osredotočila na usklajevanje odzivov modela, da se uskladijo s človeškimi pogovornimi vzorci. Rezultat je model, ki ne le zajema informacije o različnih temah, ampak celo komunicira na naraven in privlačen način​.

Preberete lahko tudi: Kako začeti z LlaMA 2: Vodnik za začetnike

Učinkovitost in rezultati primerjalnih preizkusov

Ocenjevanje zmogljivosti TinyLlama 1.1B razkriva njegovo sposobnost hitrega zagotavljanja visokokakovostnih odzivov. Njegovo usposabljanje mu je omogočilo, da skrbi za večjezične aplikacije, kar je pomembna značilnost v našem globaliziranem svetu. Kljub manjši velikosti TinyLlama 1.1B še vedno dohaja svoje večje primerke glede kakovosti odziva in hitrosti, zaradi česar je močno orodje v različnih aplikacijah AI.

Čeprav so merila uspešnosti za TinyLlama 1.1B manj obsežna od tistih za večje modele, še vedno dokazujejo njegovo strokovnost pri obravnavanju kompleksnih jezikovnih nalog. Njegova sposobnost ustvarjanja koherentnih in kontekstualno ustreznih odgovorov v več jezikih je še posebej impresivna. Model je bil testiran na različnih merilih, kot so HellaSwag, WinoGrande, ARC, MMLU in drugi. Skupna povprečna ocena je bila 52.99. To je precej bolje od drugega modela z 1 milijardo parametrov, tj. Pythia 1B, ki je dosegel povprečno oceno 48.3. Tabela prikazuje posamezne rezultate vsakega merila

merilo TinyLlama 1.1B rezultat
HellaSwag 59.2
Obqa 36.0
WinoGrande 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
piqa 73.29
pov 52.9

TinyLlama – Kako začeti

Tukaj, v tem razdelku, bomo prenesli kvantizirano različico TinyLlama Chat in jo zagnali v Google Colab. Preden prenesemo model, moramo prenesti in namestiti naslednje pakete Python

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • O CMAKE_ARGS=”-DLLAMA_CUBLAS=on” in FORCE_CMAKE=1, bo llama_cpp_python omogočil uporabo GPU Nvidia, ki je na voljo v brezplačni različici za sodelovanje.
  • Nato namestimo llama_cpp_python paket preko pip3
  • Prenesemo celo huggingface-hub, s katerim bomo prenašali kvantiziran TinyLlama 1.1B Chat

Za preizkus modela TinyLlama 1.1B Chat moramo najprej prenesti njegovo kvantizirano različico. Za prenos bomo zagnali naslednjo kodo

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)

Tukaj je hugging_face_hub knjižnica bo poskrbela za postopek prenosa kvantiziranega modela. Za to uvažamo hf_hub_download ki zajema naslednje parametre:

  • ime_modela: Tej spremenljivki posredujemo model, ki ga želimo prenesti. Tukaj želimo prenesti model TinyLlama 1.1B Chat GGUF.
  • model_datoteka: Tukaj določimo vrsto kvantiziranega modela, ki ga želimo prenesti. Tukaj bomo prenesli 8-bitno kvantizirano različico klepeta TinyLlama 1.1B.
  • Na koncu te parametre posredujemo v hf_hub_download, ki sprejme te parametre in prenese podani model. Po prenosu vrne pot, kjer je bil model prenesen.
  • Ta vrnjena pot se shranjuje v model_path spremenljivka.

Zdaj lahko ta model naložimo skozi llama_cpp_python knjižnica. Koda za nalaganje modela bo podobna spodnji.

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
)

Uvažamo Llama razreda iz llama_cpp, ki zajema naslednje parametre

  • model_path: Ta spremenljivka prevzame pot, kjer je shranjen naš model. Pridobili smo pot iz prejšnjega koraka, ki jo bomo navedli tukaj
  • n_ctx: Tukaj podajamo dolžino konteksta za model. Za zdaj nudimo 512 žetonov kot dolžino konteksta
  • n_nit: Tukaj omenjamo število niti, ki jih bo uporabil Llama razred
  • n_gpu_layers: To določimo, če imamo delujoč GPE, kar storimo v primeru brezplačnega sodelovanja. Temu posredujemo 40, kar pomeni, da želimo celoten model prenesti v GPE in ne želimo, da se kateri koli del izvaja v sistemskem RAM-u
  • Končno iz tega ustvarimo predmet Llama in ga dajte spremenljivki llm

Zagon te kode bo naložil kvantizirani model TinyLlama 1.1B Chat v GPE in nastavil ustrezno dolžino konteksta. Zdaj je čas, da izvedemo nekaj sklepanja o tem modelu. Za to delamo s spodnjo kodo

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

Za sklepanje modela LLM posredujemo naslednje parametre:

  • predloga za poziv/klepet: To je predloga poziva, ki je potrebna za klepet z modelom. Zgoraj omenjena predloga(tj , ) je tisti, ki deluje za model TinyLlama 1.1B Chat. V predlogi je stavek za uporabnikom uporabniški poziv, generacija pa bo ustvarjena za pomočnikom.
  • max_tokens: Tej spremenljivki posredujemo vrednost, ki določa največje število žetonov, ki jih lahko izpiše model velikega jezika, ko je dan poziv. Za zdaj ga omejujemo na 512 žetonov.
  • stop: Tej spremenljivki posredujemo žeton zaustavitve. Žeton zaustavitve sporoči velikemu jezikovnemu modelu, naj preneha z ustvarjanjem nadaljnjih žetonov. Za TinyLlama 1.1B Chat je žeton zaustavitve

Ustvarjeno besedilo je shranjeno v izhodni spremenljivki, ko to zaženemo. Rezultat je ustvarjen v obliki, podobni klicu OpenAI API. Zato lahko do generiranja dostopamo prek danega stavka za tiskanje, podobno kot do generiranja dostopamo iz odgovorov OpenAI. Ustvarjeni rezultat je viden spodaj

TinyLlama 1.1B

Za model te velikosti je njegov generirani odziv vrhunski. To je nepričakovano od modela te velikosti; slovnica in ton sta videti povsem v redu in ni opaziti ponavljanja stavkov. Poskusimo preizkusiti zmožnost sklepanja modela

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'])
"

Zaenkrat gre dobro. Iz primerov, ki smo jih videli, model ustvari dobre odgovore. Vendar to morda ne drži v vseh primerih, ker ga testiramo le na omejenem številu vprašanj. Preizkusimo celo model glede njegovih zmožnosti matematičnega sklepanja

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'])
"

Iz primerov, ki smo jih videli, je jasno, da TinyLlamaChat zelo slabo odgovarja na preprosta vprašanja o sposobnostih pri matematiki. To je pričakovano, ker model ni bil vnaprej usposobljen za noben matematični nabor podatkov. Kakovost generiranja je mogoče izboljšati s finim prilagajanjem nabora matematičnih podatkov

TinyLlama je najboljša izbira za tiste, ki so omejeni z omejeno strojno opremo in želijo natančno prilagoditi velike jezikovne modele na svojem specifičnem naboru podatkov.

Možni primeri uporabe in aplikacije

Glede na kompaktno velikost TinyLlama, ki se ponaša z 1.1 milijarde parametrov, so njegove aplikacije v glavnem primerne za okolja, kjer večji modeli morda niso tako izvedljivi zaradi omejitev strojne opreme ali večje učinkovitosti. Tukaj je nekaj posebnih primerov uporabe, pri čemer je treba upoštevati njegovo velikost:

Mobilne aplikacije: Zaradi manjše velikosti je TinyLlama dobra izbira za integracijo v mobilne aplikacije, kjer je potrebna obdelava v napravi. To vključuje aplikacije za prevajanje jezikov, funkcije osebnega pomočnika in klepetalne robote, ki lahko učinkovito delujejo na pametnih telefonih.

Vgrajeni sistemi v napravah IoT: Na področju interneta stvari (IoT) so računalniški viri pogosto omejeni; TinyLlama se lahko uporablja za dodajanje zmogljivosti inteligentne jezikovne obdelave različni opremi, kot so pametni domači pomočniki, nosljiva tehnika in druga taka povezana oprema.

Robno računalništvo: Za aplikacije, ki imajo koristi od obdelave podatkov bližje viru in ne v centraliziranem okolju v oblaku, je mogoče učinkovito uporabiti TinyLlama. To vključuje obdelavo jezika v realnem času v avtomobilskih sistemih, proizvodni opremi in drugih robnih napravah.

Jezikovne raziskave z malo virov: Zaradi manjše velikosti in nižjih računalniških zahtev je lahko TinyLlama dragoceno orodje pri jezikoslovnih raziskavah, zlasti za jezike s premalo sredstev, kjer obsežno usposabljanje modelov ni izvedljivo.

Izobraževalna orodja: V izobraževalnih okoljih, zlasti tistih z omejenim dostopom do vrhunskih računalniških virov, se lahko TinyLlama uporablja za razvoj aplikacij za učenje jezikov, interaktivnih izobraževalnih orodij in drugih učnih pripomočkov.

Generiranje vsebine za mala podjetja: Mala podjetja z omejenimi sredstvi lahko uporabljajo TinyLlama za ustvarjanje vsebine, kot so opisi izdelkov, marketinška kopija in korespondenca s strankami, brez potrebe po obsežni računalniški moči.

Izdelava prototipov in eksperimentiranje: Razvijalci in raziskovalci, ki želijo eksperimentirati z jezikovnimi modeli, vendar nimajo dostopa do zmogljivih računalniških virov, lahko uporabijo TinyLlama za prototip in razvoj novih NLP aplikacij.

Učinkovita analiza podatkov: TinyLlama se lahko uporablja za analizo besedila in pridobivanje podatkov v scenarijih, kjer je potrebna hitra in učinkovita obdelava, kot je analiza povratnih informacij strank, odgovorov na ankete ali interakcij v družabnih medijih.

zaključek

TinyLlama 1.1B je dokaz napredka na področju umetne inteligence in obdelave naravnega jezika. Njegov razvoj in široka dostopnost sta ključnega pomena za ustvarjanje učinkovitejših, majhnih in hitrejših jezikovnih modelov sklepanja. TinyLlama 1.1B z uravnoteženjem manjšega odtisa parametrov z robustno zmogljivostjo obravnava kritično potrebo po zmogljivih in praktičnih modelih za široko paleto aplikacij. Zaradi njegove zmožnosti razumevanja in ustvarjanja jezika na človeški način, hkrati pa je dovolj lahek za različna računalniška okolja, je najboljša izbira za ljudi, ki imajo težave z izvajanjem velikih jezikovnih modelov na svojih računalnikih. Model je mogoče enostavno natančno nastaviti na naboru podatkov in ga je mogoče usposobiti z omejenimi računalniškimi viri. 

Ključni izsledki tega članka vključujejo

  • TinyLlama 1.1B, zasnovana za učinkovitost, je na voljo širši javnosti, vključno s tistimi z omejenimi računalniškimi viri, zaradi česar je primerna za več aplikacij.
  • Model je bil podvržen obsežnemu procesu usposabljanja, vključno z usposabljanjem na 3 bilijonih žetonov v 90 dneh z uporabo 16 grafičnih procesorjev A100-40G.
  • TinyLlama 1.1B kljub svoji manjši velikosti zagotavlja visokokakovostne, kontekstualno ustrezne odgovore v več jezikih, zaradi česar je model, ki ga je treba upoštevati.
  • Je dobra izbira za mobilne aplikacije, opremo IoT, izobraževalna orodja in drugo, njegova kompaktna velikost in učinkovitost omogočata široko uporabo.
  • Zaradi nižjih računalniških zahtev je dragoceno orodje v jezikoslovnih raziskavah, zlasti za jezike s premalo sredstev.
  • Model je dobra izbira za tiste, ki eksperimentirajo z jezikovnimi modeli ali razvijajo nove NLP aplikacije, predvsem v nastavitvah z omejeno računalniško močjo.

Pogosto zastavljena vprašanja

Q1. Kaj je TinyLlama 1.1B?

A. TinyLlama 1.1B je kompakten, učinkovit velik jezikovni model z 1.1 milijarde parametrov, usposobljen na 3 bilijonih žetonov, primeren za aplikacije z omejenimi računalniškimi viri.

Q2. Kako je bil usposobljen TinyLlama 1.1B?

A. Usposabljali so ga 90 dni z uporabo 16 grafičnih procesorjev A100-40G na naborih podatkov, vključno s Slimpajama in Starcoderdata, z razmerjem med naravnim jezikom in kodo 7:3.

Q3. Kakšna so merila uspešnosti TinyLlama 1.1B?

A. TinyLlama 1.1B kaže svoje spretnosti pri obvladovanju zapletenih jezikovnih nalog in dosega povprečno oceno 52.99 pri merilih uspešnosti, kot so HellaSwag, MMLU in WinoGrande.

Q4. Kateri so nekateri možni primeri uporabe TinyLlama 1.1B?

A. Primeren je za aplikacije, kjer sta pomembna velikost in hitrost. Sem spadajo mobilne aplikacije, oprema IoT, kot so naprave za avtomatizacijo doma, ustvarjanje vsebin za mala podjetja in učinkovita analiza podatkov.

Q5. Ali je TinyLlama 1.1B primeren za razvijalce z omejenimi viri?

A. Vsekakor je odlična izbira za razvijalce in raziskovalce, ki nimajo dostopa do zmogljivih računalniških virov za izdelavo prototipov in razvoj novih NLP aplikacij. Model TinyLlama se lahko izvaja celo na računalniku Raspberry Pi.

Q6. Kako se TinyLlama 1.1B obnese pri nalogah matematičnega razmišljanja?

A. Čeprav resnično blesti pri različnih jezikovnih nalogah, kaže omejitve pri matematičnem razmišljanju, ki ga je mogoče izboljšati s finim prilagajanjem ustreznih naborov podatkov.

Mediji, prikazani v tem članku, niso v lasti Analytics Vidhya in se uporabljajo po lastni presoji avtorja.

Časovni žig:

Več od Analitika Vidhya