TinyLlama 1.1B - Størrelse betyder ikke noget

TinyLlama 1.1B – Størrelsen betyder ikke noget

Kildeknude: 3081711

Introduktion

I det hurtigt voksende landskab af kunstig intelligens og maskinlæring fremstår TinyLlama 1.1B som en bemærkelsesværdig udvikling. I en æra, hvor beregningsmæssige begrænsninger udgør udfordringer for at køre mere komplekse modeller, skiller TinyLlama sig ud ved at trodse forventningerne. Det viser den bemærkelsesværdige ydeevne af kompakte modeller.

Denne artikel har til formål at give en analyse af TinyLlama 1.1B, en kompakt stor sprogmodel. Vi vil dykke ned i dets kerneaspekter, såsom hvordan det blev trænet i præstationsbenchmarks og praktisk implementering ved hjælp af Hugging Face-platformen. Vi vil endda køre denne model på det gratis Google Colab og teste dens matematik og ræsonnement.

TinyLlama 1.1B

Læringsmål

  • Få en omfattende forståelse af TinyLlama 1.1B
  • Udforsk den indviklede træningsproces, som modellen har gennemgået
  • Analyser ydeevnen og benchmark-resultaterne for at vurdere dens effektivitet
  • Lær de praktiske trin til at implementere TinyLlama 1.1B ved hjælp af kodningseksempler

Denne artikel blev offentliggjort som en del af Data Science Blogathon.

Indholdsfortegnelse

Hvad er TinyLlama 1.1B?

TinyLlama 1.1B, en del af det bredere Llama-projekt, er et vidnesbyrd om fremskridt i sprogmodellering. Det er en model med 1.1 milliarder parametre, trænet på svimlende 3 billioner tokens, hvilket sætter den i en unik position i AI-landskabet. I modsætning til sine større modstykker er TinyLlama 1.1B designet til at være mere effektiv og håndterbar, hvilket gør den til et godt valg til applikationer med begrænsede beregningsressourcer.

Denne open source-model demokratiserer adgangen til den nyeste AI-teknologi, hvilket giver mange udviklere og forskere mulighed for at udforske og innovere inden for naturlig sprogbehandling. Det er en model, der er kendt for sin evne til at balancere ydeevne med ressourceforbrug, en kritisk overvejelse i nutidens forskellige beregningsmiljøer.

Træningsproces for TinyLlama 1.1B

Træningsprocessen i TinyLlama 1.1B er fascinerende, ligesom modellen selv. Træningen af ​​TinyLlama foregik kun i 90 dage, trænet på de 16 A100-40G GPU'er. Fortræningen blev udført på 3 Trillion Tokens, og TinyLlama-teamet har udgivet mellemmodellen mellem hver en halv trillion. 

Hvad angår dataene, blev Slimpajama og Starcoderdata taget med en kombineret datasætstørrelse på 950 milliarder tokens. Det naturlige sprog-til-kode-forhold blev holdt på 7:3, dvs. 70% af dataene var naturligt sprog, og 30% var kode. For at opnå 3 Trillion Tokens-mærket for finjustering gennemgik TinyLlama således 3 epoker med træning for dette datasæt. 

Der er endda en chatversion af TinyLlama kaldet TinyLlama-Chat udgivet. I starten blev denne model finjusteret på UltraChat-datasættet, som indeholder forskellige syntetiske samtaler genereret af ChatGPT. Dette trin var afgørende for at få modellen til at håndtere forskellige samtalekontekster og stilarter.

Yderligere forfining blev opnået ved hjælp af DPOTrainer på UltraFeedback-datasættet. Denne træningsfase fokuserede på at tilpasse modellens svar, så de stemmer overens med menneskelignende samtalemønstre. Resultatet er en model, der ikke bare fatter information om forskellige emner, men endda interagerer på en naturlig og engagerende måde.

Du kan også læse: Kom godt i gang med LlaMA 2: En begyndervejledning

Ydeevne og benchmark-resultater

Evaluering af ydeevnen af ​​TinyLlama 1.1B afslører dens evne til at levere højkvalitetssvar hurtigt. Dens træning har givet den evnen til at imødekomme flersprogede applikationer, en vigtig egenskab i vores globaliserede verden. På trods af sin mindre størrelse indhenter TinyLlama 1.1B stadig sine større modstykker med hensyn til responskvalitet og hastighed, hvilket gør det til et potent værktøj i forskellige AI-applikationer.

Selv om benchmarkene for TinyLlama 1.1B er mindre omfattende end dem for større modeller, viser de stadig dens færdigheder i at håndtere komplekse sprogopgaver. Dens evne til at generere sammenhængende og kontekstuelt relevante svar på flere sprog er særligt imponerende. Modellen blev testet på forskellige benchmarks som HellaSwag, WinoGrande, ARC, MMLU og andre. Den samlede gennemsnitlige score kom ud til at være 52.99. Dette er langt bedre end den anden 1 Billion Parameter Model, dvs. Pythia 1B, som opnåede en gennemsnitlig score på 48.3. Tabellen viser de individuelle scores for hvert benchmark

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

TinyLlama – Kom godt i gang

Her, i dette afsnit, vil vi downloade den kvantificerede version af TinyLlama Chat og køre den i Google Colab. Før vi downloader modellen, skal vi downloade og installere følgende Python-pakker

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • CMAKE_ARGS=”-DLLAMA_CUBLAS=til” , FORCE_CMAKE=1, vil tillade llama_cpp_python at bruge Nvidia GPU'en, der er tilgængelig i den gratis colab-version.
  • Så installerer vi lama_cpp_python pakke gennem pip3
  • Vi downloader endda huggingface-hub, hvormed vi vil downloade den kvantificerede TinyLlama 1.1B Chat

For at teste TinyLlama 1.1B Chat-modellen skal vi først downloade den kvantificerede version af den. For at downloade det, kører vi følgende kode

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)

Her, den hugging_face_hub bibliotek vil tage sig af processen med at downloade den kvantiserede model. Til dette importerer vi hf_hub_download der tager følgende parametre ind:

  • model_name: Til denne variabel videregiver vi den model, som vi ønsker at downloade. Her ønsker vi at downloade TinyLlama 1.1B Chat GGUF-modellen.
  • model_fil: Her specificerer vi hvilken type kvantiseret model vi ønsker at downloade. Her vil vi downloade den 8-bit kvantiserede version af TinyLlama 1.1B Chat.
  • Til sidst videregiver vi disse parametre til hf_hub_download, som tager disse parametre ind og downloader den angivne model. Efter download returnerer den stien, hvor modellen er downloadet.
  • Denne returnerede sti bliver gemt i model_path variabel.

Nu kan vi indlæse denne model gennem lama_cpp_python bibliotek. Koden til at indlæse modellen vil være som den nedenfor.

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
)

Vi importerer Llama klasse fra lama_cpp, som tager følgende parametre ind

  • model_path: Denne variabel tager den sti, hvor vores model er gemt. Vi har fået stien fra det forrige trin, som vi vil give her
  • n_ctx: Her giver vi kontekstlængden for modellen. Indtil videre leverer vi 512 tokens som kontekstlængde
  • n_tråde: Her nævner vi antallet af tråde, der skal bruges af Llama klasse
  • n_gpu_lag: Vi angiver dette, hvis vi har en kørende GPU, hvilket vi gør i tilfælde af den gratis colab. Til dette sender vi 40, hvilket indebærer, at vi ønsker at aflaste hele modellen til GPU'en og ikke ønsker, at nogen del af den skal køre i systemets RAM
  • Til sidst skaber vi et objekt ud fra dette Llama klasse og giv den til variablen llm

Kørsel af denne kode vil TinyLlama 1.1B Chat kvantiserede model indlæses på GPU'en og indstille den passende kontekstlængde. Nu er det tid til at lave nogle konklusioner om denne model. Til dette arbejder vi med nedenstående kode

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

For at udlede modellen videregiver vi følgende parametre til LLM:

  • prompt/chatskabelon: Dette er den promptskabelon, der er nødvendig for at chatte med modellen. Ovennævnte skabelon(dvs , ) er den, der fungerer til TinyLlama 1.1B Chat-modellen. I skabelonen er sætningen efter brugeren brugerprompten, og genereringen vil blive genereret efter assistenten.
  • max_tokens: Til denne variabel sender vi en værdi, der definerer det maksimale antal tokens, som en stor sprogmodel kan udsende, når der gives en prompt. Indtil videre begrænser vi det til 512 tokens.
  • hold op: Til denne variabel sender vi stop-tokenet. Stop-tokenet fortæller den store sprogmodel, at den holder op med at generere yderligere tokens. For TinyLlama 1.1B Chat er stop-tokenet

Den genererede tekst gemmes i outputvariablen, når vi kører denne. Resultatet genereres i et format, der ligner OpenAI API-kaldet. Derfor kan vi få adgang til generationen gennem den givne printerklæring, svarende til hvordan vi får adgang til generationen fra OpenAI-svarene. Det genererede output kan ses nedenfor

TinyLlama 1.1B

For en model af denne størrelse er dens genererede respons i top. Dette er uventet fra en model af denne størrelse; grammatikken og tonen ser helt fin ud, og der er ingen tegn på gentagelse af sætninger. Lad os prøve at teste modellens ræsonnement

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

Så langt så godt. Ud fra de eksempler, vi har set, genererer modellen gode svar. Men dette er muligvis ikke sandt i alle tilfælde, fordi vi kun tester det på et begrænset antal spørgsmål. Lad os endda teste modellen på dens matematiske ræsonnement

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

Fra de eksempler, vi har set, er det tydeligt, at TinyLlamaChat klarer sig ekstremt dårligt til at besvare simple egnethedsspørgsmål i matematik. Dette forventes, fordi modellen ikke blev fortrænet på noget matematisk datasæt. Kvaliteten af ​​generationen kan forbedres ved at finjustere den på matematikdatasættet

Når det kommer til finjustering, er TinyLlama et go-to valg for dem, der er begrænset med begrænset hardware og ønsker at finjustere store sprogmodeller på deres specifikke datasæt

Potentielle anvendelsestilfælde og applikationer

I betragtning af den kompakte størrelse Lille Lama, som kan prale af 1.1 milliarder parametre, er dens applikationer hovedsageligt velegnet til miljøer, hvor større modeller måske ikke er så gennemførlige på grund af hardwarebegrænsninger eller større effektivitet. Her er nogle specifikke use cases, der tager højde for størrelsen:

Mobilapplikationer: TinyLlamas mindre størrelse gør den til et godt valg til integration i mobilapps, hvor behandling på enheden er nødvendig. Dette inkluderer sprogoversættelsesapps, personlige assistentfunktioner og chatbots, der kan fungere effektivt på smartphones.

Indlejrede systemer i IoT-enheder: Inden for Internet of Things (IoT) feltet er computerressourcerne ofte begrænsede; TinyLlama kan bruges til at tilføje intelligente sprogbehandlingsfunktioner til forskelligt udstyr som smarte hjemmeassistenter, bærbar teknologi og andet sådant tilsluttet udstyr.

Edge Computing: Til applikationer, der drager fordel af at behandle data tættere på kilden i stedet for i et centraliseret cloudmiljø, kan TinyLlama anvendes effektivt. Dette inkluderer sprogbehandling i realtid i bilsystemer, produktionsudstyr og andre kantenheder.

Sprogforskning med lav ressource: På grund af dens mindre størrelse og lavere beregningsmæssige krav kan TinyLlama være et værdifuldt værktøj i sproglig forskning, især for under-ressourcemæssige sprog, hvor storskala modeltræning ikke er mulig.

Pædagogiske værktøjer: I uddannelsesmiljøer, især dem med begrænset adgang til avancerede computerressourcer, kan TinyLlama bruges til at udvikle sprogindlæringsapps, interaktive undervisningsværktøjer og andre læremidler.

Indholdsgenerering til små virksomheder: Små virksomheder med begrænsede ressourcer kan bruge TinyLlama til at generere indhold, såsom produktbeskrivelser, marketingkopier og kundekorrespondance, uden behov for omfattende computerkraft.

Prototyping og eksperimenter: Udviklere og forskere, der ønsker at eksperimentere med sprogmodeller, men mangler adgang til højtydende computerressourcer, kan bruge TinyLlama til at prototype og udvikle nye NLP-applikationer.

Effektiv dataanalyse: TinyLlama kan bruges til tekstanalyse og dataudtræk i scenarier, hvor der er behov for hurtig og effektiv behandling, såsom analyse af kundefeedback, undersøgelsessvar eller interaktioner på sociale medier.

Konklusion

TinyLlama 1.1B er et vidnesbyrd om fremskridtene inden for AI og naturlig sprogbehandling. Dets udvikling og udbredte tilgængelighed er afgørende for at skabe mere effektive, små og hurtige inferenssprogmodeller. Ved at balancere et mindre parameterfodaftryk med robust ydeevne imødekommer TinyLlama 1.1B det kritiske behov for kraftfulde og praktiske modeller til en bred vifte af applikationer. Dens evne til at forstå og generere sprog på en menneskelignende måde, samtidig med at den er let nok til forskellige computermiljøer, gør det til et valg for folk, der kæmper for at køre store sprogmodeller på deres maskiner. Modellen kan let finjusteres på et datasæt og kan trænes med begrænsede computerressourcer. 

De vigtigste ting fra denne artikel inkluderer

  • Designet til effektivitet, TinyLlama 1.1B er tilgængelig for et bredere publikum, inklusive dem med begrænsede beregningsressourcer, hvilket gør den velegnet til flere applikationer.
  • Modellen gennemgik en omfattende træningsproces, herunder træning på 3 billioner tokens over 90 dage ved hjælp af 16 A100-40G GPU'er.
  • På trods af sin mindre størrelse leverer TinyLlama 1.1B højkvalitets, kontekstuelt relevante svar på flere sprog, hvilket gør det til en model at overveje.
  • Det er et godt valg til mobile applikationer, IoT-udstyr, uddannelsesværktøjer og mere, dens kompakte størrelse og effektivitet giver mulighed for brede applikationer.
  • Dens lavere beregningsmæssige krav gør det til et værdifuldt værktøj i sproglig forskning, især for sprog med mangel på ressourcer.
  • Modellen er et godt valg for dem, der eksperimenterer med sprogmodeller eller udvikler nye NLP-apps, hovedsageligt i omgivelser med begrænset regnekraft.

Ofte stillede spørgsmål

Q1. Hvad er TinyLlama 1.1B?

A. TinyLlama 1.1B er en kompakt, effektiv stor sprogmodel med 1.1 milliarder parametre, trænet på 3 billioner tokens, velegnet til applikationer med begrænsede beregningsressourcer.

Q2. Hvordan blev TinyLlama 1.1B trænet?

A. Det blev trænet over 90 dage ved hjælp af 16 A100-40G GPU'er på datasæt inklusive Slimpajama og Starcoderdata, med et naturligt sprog til kode-forhold på 7:3.

Q3. Hvad er ydeevnebenchmarks for TinyLlama 1.1B?

A. TinyLlama 1.1B viser sine færdigheder i at håndtere komplekse sprogopgaver og scorer et gennemsnit på 52.99 på tværs af benchmarks som HellaSwag, MMLU og WinoGrande.

Q4. Hvad er nogle potentielle anvendelsestilfælde af TinyLlama 1.1B?

A. Den er velegnet til applikationer, hvor størrelse og hastighed er et vigtigt emne. Disse omfatter mobilapps, IoT-udstyr som hjemmeautomatiseringsenheder, indholdsgenerering til små virksomheder og effektiv dataanalyse.

Q5. Er TinyLlama 1.1B velegnet til udviklere med begrænsede ressourcer?

A. Absolut, det er et perfekt valg for udviklere og forskere, der mangler adgang til højtydende computerressourcer til prototyping og udvikling af nye NLP-applikationer. TinyLlama-modellen kan endda køres på en Raspberry Pi-maskine.

Q6. Hvordan klarer TinyLlama 1.1B sig i matematiske ræsonnementopgaver?

A. Selvom det virkelig udmærker sig i forskellige sprogopgaver, viser det begrænsninger i matematisk ræsonnement, som kan forbedres ved at finjustere relevante datasæt.

Mediet vist i denne artikel ejes ikke af Analytics Vidhya og bruges efter forfatterens skøn.

Tidsstempel:

Mere fra Analyse Vidhya