TinyLlama 1.1B – suurus ei ole oluline

TinyLlama 1.1B – suurus ei ole oluline

Allikasõlm: 3081711

Sissejuhatus

Tehisintellekti ja masinõppe kiiresti kasvaval maastikul tõuseb TinyLlama 1.1B tähelepanuväärse arenguna esile. Ajastul, kus arvutuslikud piirangud seavad väljakutseid keerukamate mudelite käitamisele, paistab TinyLlama silma ootuste trotsimisega. See näitab kompaktsete mudelite märkimisväärset jõudlust.

Selle artikli eesmärk on anda analüüs TinyLlama 1.1B, kompaktse suure keelemudeli kohta. Me uurime selle põhiaspekte, nagu näiteks seda, kuidas seda platvormi Hugging Face abil jõudluse etalonide osas koolitati ja praktilist rakendamist. Käitame seda mudelit isegi tasuta Google Colabis ning testime selle matemaatika- ja arutlusvõimet.

TinyLlama 1.1B

õppe eesmärgid

  • Hankige igakülgne arusaam TinyLlama 1.1B-st
  • Tutvuge keeruka koolitusprotsessiga, mille mudel on läbinud
  • Selle tõhususe hindamiseks analüüsige toimivust ja võrdlusuuringu tulemusi
  • Õppige praktilisi samme TinyLlama 1.1B juurutamiseks kodeerimisnäidete abil

See artikkel avaldati osana Andmeteaduse ajaveebi.

Sisukord

Mis on TinyLlama 1.1B?

TinyLlama 1.1B, mis on osa laiemast Llama projektist, annab tunnistust keele modelleerimise edusammudest. See on 1.1 miljardi parameetriga mudel, mis on treenitud hämmastava 3 triljoni žetooniga, mis asetab selle AI maastikul ainulaadsesse positsiooni. Erinevalt suurematest kolleegidest on TinyLlama 1.1B loodud olema tõhusam ja paremini juhitav, mistõttu on see hea valik piiratud arvutusressurssidega rakenduste jaoks.

See avatud lähtekoodiga mudel demokratiseerib juurdepääsu tipptasemel tehisintellekti tehnoloogiale, võimaldades paljudel arendajatel ja teadlastel uurida ja teha uuendusi loomuliku keele töötlemise valdkonnas. See on mudel, mis on tuntud oma võime poolest tasakaalustada jõudlust ressursitarbimisega, mis on tänapäeva mitmekesistes arvutuskeskkondades kriitilise tähtsusega.

TinyLlama 1.1B koolitusprotsess

TinyLlama 1.1B treeningprotsess on põnev, nagu mudel ise. TinyLlama koolitus toimus vaid 90 päeva, treenides 16 A100-40G GPU-ga. Eelkoolitus viidi läbi 3 triljoni märgiga ja TinyLlama meeskond on avaldanud vahemudeli iga poole triljoni vahel. 

Mis puutub andmetesse, siis Slimpajama ja Starcoderdata võeti kombineeritud andmekogumi suurusega 950 miljardit märgi. Loomuliku keele ja koodi suhe hoiti 7:3, st 70% andmetest oli loomulik keel ja 30% kood. Nii et 3 triljoni märgi saavutamiseks peenhäälestuse eest läbis TinyLlama selle andmestiku jaoks 3 epohhi koolitust. 

Välja on antud isegi TinyLlama vestlusversioon nimega TinyLlama-Chat. Algselt viidi see mudel läbi UltraChati andmestiku peenhäälestuse, mis sisaldab erinevaid ChatGPT loodud sünteetilisi vestlusi. See samm oli otsustava tähtsusega, et muuta mudel käsitlema erinevaid vestluskontekste ja -stiile.

Täiendav täpsustus saavutati UltraFeedbacki andmestiku DPOTraineri abil. See koolitusetapp keskendus mudeli vastuste joondamisele, et need vastaksid inimlikele vestlusmustritele. Tulemuseks on mudel, mis mitte ainult ei haara teavet erinevatel teemadel, vaid suhtleb isegi loomulikul ja kaasahaaraval viisil.

Võite lugeda ka järgmist: LlaMA 2 kasutamise alustamine: juhend algajatele

Toimivus ja võrdlusuuringu tulemused

TinyLlama 1.1B jõudluse hindamine näitab selle võimet pakkuda kiiresti kvaliteetseid vastuseid. Selle koolitus on andnud sellele võimaluse rahuldada mitmekeelseid rakendusi, mis on meie globaliseerunud maailmas oluline omadus. Vaatamata oma väiksemale suurusele on TinyLlama 1.1B oma suurematele kolleegidele vastuse kvaliteedi ja kiiruse osas endiselt järele jõudmas, muutes selle tõhusaks tööriistaks erinevates tehisintellekti rakendustes.

Kuigi TinyLlama 1.1B võrdlusalused on väiksemad kui suuremate mudelite omad, näitavad see siiski selle oskust keeruliste keeleülesannete käsitlemisel. Selle võime luua sidusaid ja kontekstipõhiseid vastuseid mitmes keeles on eriti muljetavaldav. Mudelit testiti erinevatel võrdlusalustel, nagu HellaSwag, WinoGrande, ARC, MMLU ja teised. Kombineeritud keskmine punktisumma tuli 52.99. See on palju parem kui teine ​​1 miljardi parameetri mudel, st Pythia 1B, mille keskmine tulemus oli 48.3. Tabelis on kujutatud iga võrdlusaluse individuaalsed skoorid

võrrelda TinyLlama 1.1B skoor
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 – alustamine

Siin, selles jaotises, laadime alla TinyLlama Chati kvantiseeritud versiooni ja käivitame selle Google Colabis. Enne mudeli allalaadimist peame alla laadima ja installima järgmised Pythoni paketid

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • . CMAKE_ARGS=”-DLLAMA_CUBLAS=sees” ja FORCE_CMAKE=1, võimaldab llama_cpp_pythonil kasutada tasuta colab versioonis saadaolevat Nvidia GPU-d.
  • Seejärel paigaldame llama_cpp_python pakett läbi pip3
  • Me isegi laadime alla kallistav nägu-rummu, millega laadime alla kvantiseeritud TinyLlama 1.1B vestluse

TinyLlama 1.1B Chati mudeli testimiseks peame esmalt alla laadima selle kvantiseeritud versiooni. Selle allalaadimiseks käivitame järgmise koodi

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)

Siin, hugging_face_hub raamatukogu hoolitseb kvantiseeritud mudeli allalaadimise eest. Selleks impordime hf_hub_download mis võtab arvesse järgmisi parameetreid:

  • mudeli nimi: Sellele muutujale edastame mudeli, mille tahame alla laadida. Siin soovime alla laadida TinyLlama 1.1B Chat GGUF mudeli.
  • model_file: Siin täpsustame kvantiseeritud mudeli tüübi, mida tahame alla laadida. Siit laadime alla TinyLlama 8B vestluse 1.1-bitise kvantiseeritud versiooni.
  • Lõpuks edastame need parameetrid hf_hub_download, mis võtab need parameetrid sisse ja laadib alla määratud mudeli. Pärast allalaadimist tagastab tee, kust mudel alla laaditi.
  • Seda tagastatud teed salvestatakse mudeli_tee muutuja.

Nüüd saame selle mudeli laadida läbi llama_cpp_python raamatukogu. Mudeli laadimise kood on nagu allpool.

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
)

Me impordime Laama klassist alates lama_cpp, mis võtab järgmised parameetrid

  • model_path: See muutuja võtab tee, kuhu meie mudel on salvestatud. Oleme saanud eelmise etapi tee, mille me siin pakume
  • n_ctx: Siin anname mudeli konteksti pikkuse. Praegu pakume konteksti pikkusena 512 märki
  • n_lõime: Siin mainime niitide arvu, mida kasutaja kasutab Laama klass
  • n_gpu_layers: Täpsustame selle, kui meil on töötav GPU, mida teeme tasuta koostöö puhul. Sellele edastame 40, mis tähendab, et tahame kogu mudeli GPU-sse maha laadida ega soovi, et ükski selle osa töötaks süsteemi RAM-is
  • Lõpuks loome sellest objekti Laama klassi ja anna see muutujale llm

Selle koodi käitamine laadib GPU-sse TinyLlama 1.1B Chati kvantiseeritud mudeli ja määrab sobiva konteksti pikkuse. Nüüd on aeg teha selle mudeli kohta mõned järeldused. Selleks töötame alloleva koodiga

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

Mudeli järeldamiseks edastame LLM-ile järgmised parameetrid:

  • viipa/vestluse mall: See on mudeliga vestlemiseks vajalik viipamall. Eespool nimetatud mall(st , ) on see, mis töötab TinyLlama 1.1B Chati mudeli jaoks. Mallis on kasutajale järgnev lause kasutajaviip ja generatsioon genereeritakse pärast assistenti.
  • max_tokens: Sellele muutujale edastame väärtuse, mis määrab maksimaalse žetoonide arvu, mida suur keelemudel võib viipa andmisel väljastada. Praegu piirame selle 512 märgiga.
  • peatus: Sellele muutujale edastame stoppmärgi. Peatusmärk käsib suure keele mudelil lõpetada täiendavate märkide genereerimine. TinyLlama 1.1B Chati jaoks on peatusmärk

Loodud tekst salvestatakse selle käivitamisel väljundmuutujas. Tulemus genereeritakse OpenAI API-kutsele sarnases vormingus. Seega pääseme generatsioonile juurde antud prindilause kaudu, sarnaselt sellele, kuidas pääseme generatsiooni juurde OpenAI vastuste kaudu. Loodud väljundit näete allpool

TinyLlama 1.1B

Selle suurusega mudeli puhul on selle genereeritud vastus tipptasemel. See on sellise suurusega mudeli puhul ootamatu; grammatika ja toon näevad täiesti korras välja ning lausete kordumisest pole jälgegi. Proovime testida mudeli arutlusvõimet

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

Siiamaani on kõik korras. Näidete põhjal, mida oleme näinud, genereerib mudel häid vastuseid. Kuid see ei pruugi kõigil juhtudel tõsi olla, sest me testime seda ainult piiratud arvu küsimustega. Testime isegi mudelit selle matemaatika arutlusvõime põhjal

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äidetest, mida oleme näinud, on selge, et TinyLlamaChat suudab matemaatikas lihtsatele sobivusküsimustele vastata äärmiselt halvasti. See on ootuspärane, kuna mudelit ei treenitud ühegi matemaatika andmestiku jaoks. Generatsiooni kvaliteeti saab parandada matemaatika andmestiku peenhäälestamisel

Peenhäälestuse osas on TinyLlama hea valik neile, kes on piiratud riistvaraga ja soovivad peenhäälestada suuri keelemudeleid oma konkreetse andmestiku alusel.

Võimalikud kasutusjuhud ja rakendused

Arvestades selle kompaktset suurust TinyLlama, millel on 1.1 miljardit parameetrit, sobivad selle rakendused peamiselt keskkondadesse, kus suuremad mudelid ei pruugi riistvarapiirangute või suurema tõhususe tõttu olla nii teostatavad. Siin on mõned konkreetsed kasutusjuhud, pidades silmas selle suurust:

Mobiilirakendused: TinyLlama väiksem suurus muudab selle heaks valikuks integreerimiseks mobiilirakendustesse, kus on vajalik seadmesisene töötlemine. See hõlmab keeletõlkerakendusi, isikliku assistendi funktsioone ja vestlusroboteid, mis võivad nutitelefonides tõhusalt töötada.

Manussüsteemid IoT-seadmetes: Asjade Interneti (IoT) valdkonnas on arvutiressursid sageli piiratud; TinyLlamat saab kasutada intelligentsete keeletöötlusvõimaluste lisamiseks erinevatele seadmetele, nagu nutikad koduabilised, kantavad tehnoloogiad ja muud sarnased ühendatud seadmed.

Edge Computing: Rakenduste jaoks, mis saavad kasu andmete töötlemisest allikale lähemal, mitte tsentraliseeritud pilvekeskkonnas, saab TinyLlamat tõhusalt kasutada. See hõlmab reaalajas keeletöötlust autosüsteemides, tootmisseadmetes ja muudes servaseadmetes.

Väheste ressurssidega keeleuuringud: Oma väiksema suuruse ja väiksemate arvutusnõuete tõttu võib TinyLlama olla väärtuslik tööriist keeleuuringutes, eriti alaressurssidega keelte puhul, kus suuremahuline mudelikoolitus pole teostatav.

Õppevahendid: Haridusasutustes, eriti neis, kus juurdepääs tipptasemel arvutiressurssidele on piiratud, saab TinyLlamat kasutada keeleõpperakenduste, interaktiivsete õppevahendite ja muude õppevahendite arendamiseks.

Sisu loomine väikeettevõtetele: Piiratud ressurssidega väikeettevõtted saavad kasutada TinyLlamat sisu, näiteks tootekirjelduste, turundusteksti ja kliendikirjavahetuse loomiseks, ilma et oleks vaja suurt arvutusvõimsust.

Prototüüpimine ja katsetamine: Arendajad ja teadlased, kes soovivad katsetada keelemudeleid, kuid kellel puudub juurdepääs suure võimsusega andmetöötlusressurssidele, saavad kasutada TinyLlamat prototüüpide loomiseks ja uute NLP-rakenduste arendamiseks.

Tõhus andmeanalüüs: TinyLlamat saab kasutada tekstianalüüsiks ja andmete ekstraheerimiseks stsenaariumides, kus on vaja kiiret ja tõhusat töötlemist, näiteks klientide tagasiside, küsitluste vastuste või sotsiaalmeedia suhtluse analüüsimine.

Järeldus

TinyLlama 1.1B on tunnistus edusammudest tehisintellekti ja loomuliku keele töötlemise valdkonnas. Selle väljatöötamine ja laialdane kättesaadavus on tõhusamate, väikeste ja kiiremate järelduskeelemudelite loomisel üliolulised. Tasakaalustades väiksema parameetri jalajälje tugeva jõudlusega, rahuldab TinyLlama 1.1B kriitilise vajaduse võimsate ja praktiliste mudelite järele paljude rakenduste jaoks. Selle võime mõista ja genereerida keelt inimlikul viisil, olles samas piisavalt kerge erinevate arvutikeskkondade jaoks, muudab selle inimeste jaoks, kellel on raskusi oma masinates suurte keelemudelite käivitamisega. Mudelit saab andmestikul hõlpsasti peenhäälestada ja seda saab treenida piiratud arvutusressurssidega. 

Selle artikli peamised väljavõtted hõlmavad järgmist

  • Tõhusaks loodud TinyLlama 1.1B on saadaval laiemale publikule, sealhulgas piiratud arvutusressurssidega inimestele, mistõttu see sobib mitme rakenduse jaoks.
  • Mudel läbis ulatusliku koolitusprotsessi, sealhulgas 3 päeva jooksul 90 triljoni märgiga koolituse, kasutades 16 A100-40G GPU-d.
  • Vaatamata väiksemale suurusele pakub TinyLlama 1.1B kvaliteetseid, kontekstipõhiseid vastuseid mitmes keeles, muutes selle mudeli, mida tasub kaaluda.
  • See on hea valik mobiilirakenduste, asjade Interneti-seadmete, õppevahendite ja muu jaoks, selle kompaktne suurus ja tõhusus võimaldavad kasutada laialdasi rakendusi.
  • Selle madalamad arvutusnõuded muudavad selle väärtuslikuks vahendiks keeleuuringutes, eriti alaressurssidega keelte puhul.
  • Mudel on hea valik neile, kes katsetavad keelemudeleid või arendavad uusi NLP rakendusi, peamiselt piiratud arvutusvõimsusega seadetes.

Korduma kippuvad küsimused

Q1. Mis on TinyLlama 1.1B?

A. TinyLlama 1.1B on kompaktne ja tõhus 1.1 miljardi parameetriga suur keelemudel, mis on treenitud 3 triljonil märgil ja sobib piiratud arvutusressurssidega rakendustele.

Q2. Kuidas TinyLlama 1.1B välja õpetati?

A. Seda koolitati 90 päeva jooksul, kasutades 16 A100-40G GPU-d andmekogumites, sealhulgas Slimpajama ja Starcoderdata, loomuliku keele ja koodi suhtega 7:3.

Q3. Millised on TinyLlama 1.1B jõudluse kriteeriumid?

A. TinyLlama 1.1B näitab oma oskusi keeruliste keeleülesannete käsitlemisel, saades selliste võrdlusaluste nagu HellaSwag, MMLU ja WinoGrande keskmiselt 52.99 punkti.

Q4. Millised on TinyLlama 1.1B võimalikud kasutusjuhud?

A. See sobib rakendustele, kus suurus ja kiirus on olulised. Nende hulka kuuluvad mobiilirakendused, asjade Interneti-seadmed, nagu koduautomaatikaseadmed, sisu loomine väikeettevõtetele ja tõhus andmeanalüüs.

Q5. Kas TinyLlama 1.1B sobib piiratud ressurssidega arendajatele?

A. See on absoluutselt ideaalne valik arendajatele ja teadlastele, kellel puudub juurdepääs võimsatele arvutusressurssidele prototüüpide loomiseks ja uute NLP-rakenduste arendamiseks. TinyLlama mudelit saab kasutada isegi Raspberry Pi masinal.

Q6. Kuidas TinyLlama 1.1B matemaatilistes arutlusülesannetes toimib?

A. Kuigi see on tõesti suurepärane erinevate keeleülesannete puhul, näitab see piiranguid matemaatilises arutluskäigus, mida saab parandada asjakohaste andmekogumite peenhäälestusega.

Selles artiklis näidatud meedia ei kuulu Analytics Vidhyale ja seda kasutatakse autori äranägemisel.

Ajatempel:

Veel alates Analüütika Vidhya