Llamafiles használata az LLM végrehajtás egyszerűsítésére

Llamafiles használata az LLM végrehajtás egyszerűsítésére

Forrás csomópont: 3068075

Bevezetés

A nagy nyelvi modellek futtatása mindig is fárasztó folyamat volt. Le kell tölteni egy sor harmadik féltől származó szoftvert az LLM-ek betöltéséhez, vagy le kell tölteni a Python-t, és sok Pytorch és HuggingFace könyvtár letöltésével környezetet kell létrehozni. Ha a Pythonic Megközelítésen megy keresztül, a modell letöltéséhez és futtatásához a kódírás folyamatán kell keresztülmenni. Ez az útmutató egy egyszerűbb megközelítést mutat be ezen LLM-ek működtetésére.

Tanulási célok

  • Ismerje meg a hagyományos LLM-végrehajtás kihívásait
  • Fogja meg a Llamafiles innovatív koncepcióját
  • Tanulja meg könnyedén letölteni és futtatni saját Llamafile végrehajtható fájljait
  • Llam-fájlok létrehozásának megtanulása kvantált LLM-ekből
  • Határozza meg ennek a megközelítésnek a korlátait

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

Tartalomjegyzék

Problémák a nagy nyelvű modellekkel

A nagy nyelvi modellek (LLM-ek) forradalmasították a számítógépekkel való interakciót, a szövegek generálását, a nyelvek fordítását, a különféle kreatív tartalmak írását, és még a kérdések megválaszolását is informatív módon. Ezeknek a nagy teljesítményű modelleknek a számítógépen való futtatása azonban gyakran kihívást jelent.

Az LLM-ek futtatásához le kell töltenünk a Python-t és sok mesterséges intelligencia-függőséget, és ezen felül még kódot is kell írnunk a letöltéshez és futtatáshoz. Még a nagy nyelvű modellek használatra kész felhasználói felületeinek telepítésekor is sok beállítás szükséges, amelyek könnyen meghibásodhatnak. Telepítésük és futtatásuk futtatható fájlként nem volt egyszerű folyamat.

Mik azok a Llamafiles?

A llamafájlokat úgy hozták létre, hogy könnyen működjenek a népszerű nyílt forráskódú nagy nyelvi modellekkel. Ezek egyfájlos végrehajtható fájlok. Ez olyan, mint egy LLM letöltése és futtatása, mint egy végrehajtható fájl. Nincs szükség a könyvtárak kezdeti telepítésére. Ez mind lehetséges volt a llama.cpp és a kozmopolita libc miatt, ami miatt az LLM-ek különböző operációs rendszereken futnak.

A llama.cpp-t Georgi Gerganov fejlesztette ki, hogy nagy nyelvi modelleket futtasson kvantált formátumban, így azok CPU-n futhatnak. A llama.cpp egy C-könyvtár, amely lehetővé teszi kvantált LLM-ek futtatását fogyasztói hardveren. Másrészt a kozmopolita libc egy másik C-könyvtár, amely egy bináris fájlt épít fel, amely bármely operációs rendszeren (Windows, Mac, Ubuntu) futhat anélkül, hogy tolmácsra lenne szüksége. Tehát a Llamafile ezekre a könyvtárakra épül, ami lehetővé teszi egyfájlos végrehajtható LLM-ek létrehozását.

Az elérhető modellek GGUF kvantált formátumban vannak. A GGUF egy fájlformátum a Large Language Models számára, amelyet Georgi Gerganov, a llama.cpp létrehozója fejlesztett ki. A GGUF a nagy nyelvű modellek CPU-kon és GPU-kon való hatékony és hatékony tárolására, megosztására és betöltésére szolgáló formátum. A GGUF kvantálási technikát használ a modellek eredeti 16 bites lebegőpontosról 4 vagy 8 bites egész formátumra való tömörítésére. Ennek a kvantált modellnek a súlyai ​​ebben a GGUF formátumban tárolhatók

Ez megkönnyíti a 7 milliárd paraméterű modellek futtatását egy 16 GB VRAM-mal rendelkező számítógépen. A Large Language Models-t GPU nélkül is futtathatjuk (bár a Llamafile még az LLM-eket is lehetővé teszi GPU-n). Jelenleg a népszerű nyílt forráskódú nagy nyelvi modellek, például a LlaVa, a Mistral és a WizardCoder lámafájljai könnyen letölthetők és futtathatók.

Egylövés végrehajtható

Ebben a részben egy multimodális LlaVa Llamafile-t fogunk letölteni és futtatni. Itt nem fogunk GPU-val dolgozni, és a modellt CPU-n futtatjuk. Kattintson a hivatalos Llamafile GitHub Repository oldalára itt és letölti a LlaVa 1.5 modellt.

Egy lövés végrehajtható fájlok | Llamafiles

Töltse le a modellt

A fenti képen az összes elérhető modell látható nevével, méretével és letölthető hivatkozásaival. A LlaVa 1.5 körülbelül 4 GB-os, és egy erőteljes többfunkciós modell, amely képes megérteni a képeket. A letöltött modell egy 7 milliárd paraméteres modell, amely 4 bitesre kvantált. A modell letöltése után lépjen abba a mappába, ahová letöltötte.

"

Ezután nyissa meg a CMD-t, keresse meg a mappát, ahová a modellt letölti, írja be a letöltött fájl nevét, és nyomja meg az enter billentyűt.

llava-v1.5-7b-q4.llamafile
"

Mac és Linux felhasználók számára

Mac és Linux esetén alapértelmezés szerint a végrehajtási engedély ki van kapcsolva ehhez a fájlhoz. Ezért meg kell adnunk a llamafile végrehajtási engedélyét, amit az alábbi parancs futtatásával tehetünk meg.

chmod +x llava-v1.5-7b-q4.llamafile

Ezzel aktiválja a llava-v1.5-7b-q4.llamafile végrehajtási engedélyét. Ezenkívül adja hozzá a „./” jelet a fájlnév elé, hogy a fájl futhasson Mac és Linux rendszeren. Miután megnyomta az enter kulcsszót, a modell a rendszer RAM-jába kerül, és a következő kimenet jelenik meg.

Mac és Linux felhasználóknak | Llamafiles

Ezután a böngésző felugrik, és a modell a http://127.0.0.1:8080/ URL címen fog futni.

"
"

A fenti képen az alapértelmezett Prompt, User Name, LLM Name, Prompt Template és Chat History Template látható. Ezeket be lehet állítani, de egyelőre az alapértelmezett értékekkel megyünk.

Az alábbiakban még a konfigurálható LLM hiperparamétereket is ellenőrizhetjük, mint a Top P, Top K, Temperature és a többi. Egyelőre még ezeket is alapértelmezettnek hagyjuk. Most írjunk be valamit, és kattintsunk a küldés gombra.

"

A fenti képen láthatjuk, hogy beírtunk egy üzenetet, és még választ is kaptunk. Ez alatt ellenőrizhetjük, hogy körülbelül 6 tokent kapunk másodpercenként, ami jó token/másodperc, tekintve, hogy teljes egészében CPU-n futtatjuk. Ezúttal próbáljuk meg egy képpel.

CPU | TinyLlama

Bár nem 100%-ban helyes, a modell szinte a legtöbb dolgot ki tudta venni a képből. Most folytassunk egy többfordulós beszélgetést a LlaVa-val, hogy teszteljük, emlékszik-e a csevegési előzményekre.

A fenti képen láthatjuk, hogy a LlaVa LLM jól tudta tartani a konvot. Felveheti a történelem beszélgetést, majd létrehozhatja a válaszokat. Bár az utoljára generált válasz nem teljesen igaz, összegyűjtötte az előző konvót, hogy létrehozza. Így tehát letölthetünk egy llamafile-t, és csak szoftverként futtathatjuk őket, és dolgozhatunk a letöltött modellekkel.

Llamafájlok létrehozása

Láttuk a Llamafile demóját, amely már jelen volt a hivatalos GitHubon. Gyakran nem akarunk ezekkel a modellekkel dolgozni. Ehelyett nagy nyelvi modelljeink egyfájlos végrehajtható fájljait szeretnénk létrehozni. Ebben a részben az egyfájlos végrehajtható fájlok, azaz a kvantált LLM-ekből származó láma-fájlok létrehozásának folyamatán fogunk végigmenni.

Válasszon egy LLM-et

Először egy nagy nyelvű modell kiválasztásával kezdjük. Ehhez a demóhoz a TinyLlama kvantált verzióját fogjuk kiválasztani. Itt letöltjük a TinyLlama 8 bites kvantált GGUF modelljét (kattinthat itt menj a HuggingFace oldalra és töltsd le a modellt)

TinyLlama

Töltse le a legújabb Llamafile-t

A hivatalos GitHub linkről letölthető a legújabb llamafile zip. Ezenkívül töltse le a zip fájlt, és bontsa ki a zip fájlt. A cikk jelenlegi verziója a láma fájl 0.6. A láma kibontása után a bin mappa withfile mappában az alábbi képen látható fájlokat fogja tartalmazni.

"

Most helyezze át a letöltött TinyLlama 8 bites kvantált modellt ebbe a bin mappába. Az egyfájlos végrehajtható fájlok létrehozásához létre kell hoznunk egy .args fájlt a llamafile bin mappájában. Ehhez a fájlhoz a következő tartalmat kell hozzáadnunk:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Az első sor az -m jelzőt jelöli. Ez közli a llamafile-lel, hogy egy modell súlyát töltjük be.
  • A második sorban adjuk meg a letöltött modell nevét, amely ugyanabban a könyvtárban található, amelyben az .args fájl is található, azaz a llamafile bin mappájában.
  • A harmadik sorban hozzáadjuk a gazdagép jelzőt, jelezve, hogy futtatjuk a végrehajtható fájlt, és egy webszerveren szeretnénk tárolni.
  • Végül az utolsó sorban megemlítjük azt a címet, ahol hostolni szeretnénk, és amely a localhost-ra van leképezve. Ezt követi a három pont, amelyek megadják, hogy argumentumokat adjunk át a llamafájlunknak, miután az elkészült.
  • Adja hozzá ezeket a sorokat az .args fájlhoz, és mentse el.

Windows felhasználók számára

Most a következő lépés a Windows felhasználóké. Ha Windowson dolgozunk, a Linuxot WSL-en keresztül kellett telepítenünk. Ha nem, kattintson itt hogy végigmenjen a Linux WSL-n keresztüli telepítésének lépésein. Mac és Linux rendszeren nincs szükség további lépésekre. Most nyissa meg a llamafile mappa bin mappáját a terminálban (ha Windows rendszeren dolgozik, nyissa meg ezt a könyvtárat a WSL-ben), és írja be a következő parancsokat.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

Itt egy új fájlt hozunk létre tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; azaz létrehozunk egy .llamafile kiterjesztésű fájlt, és áthelyezzük a llamafile fájlt ebbe az új fájlba. Most ezt követően beírjuk ezt a következő parancsot.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

Itt a zipalign fájllal dolgozunk, amely akkor jött, amikor letöltöttük a llamafile zip-et a GitHubról. Ezzel a paranccsal dolgozunk, hogy létrehozzuk a kvantált TinyLlamánk llamafájlját. Ennek a zipalign parancsnak átadjuk az előző lépésben létrehozott tinyllama-1.1b-chat-v0.3.Q8_0.llamafile-t, majd a tinyllama-1.1b-chat-v0.3.Q8_0.llamafile-t. bin mappában lévő modellt, és végül átadjuk a korábban létrehozott .args fájlt.

Ezzel végre létrejön a tinyllama-1.1b-chat-v0.3.Q8_0.llamafile futtatható egyetlen fájlunk. Annak érdekében, hogy ugyanazon az oldalon álljunk, a bin mappa a következő fájlokat tartalmazza.

Futtatható fájlok | Llamafiles

Most már ugyanúgy futtathatjuk a tinyllama-1.1b-chat-v0.3.Q8_0.llama fájlt, mint korábban. Windows rendszerben akár át is nevezheti a .llamafile fájlt .exe-re, és dupla kattintással futtathatja.

OpenAI kompatibilis szerver

Ez a rész megvizsgálja, hogyan lehet LLM-eket kiszolgálni az Llamfile-on keresztül. Észrevettük, hogy amikor a láma fájlt futtatjuk, megnyílik a böngésző, és a WebUI-n keresztül kapcsolatba léphetünk az LLM-mel. Alapvetően ezt hívjuk a Large Language Model házigazdájának.

Miután futtattuk a Llamafile-t, interakcióba léphetünk a megfelelő LLM-mel, mint végponttal, mivel a modellt a PORT 8080-as helyi gazdagép szolgálja ki. A szerver az OpenAI API protokollt követi, azaz hasonlóan az OpenAI GPT végponthoz, így könnyű váltani az OpenAI GPT modell és a Llamafile-lal futó LLM között.

Itt a korábban létrehozott TinyLlama llamafile-t fogjuk futtatni. Ennek most a localhost 8080-on kell futnia. Most magát az OpenAI API-n keresztül teszteljük Pythonban.

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • Itt az OpenAI könyvtárral dolgozunk. De ahelyett, hogy megadnánk az OpenAI végpontot, megadjuk azt az URL-t, ahol a TinyLlamánk található, és megadjuk a „sk-no-token-required” az api_key számára
  • Ezután az ügyfél csatlakozik a TinyLlama végpontunkhoz
  • Most, hasonlóan ahhoz, ahogy az OpenAI-val dolgozunk, használhatjuk a kódot a TinyLlamánkkal való csevegésre.
  • Ennek érdekében a átadások az OpenAI osztálya. Újat alkotunk átadások a ... val .teremt() objektumot, és adja át a részleteket, például a modell nevét és az üzeneteket.
  • Az üzenetek szótárlista formájában vannak, ahol a mi szerepünk van, ami lehet rendszer, felhasználó vagy asszisztens, és mi a tartalom.
  • Végül lekérhetjük a fenti nyomtatott utasítással generált információkat.

A fentiek kimenete lent látható.

Llamafiles | Kimenet

Így kihasználhatjuk a llamafájlokat, és egyszerűen lecserélhetjük az OpenAI API-t a futtatásra kiválasztott llamafájlra.

Llamafiles korlátozások

Bár forradalmiak, a lámafilek még mindig fejlesztés alatt állnak. Néhány korlátozás a következőket tartalmazza:

  • Korlátozott modellválaszték: Jelenleg nem minden LLM érhető el lámafájlok formájában. Az előre elkészített Llamafiles jelenlegi választéka továbbra is bővül. Jelenleg a Llamafiles a Llama 2, LlaVa, Mistral és Wizard Coder számára érhető el.
  • Hardver követelmények: Az LLM-ek futtatása még Llamafiles-en keresztül is sok számítási erőforrást igényel. Bár könnyebben futtathatók, mint a hagyományos módszerek, a régebbi vagy kevésbé erős számítógépeknek segítségre lehet szükségük a zökkenőmentes futtatásukhoz.
  • Biztonsági aggályok: A végrehajtható fájlok nem megbízható forrásból való letöltése és futtatása magában hordozza a kockázatokat. Tehát kell lennie egy megbízható platformnak, ahonnan letölthetjük ezeket a lámafájlokat.

Llamafiles vs the Rest

A Llamafiles előtt különböző módok léteztek a Large Language Models futtatására. Az egyik a llama_cpp_python. Ez a llama.cpp Python verziója, amely lehetővé teszi kvantált nagy nyelvi modellek futtatását fogyasztói hardvereken, például laptopokon és asztali számítógépeken. De a futtatásához le kell töltenünk és telepítenünk kell a Python-t, és még olyan mélytanuló könyvtárakat is, mint a torch, huggingface, transzformátorok és még sok más. És ezt követően sok kódsort kellett írni a modell futtatásához.

Még ilyenkor is előfordulhat, hogy függőségi problémák miatt problémákkal szembesülünk (azaz egyes könyvtáraknak a szükségesnél alacsonyabb vagy magasabb verziója van). És ott van még a CTransformers könyvtár, amely lehetővé teszi kvantált LLM-ek futtatását. Még ez is ugyanazt a folyamatot követeli meg, amelyet a llama_cpp_python esetében tárgyaltunk

És akkor van Ollama. Az Ollama nagy sikert aratott a mesterséges intelligencia közösségében, mivel könnyen használható nagy nyelvi modellek, különösen a kvantált modellek könnyű betöltésére és futtatására. Az Ollama egyfajta TUI (Terminal User Interface) LLM-ek számára. Az egyetlen különbség az Ollama és a Llamafile között a megoszthatóság. Vagyis ha akarom, akkor bárkivel megoszthatom a model.llamafile-omat, és minden további szoftver letöltése nélkül futtathatják. Az Ollama esetében azonban meg kell osztanom a model.gguf fájlt, amelyet a másik személy csak az Ollama szoftver telepítésekor vagy a fenti Python könyvtárakon keresztül tud futtatni.

Ami az erőforrásokat illeti, mindegyik ugyanannyi erőforrást igényel, mivel ezek a módszerek az alatta lévő llama.cpp-t használják a kvantált modellek futtatásához. Csak a könnyű használhatóságról van szó, ahol különbségek vannak közöttük.

Következtetés

A Llamafiles döntő lépést jelentenek az LLM-ek könnyű futtathatósága terén. Könnyű használhatóságuk és hordozhatóságuk a lehetőségek világát nyitja meg a fejlesztők, kutatók és az alkalmi felhasználók számára. Bár vannak korlátok, nyilvánvaló, hogy a lámafájlok demokratizálják az LLM-hozzáférést. Akár szakértő fejlesztő, akár kíváncsi újonc, a Llamafiles izgalmas lehetőségeket nyit az LLM-ek világának felfedezéséhez. Ebben az útmutatóban megnéztük, hogyan töltsünk le Llamafiles-eket, és még azt is, hogyan hozhatjuk létre saját Llamafiles-ünket kvantált modelljeinkkel. . Még az OpenAI-kompatibilis szervert is megnéztük, amely a Llamafiles futtatásakor jön létre.

Kulcs elvezetések

  • Az llamafájlok egyfájlos végrehajtható fájlok, amelyek megkönnyítik és könnyebben elérhetővé teszik a nagy nyelvi modellek (LLM) futtatását.
  • Kiküszöböli az összetett beállítások és konfigurációk szükségességét, lehetővé téve a felhasználók számára, hogy közvetlenül, Python- vagy GPU-követelmények nélkül töltsék le és futtassák az LLM-eket.
  • A Llamafiles jelenleg elérhető korlátozott számú nyílt forráskódú LLM-hez, beleértve a LlaVa-t, a Mistral-t és a WizardCoder-t.
  • Bár kényelmes, a Llamafiles-nek vannak korlátai, például a hardverkövetelmények és a végrehajtható fájlok nem megbízható forrásból történő letöltésével kapcsolatos biztonsági aggályok.
  • E korlátozások ellenére a Llamafiles fontos lépést jelent az LLM hozzáférés demokratizálása felé a fejlesztők, kutatók és még az alkalmi felhasználók számára is.

Gyakran ismételt kérdések

Q1. Milyen előnyei vannak a Llamafiles használatának?

V. A Llamafiles számos előnnyel rendelkezik a hagyományos LLM konfigurációs módszerekkel szemben. Könnyebbé és gyorsabbá teszik az LLM-ek beállítását és végrehajtását, mivel nincs szükség Python telepítésére vagy GPU-ra. Ezáltal az LLM-ek könnyebben elérhetők a szélesebb közönség számára. Ezenkívül a Llamafiles különböző operációs rendszereken futhat.

Q2. Mik a Llamafiles korlátai?

V. Bár a llamafilek számos előnnyel járnak, bizonyos korlátaik is vannak. A Llamafiles-ben elérhető LLM-ek választéka korlátozott a hagyományos módszerekhez képest. Ezenkívül az LLM-ek Llamafiles-en keresztüli futtatása továbbra is jelentős hardvererőforrást igényel, és előfordulhat, hogy a régebbi vagy kevésbé erős számítógépek ezt nem támogatják. Végül a biztonsági aggályok a nem megbízható forrásokból származó végrehajtható fájlok letöltéséhez és futtatásához kapcsolódnak.

Q3. Hogyan kezdhetem el a Llamafiles használatát?

V. A Llamafiles használatának megkezdéséhez keresse fel a hivatalos Llamafile GitHub Repository-t. Ott letöltheti a Llamafile-t a használni kívánt LLM-modellhez. Miután letöltötte a fájlt, közvetlenül futtathatja, mint egy végrehajtható fájlt.

Q4. Használhatom a saját LLM-modellemet a Llamafiles-szel?

V. Nem. Jelenleg a Llamafiles csak bizonyos előre elkészített modelleket támogat. A jövőbeli verziókhoz saját Llamafiles létrehozását tervezzük.

Q5. Mik a Llamafiles kilátásai?

V. A Llamafiles fejlesztői azon dolgoznak, hogy kibővítsék az elérhető LLM-modellek választékát, hatékonyabban futtassák őket, és biztonsági intézkedéseket hajtsanak végre. Ezek a fejlesztések célja, hogy a Llamafiles még elérhetőbbé és biztonságosabbá váljon több olyan ember számára, akiknek kevés a technikai háttere.

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