TinyLlama 1.1B – A méret nem számít

TinyLlama 1.1B – A méret nem számít

Forrás csomópont: 3081711

Bevezetés

A mesterséges intelligencia és a gépi tanulás gyorsan növekvő világában a TinyLlama 1.1B figyelemre méltó fejlesztésként jelenik meg. Egy olyan korszakban, amikor a számítási korlátok kihívások elé állítják az összetettebb modellek futtatását, a TinyLlama szembeszáll az elvárásokkal. A kompakt modellek figyelemre méltó teljesítményét mutatja be.

Ennek a cikknek a célja a TinyLlama 1.1B, egy kompakt, nagy nyelvi modell elemzése. Belemerülünk a fő szempontjaiba, például hogyan képezték ki a teljesítmény-benchmarkok és a gyakorlati megvalósítás terén a Hugging Face platform segítségével. Ezt a modellt még az ingyenes Google Colab-on is futtatjuk, és teszteljük matematikai és érvelési képességeit.

TinyLlama 1.1B

Tanulási célok

  • Szerezzen átfogó ismereteket a TinyLlama 1.1B-ről
  • Fedezze fel a bonyolult képzési folyamatot, amelyen a modell keresztülment
  • Elemezze a teljesítményt és a benchmark eredményeket, hogy értékelje a hatékonyságát
  • Tanulja meg a TinyLlama 1.1B megvalósításának gyakorlati lépéseit kódolási példák segítségével

Ez a cikk részeként jelent meg Adattudományi Blogaton.

Tartalomjegyzék

Mi az a TinyLlama 1.1B?

A TinyLlama 1.1B, a tágabb Llama projekt része, a nyelvi modellezési fejlesztések bizonyítéka. Ez egy 1.1 milliárd paraméterrel rendelkező modell, amelyet elképesztő 3 billió tokenre képeztek ki, ami egyedülálló pozícióba helyezi az AI-környezetben. Nagyobb társaitól eltérően a TinyLlama 1.1B-t úgy tervezték, hogy hatékonyabb és kezelhetőbb legyen, így jó választás a korlátozott számítási erőforrásokkal rendelkező alkalmazásokhoz.

Ez a nyílt forráskódú modell demokratizálja a hozzáférést a legkorszerűbb mesterséges intelligencia technológiához, lehetővé téve sok fejlesztőnek és kutatónak, hogy felfedezze és újítson a természetes nyelvi feldolgozás területén. Ez egy olyan modell, amely arról ismert, hogy képes egyensúlyt teremteni a teljesítmény és az erőforrás-felhasználás között, ami kritikus szempont a mai változatos számítási környezetekben.

A TinyLlama 1.1B képzési folyamata

A TinyLlama 1.1B képzési folyamata lenyűgöző, akárcsak maga a modell. A TinyLlama képzése mindössze 90 napig zajlott, a 16 A100-40G GPU-n. Az előképzés 3 billió tokennel történt, és a TinyLlama Team közzétette a köztes modellt a félbillió között. 

Ami az adatokat illeti, a Slimpajama és a Starcoderdata 950 milliárd token együttes adatkészlettel készült. A természetes nyelv-kód arányt 7:3-ban tartottuk, azaz az adatok 70%-a természetes nyelv, 30%-a pedig kód. Így a 3 trillió token finomhangolás eléréséhez a TinyLlama 3 korszakon át tartó képzésen ment keresztül ehhez az adatkészlethez. 

Még a TinyLlama csevegőverziója is megjelent, a TinyLlama-Chat. Kezdetben ez a modell finomhangoláson esett át az UltraChat adatkészleten, amely a ChatGPT által generált különféle szintetikus beszélgetéseket tartalmazza. Ez a lépés kulcsfontosságú volt abban, hogy a modell a különböző társalgási kontextusokat és stílusokat kezelje.

Az UltraFeedback adatkészlet DPOTrainer használatával további finomítást értünk el. Ez a képzési szakasz arra összpontosított, hogy a modell válaszait az emberhez hasonló beszélgetési mintákhoz igazítsa. Az eredmény egy olyan modell, amely nemcsak megragadja a különböző témákkal kapcsolatos információkat, hanem még természetes és vonzó módon is kölcsönhatásba lép.

A következőket is olvashatja: Ismerkedés a LlaMA 2-vel: Útmutató kezdőknek

Teljesítmény és benchmark eredmények

A TinyLlama 1.1B teljesítményének értékelése megmutatja, hogy képes gyorsan kiváló minőségű válaszokat adni. Képzése felruházta a többnyelvű alkalmazások kiszolgálásának képességével, ami globalizált világunk fontos jellemzője. Kisebb mérete ellenére a TinyLlama 1.1B még mindig utoléri nagyobb társait a válasz minősége és sebessége tekintetében, így hatékony eszköz a különböző AI alkalmazásokban.

A TinyLlama 1.1B referenciaértékei, bár kevésbé átfogóak, mint a nagyobb modellek, még mindig bizonyítják, hogy készségesen kezeli az összetett nyelvi feladatokat. Különösen lenyűgöző, hogy több nyelven képes koherens és kontextuálisan releváns válaszokat generálni. A modellt különböző benchmarkokon tesztelték, mint például a HellaSwag, WinoGrande, ARC, MMLU és mások. Az összesített átlagpontszám 52.99 lett. Ez sokkal jobb, mint a másik 1 milliárdos paramétermodell, azaz a Pythia 1B, amely 48.3-as átlagpontszámot ért el. A táblázat az egyes benchmarkok egyéni pontszámait mutatja be

benchmark TinyLlama 1.1B pontszám
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 – Kezdő lépések

Itt, ebben a részben letöltjük a TinyLlama Chat kvantált verzióját, és futtatjuk a Google Colabban. A modell letöltése előtt le kell töltenünk és telepítenünk kell a következő Python-csomagokat

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • A CMAKE_ARGS=”-DLLAMA_CUBLAS=on” és a FORCE_CMAKE=1, lehetővé teszi a llama_cpp_python számára, hogy az ingyenes colab verzióban elérhető Nvidia GPU-t használja.
  • Ezután telepítjük a llama_cpp_python csomag a pip3-on keresztül
  • Még letöltjük a átölelőarc-hub, amellyel letöltjük a kvantált TinyLlama 1.1B Chat-et

A TinyLlama 1.1B Chat modell teszteléséhez először le kell töltenünk annak kvantált verzióját. A letöltéshez a következő kódot futtatjuk

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)

Itt a hugging_face_hub könyvtár gondoskodik a kvantált modell letöltésének folyamatáról. Ehhez importáljuk a hf_hub_download amely a következő paramétereket veszi fel:

  • modell név: Ennek a változónak adjuk át a letölteni kívánt modellt. Itt szeretnénk letölteni a TinyLlama 1.1B Chat GGUF modellt.
  • model_file: Itt adjuk meg a letölteni kívánt kvantált modell típusát. Itt töltjük le a TinyLlama 8B Chat 1.1 bites kvantált verzióját.
  • Végül ezeket a paramétereket adjuk át a hf_hub_download, amely beveszi ezeket a paramétereket, és letölti a megadott modellt. A letöltés után visszaadja a modell letöltési útvonalát.
  • Ezt a visszaadott útvonalat a rendszer menti modell_útvonal változót.

Most betölthetjük ezt a modellt a llama_cpp_python könyvtár. A modell betöltésének kódja az alábbihoz hasonló lesz.

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
)

Importáljuk a Láma osztályból a llama_cpp, amely a következő paramétereket veszi fel

  • model_path: Ez a változó eléri azt az utat, ahol a modellünk tárolva van. Az előző lépésből megkaptuk az elérési utat, amelyet itt fogunk megadni
  • n_ctx: Itt megadjuk a modell környezeti hosszát. Egyelőre 512 tokent biztosítunk kontextushosszként
  • n_szálak: Itt megemlítjük a által használt szálak számát Láma osztály
  • n_gpu_layers: Ezt akkor adjuk meg, ha van egy futó GPU-nk, amit a free colab esetén teszünk. Ehhez 40-et adunk át, ami azt jelenti, hogy a teljes modellt a GPU-ba akarjuk tölteni, és nem akarjuk, hogy annak egy része a rendszer RAM-ban fusson.
  • Végül ebből készítünk egy objektumot Láma osztályt, és add meg az llm változónak

Ennek a kódnak a futtatása betölti a TinyLlama 1.1B Chat kvantált modellt a GPU-ra, és beállítja a megfelelő környezethosszt. Most itt az ideje, hogy néhány következtetést levonjunk erről a modellről. Ehhez az alábbi kóddal dolgozunk

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

A modell kikövetkeztetéséhez a következő paramétereket adjuk át az LLM-nek:

  • prompt/csevegési sablon: Ez a modellel való csevegéshez szükséges prompt sablon. A fent említett sablon(azaz , ) az, amely a TinyLlama 1.1B Chat modellhez működik. A sablonban a Felhasználó utáni mondat a User Prompt, a generáció pedig az Asszisztens után jön létre.
  • max_tokens: Ennek a változónak egy értéket adunk át, amely meghatározza a nagy nyelvi modell által kiadott tokenek maximális számát, amikor egy Prompt van megadva. Egyelőre 512 tokenre korlátozzuk.
  • állj meg: Ennek a változónak adjuk át a stop tokent. A stop token azt mondja a Large Language Modelnek, hogy hagyja abba a további tokenek generálását. A TinyLlama 1.1B Chat esetében a stop token az

A generált szöveg a kimeneti változóban tárolódik, amikor ezt futtatjuk. Az eredmény az OpenAI API-híváshoz hasonló formátumban jön létre. Így a generálást az adott print utasításon keresztül érhetjük el, hasonlóan ahhoz, ahogy az OpenAI válaszokból érjük el a generálást. A generált kimenet az alábbiakban látható

TinyLlama 1.1B

Egy ekkora modell esetében a generált válasz kiváló. Ez váratlan egy ekkora modelltől; a nyelvtan és a hangnem teljesen rendben van, és nyoma sincs a mondatok ismétlődésének. Próbáljuk meg tesztelni a modell érvelési képességeit

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

Eddig jó. A látott példák alapján a modell jó válaszokat generál. Ez azonban nem minden esetben igaz, mert csak korlátozott számú kérdésen teszteljük. Teszteljük még a modellt a matematikai érvelési képességein

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

A látott példákból egyértelmű, hogy a TinyLlamaChat rendkívül gyengén teljesít egyszerű matematikai alkalmassági kérdések megválaszolásában. Ez várható, mert a modell nem volt előképzett egyetlen matematikai adatkészletre sem. A generálás minősége a matematikai adatkészleten történő finomhangolással javítható

A finomhangoláshoz a TinyLlama kiváló választás azok számára, akik korlátozott hardverrel rendelkeznek, és nagy nyelvi modelleket szeretnének finomhangolni az adott adatkészletükön.

Lehetséges felhasználási esetek és alkalmazások

Tekintettel a kompakt méretre TinyLlama, amely 1.1 milliárd paraméterrel büszkélkedhet, alkalmazásai főként olyan környezetekben alkalmasak, ahol a nagyobb modellek hardveres korlátok vagy nagyobb hatékonyság miatt nem feltétlenül kivitelezhetők. Íme néhány konkrét felhasználási eset, figyelembe véve a méretét:

Mobil alkalmazások: A TinyLlama kisebb mérete jó választássá teszi a mobilalkalmazásokba való integráláshoz, ahol az eszközön történő feldolgozásra van szükség. Ide tartoznak a nyelvi fordítóalkalmazások, a személyi asszisztens funkciók és az okostelefonokon hatékonyan működő chatbotok.

Beágyazott rendszerek az IoT-eszközökben: A dolgok internete (IoT) területén a számítási erőforrások gyakran korlátozottak; A TinyLlama segítségével intelligens nyelvi feldolgozási képességek adhatók hozzá a különböző berendezésekhez, például intelligens otthoni asszisztensekhez, viselhető technológiához és más hasonló csatlakoztatott berendezésekhez.

Edge Computing: A TinyLlama hatékonyan alkalmazható azoknál az alkalmazásoknál, amelyek számára előnyös az adatok forráshoz közelebbi feldolgozása, nem pedig központi felhőkörnyezetben. Ez magában foglalja a valós idejű nyelvi feldolgozást az autóipari rendszerekben, a gyártóberendezésekben és más szélső eszközökben.

Kevés erőforrást igénylő nyelvkutatás: Kisebb mérete és alacsonyabb számítási követelményei miatt a TinyLlama értékes eszköz lehet a nyelvészeti kutatásban, különösen az alulfinanszírozott nyelvek esetében, ahol a nagyszabású modellképzés nem kivitelezhető.

Oktatási eszközök: Oktatási környezetben, különösen azokban, ahol korlátozott hozzáférés a csúcskategóriás számítási erőforrásokhoz, a TinyLlama nyelvtanulási alkalmazások, interaktív oktatási eszközök és egyéb tanulási segédanyagok fejlesztésére használható.

Tartalomgenerálás kisvállalkozásoknak: A korlátozott erőforrásokkal rendelkező kisvállalkozások nagy számítási teljesítmény nélkül használhatják a TinyLlama-t tartalom, például termékleírások, marketingszöveg és ügyféllevelezés létrehozására.

Prototípuskészítés és kísérletezés: Azok a fejlesztők és kutatók, akik szeretnének kísérletezni nyelvi modellekkel, de nem férnek hozzá a nagy teljesítményű számítási erőforrásokhoz, használhatják a TinyLlamát új NLP-alkalmazások prototípusára és fejlesztésére.

Hatékony adatelemzés: A TinyLlama szövegelemzésre és adatkinyerésre használható olyan esetekben, amikor gyors és hatékony feldolgozásra van szükség, mint például az ügyfelek visszajelzéseinek, felmérési válaszainak elemzése vagy a közösségi média interakciói.

Következtetés

A TinyLlama 1.1B a mesterséges intelligencia és a természetes nyelvi feldolgozás terén elért előrelépések bizonyítéka. Fejlesztése és széleskörű elérhetősége létfontosságú a hatékonyabb, kicsi és gyorsabb következtetési nyelvi modellek létrehozásához. A kisebb paraméterek helyigényét a robusztus teljesítménnyel egyensúlyozva a TinyLlama 1.1B kielégíti az erőteljes és praktikus modellek kritikus szükségletét az alkalmazások széles skálájához. Az a képessége, hogy emberhez hasonló módon képes megérteni és generálni a nyelvet, miközben elég könnyű a különböző számítási környezetekhez, ideális választássá teszi azokat az embereket, akik nagy nyelvi modelleket próbálnak futtatni a gépeiken. A modell könnyen finomhangolható egy adatkészleten, és korlátozott számítási erőforrásokkal betanítható. 

A cikk legfontosabb kivonatai közé tartozik

  • A hatékonyságra tervezett TinyLlama 1.1B szélesebb közönség számára elérhető, beleértve a korlátozott számítási erőforrásokkal rendelkezőket is, így számos alkalmazásra alkalmas.
  • A modell kiterjedt betanítási folyamaton ment keresztül, beleértve a 3 billió token képzését 90 napon keresztül, 16 A100-40G GPU használatával.
  • Kisebb mérete ellenére a TinyLlama 1.1B kiváló minőségű, kontextus szempontjából releváns válaszokat ad több nyelven, így megfontolandó modell.
  • Jó választás mobil alkalmazásokhoz, IoT-berendezésekhez, oktatási eszközökhöz és sok máshoz, kompakt mérete és hatékonysága széles körű alkalmazásokat tesz lehetővé.
  • Alacsonyabb számításigénye értékes eszközzé teszi a nyelvészeti kutatásokban, különösen a forráshiányos nyelvek esetében.
  • A modell jó választás azok számára, akik nyelvi modellekkel kísérleteznek vagy új NLP-alkalmazásokat fejlesztenek, főleg korlátozott számítási teljesítményű környezetben.

Gyakran ismételt kérdések

Q1. Mi az a TinyLlama 1.1B?

A. A TinyLlama 1.1B egy kompakt, hatékony, nagy nyelvi modell 1.1 milliárd paraméterrel, 3 billió tokenre tanítva, és korlátozott számítási erőforrásokkal rendelkező alkalmazásokhoz alkalmas.

Q2. Hogyan képezték ki a TinyLlama 1.1B-t?

A. 90 napon át képezték 16 A100-40G GPU-val olyan adatkészleteken, mint a Slimpajama és a Starcoderdata, 7:3-as természetes nyelv-kód aránnyal.

Q3. Melyek a TinyLlama 1.1B teljesítmény-referenciái?

A. A TinyLlama 1.1B megmutatja képességeit az összetett nyelvi feladatok kezelésében, átlagosan 52.99 pontot ért el olyan benchmarkokon, mint a HellaSwag, MMLU és WinoGrande.

Q4. Melyek a TinyLlama 1.1B lehetséges felhasználási esetei?

A. Olyan alkalmazásokhoz alkalmas, ahol a méret és a sebesség fontos szempont. Ide tartoznak a mobilalkalmazások, az IoT-berendezések, például az otthoni automatizálási eszközök, a kisvállalkozások tartalomgenerálása és a hatékony adatelemzés.

Q5. A TinyLlama 1.1B alkalmas korlátozott erőforrásokkal rendelkező fejlesztők számára?

A. Abszolút tökéletes választás azoknak a fejlesztőknek és kutatóknak, akik nem férnek hozzá a nagy teljesítményű számítási erőforrásokhoz prototípusok készítéséhez és új NLP-alkalmazások fejlesztéséhez. A TinyLlama modell akár Raspberry Pi gépen is futtatható.

Q6. Hogyan teljesít a TinyLlama 1.1B a matematikai érvelési feladatokban?

A. Bár valóban kiváló a különböző nyelvi feladatokban, korlátokat mutat a matematikai érvelésben, amely javítható a releváns adatkészletek finomhangolásával.

A cikkben bemutatott média nem az Analytics Vidhya tulajdona, és a szerző saját belátása szerint használja.

Időbélyeg:

Még több Analytics Vidhya