Uporaba datotek Llamafiles za poenostavitev izvajanja LLM

Uporaba datotek Llamafiles za poenostavitev izvajanja LLM

Izvorno vozlišče: 3068075

Predstavitev

Izvajanje velikih jezikovnih modelov je bilo vedno dolgočasen proces. Za nalaganje teh LLM-jev je treba prenesti nabor programske opreme tretjih oseb ali prenesti Python in ustvariti okolje s prenosom številnih knjižnic Pytorch in HuggingFace. Če greste skozi pristop Pythonic, morate iti skozi postopek pisanja kode za prenos in zagon modela. Ta vodnik bo obravnaval lažji pristop k vodenju teh LLM.

Učni cilji

  • Razumeti izzive tradicionalne izvedbe LLM
  • Ujemite inovativni koncept Llamafiles
  • Naučite se z lahkoto prenesti in zagnati lastne izvršljive datoteke Llamafile
  • Učenje ustvarjanja datotek Llam iz kvantiziranih datotek LLM
  • Ugotovite omejitve tega pristopa

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

Kazalo

Težave z velikimi jezikovnimi modeli

Veliki jezikovni modeli (LLM) so spremenili našo interakcijo z računalniki, ustvarjanje besedila, prevajanje jezikov, pisanje različnih vrst ustvarjalnih vsebin in celo odgovarjanje na vaša vprašanja na informativen način. Vendar je bilo poganjanje teh zmogljivih modelov na vašem računalniku pogosto izziv.

Za izvajanje študija LLM moramo prenesti Python in veliko odvisnosti od AI, poleg tega pa moramo celo napisati kodo, da jih prenesemo in zaženemo. Celo pri namestitvi uporabniških vmesnikov, pripravljenih za uporabo, za velike jezikovne modele vključuje veliko nastavitev, ki gredo zlahka narobe. Njihova namestitev in zagon kot izvedljivo datoteko nista bila preprosta.

Kaj so Llamafile?

Datoteke Llamafile so ustvarjene za enostavno delo s priljubljenimi odprtokodnimi velikimi jezikovnimi modeli. To so izvedljive datoteke z eno datoteko. To je tako, kot da prenesete LLM in ga zaženete kot izvršljivo datoteko. Začetna namestitev knjižnic ni potrebna. Vse to je bilo mogoče zaradi llama.cpp in kozmopolitske libc, zaradi katere se LLM-ji izvajajo v različnih operacijskih sistemih.

llama.cpp je razvil Georgi Gerganov za izvajanje velikih jezikovnih modelov v kvantiziranem formatu, tako da lahko delujejo na CPE. llama.cpp je knjižnica C, ki nam omogoča izvajanje kvantiziranih LLM-jev na potrošniški strojni opremi. Po drugi strani pa je cosmopolitan libc še ena knjižnica C, ki gradi binarno datoteko, ki se lahko izvaja v katerem koli operacijskem sistemu (Windows, Mac, Ubuntu) brez potrebe po tolmaču. Llamafile je torej zgrajen na teh knjižnicah, kar mu omogoča ustvarjanje izvedljivih LLM z eno datoteko

Razpoložljivi modeli so v kvantiziranem formatu GGUF. GGUF je format datoteke za velike jezikovne modele, ki ga je razvil Georgi Gerganov, ustvarjalec llama.cpp. GGUF je oblika za shranjevanje, skupno rabo in učinkovito nalaganje velikih jezikovnih modelov v CPE in GPE. GGUF uporablja tehniko kvantizacije za stiskanje modelov iz njihove izvirne 16-bitne plavajoče vejice v 4-bitno ali 8-bitno celoštevilsko obliko. Uteži tega kvantiziranega modela je mogoče shraniti v tem formatu GGUF

To poenostavi delovanje modelov 7 Billion Parameter v računalniku s 16 GB VRAM. Modele velikih jezikov lahko zaženemo, ne da bi potrebovali GPE (čeprav nam Llamafile omogoča celo zagon LLM-jev na GPE). Trenutno so datoteke llama priljubljenih odprtokodnih velikih jezikovnih modelov, kot so LlaVa, Mistral in WizardCoder, na voljo za prenos in zagon

One Shot izvršljive datoteke

V tem razdelku bomo prenesli in poskusili zagnati multimodalni LlaVa Llamafile. Tukaj ne bomo delali z GPE in izvajali modela na CPE. Pojdite na uradno repozitorij Llamafile GitHub s klikom tukaj in prenos modela LlaVa 1.5.

Enkratni izvedljivi | Llamafiles

Prenesite model

Zgornja slika prikazuje vse razpoložljive modele z njihovimi imeni, velikostmi in povezavami za prenos. LlaVa 1.5 ima le okoli 4 GB in je zmogljiv multi-model, ki lahko razume slike. Preneseni model je model s 7 milijardami parametrov, ki je kvantiziran na 4 bite. Po prenosu modela pojdite v mapo, v katero ste ga prenesli.

"

Nato odprite CMD, se pomaknite do mape, v katero je prenesen ta model, vnesite ime datoteke, ki smo jo prenesli, in pritisnite enter.

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

Za uporabnike Mac in Linux

Za Mac in Linux je privzeto dovoljenje za izvajanje izklopljeno za to datoteko. Zato moramo zagotoviti dovoljenje za izvajanje za datoteko llama, kar lahko storimo tako, da zaženemo spodnji ukaz.

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

To je za aktiviranje dovoljenja za izvajanje za datoteko llava-v1.5-7b-q4.llama. Dodajte tudi »./« pred ime datoteke, če želite zagnati datoteko v sistemih Mac in Linux. Ko pritisnete ključno besedo enter, bo model potisnjen v sistemski RAM in prikazan bo naslednji rezultat.

Za uporabnike Mac in Linux | Llamafiles

Nato se bo pojavil brskalnik in model se bo izvajal na naslovu URL http://127.0.0.1:8080/

"
"

Zgornja slika prikazuje privzeti poziv, uporabniško ime, ime LLM, predlogo poziva in predlogo zgodovine klepeta. Te je mogoče konfigurirati, vendar bomo za zdaj uporabili privzete vrednosti.

Spodaj lahko celo preverimo nastavljive hiperparametre LLM, kot so Top P, Top K, Temperature in drugi. Tudi te bomo za zdaj pustili privzete. Zdaj pa vtipkajmo nekaj in kliknimo na pošlji.

"

Na zgornji sliki lahko vidimo, da smo vtipkali sporočilo in celo prejeli odgovor. Pod tem lahko preverimo, ali dobivamo približno 6 žetonov na sekundo, kar je dober žeton/sekundo, če upoštevamo, da ga v celoti izvajamo na CPU. Tokrat poskusimo s sliko.

CPU | TinyLlama

Čeprav ni 100-odstotno pravilen, bi lahko model skoraj večino stvari dobil prav iz slike. Zdaj pa se pogovarjajmo z LlaVo, da preverimo, ali si zapomni zgodovino klepeta.

Na zgornji sliki lahko vidimo, da je LlaVa LLM uspel dobro slediti pogovoru. Lahko prevzame zgodovinski pogovor in nato ustvari odgovore. Čeprav zadnji ustvarjeni odgovor ni povsem resničen, je za njegovo ustvarjanje zbral prejšnji pogovor. Tako lahko na ta način prenesemo datoteko llama in jih poženemo kot programsko opremo ter delamo s temi prenesenimi modeli.

Ustvarjanje Llamafiles

Videli smo predstavitev Llamafile, ki je že bila prisotna na uradnem GitHubu. Pogosto ne želimo delati s temi modeli. Namesto tega želimo ustvariti enodatotečne izvršljive datoteke naših velikih jezikovnih modelov. V tem razdelku bomo šli skozi postopek ustvarjanja izvedljivih datotek z eno datoteko, tj. datotek llama iz kvantiziranih LLM.

Izberite LLM

Najprej bomo začeli z izbiro velikega jezikovnega modela. Za to predstavitev bomo izbrali kvantizirano različico TinyLlame. Tukaj bomo prenesli 8-bitni kvantizirani model GGUF za TinyLlama (lahko kliknete tukaj da obiščete HuggingFace in prenesete model)

TinyLlama

Prenesite najnovejšo datoteko Llamafile

Najnovejšo datoteko llamafile zip lahko prenesete z uradne povezave GitHub. Prav tako prenesite zip in ekstrahirajte datoteko zip. Trenutna različica tega članka je llama file-0.6. Po ekstrakciji llama bo mapa bin z mapo datotek vsebovala datoteke, kot je prikazano na spodnji sliki.

"

Zdaj premaknite preneseni 8-bitni kvantizirani model TinyLlama v to mapo koša. Za ustvarjanje izvedljivih datotek z eno datoteko moramo ustvariti datoteko .args v mapi bin datoteke llamafile. V to datoteko moramo dodati naslednjo vsebino:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Prva vrstica označuje zastavico -m. To sporoča datoteki llamafile, da nalagamo teže modela.
  • V drugi vrstici določimo ime modela, ki smo ga prenesli in je prisotno v istem imeniku, v katerem je prisotna datoteka .args, tj. mapa bin datoteke llama.
  • V tretji vrstici dodamo zastavico gostitelja, ki nakazuje, da izvajamo izvedljivo datoteko in jo želimo gostiti na spletnem strežniku.
  • Nazadnje v zadnji vrstici omenimo naslov, kjer želimo gostovati, ki se preslika v localhost. Temu sledijo tri pike, ki določajo, da lahko posredujemo argumente naši datoteki llama, ko je ustvarjena.
  • Dodajte te vrstice v datoteko .args in jo shranite.

Za uporabnike sistema Windows

Zdaj je naslednji korak za uporabnike sistema Windows. Če smo delali v sistemu Windows, smo morali namestiti Linux prek WSL. Če ne, kliknite tukaj da greste skozi korake namestitve Linuxa prek WSL. V sistemih Mac in Linux niso potrebni nobeni dodatni koraki. Zdaj odprite mapo bin mape llamafile v terminalu (če delate v sistemu Windows, odprite ta imenik v WSL) in vnesite naslednje ukaze.

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

Tukaj ustvarjamo novo datoteko z imenom tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; to pomeni, da ustvarjamo datoteko s pripono .llamafile in premaknemo datoteko llamafile v to novo datoteko. Zdaj, po tem, bomo vnesli naslednji ukaz.

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

Tukaj delamo z datoteko zipalign, ki je prišla, ko smo prenesli datoteko llamafile zip iz GitHuba. S tem ukazom ustvarjamo datoteko llama za našo kvantizirano TinyLlamo. Temu ukazu zipalign posredujemo datoteko tinyllama-1.1b-chat-v0.3.Q8_0.llama, ki smo jo ustvarili v prejšnjem koraku, nato posredujemo datoteko tinyllama-1.1b-chat-v0.3.Q8_0.llama model, ki ga imamo v mapi bin, in na koncu posredujemo datoteko .args, ki smo jo ustvarili prej.

To bo končno proizvedlo našo izvršljivo eno datoteko tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. Da bi zagotovili, da smo na isti strani, mapa bin zdaj vsebuje naslednje datoteke.

Izvedljive datoteke | Llamafiles

Zdaj lahko zaženemo datoteko tinyllama-1.1b-chat-v0.3.Q8_0.llama na enak način kot prej. V sistemu Windows lahko celo preimenujete datoteko .llama v .exe in jo zaženete tako, da jo dvokliknete.

OpenAI združljiv strežnik

V tem razdelku bomo preučili, kako strežnik LLM prek datoteke Llamfile. Opazili smo, da se ob zagonu datoteke llama odpre brskalnik in lahko komuniciramo z LLM prek spletnega uporabniškega vmesnika. To v bistvu imenujemo gostovanje velikega jezikovnega modela.

Ko zaženemo datoteko Llamafile, lahko komuniciramo z ustreznim LLM kot končno točko, ker se model streže na lokalnem gostitelju na PORT 8080. Strežnik sledi protokolu OpenAI API, tj. podobno končni točki OpenAI GPT, kar omogoča enostavno je preklapljati med modelom OpenAI GPT in LLM, ki se izvaja z Llamafile.

Tukaj bomo zagnali predhodno ustvarjeno datoteko TinyLlama llama. Zdaj se to mora izvajati na lokalnem gostitelju 8080. Zdaj ga bomo preizkusili prek samega API-ja OpenAI v Pythonu

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)
  • Tukaj delamo s knjižnico OpenAI. Toda namesto da bi določili končno točko OpenAI, določimo URL, kjer gostuje naša TinyLlama, in podamo “sk-no–žeton-potreben” za api_key
  • Nato se odjemalec poveže z našo končno točko TinyLlama
  • Zdaj lahko, podobno kot delamo z OpenAI, uporabimo kodo za klepet z našo TinyLlamo.
  • Za to sodelujemo z dopolnitve razreda OpenAI. Ustvarjamo novo dopolnitve s .create() predmet in posreduje podrobnosti, kot so ime modela in sporočila.
  • Sporočila so v obliki seznama slovarjev, kjer imamo vlogo, ki je lahko sistemska, uporabniška ali pomočniška, in imamo vsebino.
  • Končno lahko pridobimo informacije, ustvarjene prek zgornje izjave za tiskanje.

Rezultat zgoraj navedenega si lahko ogledate spodaj.

Llamafiles | Izhod

Na ta način lahko izkoristimo datoteke llama in preprosto zamenjamo API OpenAI z datoteko llama, ki smo jo izbrali za izvajanje.

Omejitve Llamafiles

Čeprav so lamafile revolucionarni, so še v razvoju. Nekatere omejitve vključujejo:

  • Omejena izbira modelov: Trenutno niso vsi LLM na voljo v obliki lamafileov. Trenutni izbor vnaprej zgrajenih Llamafile še vedno narašča. Trenutno so Llamafile na voljo za Llama 2, LlaVa, Mistral in Wizard Coder.
  • Zahteve glede strojne opreme: Izvajanje LLM, tudi prek Llamafiles, še vedno zahteva veliko računalniških virov. Čeprav jih je lažje izvajati kot tradicionalne metode, bodo starejši ali manj zmogljivi računalniki morda potrebovali pomoč, da bodo delovali nemoteno.
  • Varnostni pomisleki: Prenos in zagon izvedljivih datotek iz virov, ki jim ni zaupanja vreden, nosi lastna tveganja. Torej mora obstajati zaupanja vredna platforma, kamor lahko prenesemo te datoteke llama.

Llamafiles proti ostalim

Pred Llamafiles so obstajali različni načini za zagon velikih jezikovnih modelov. Ena je bila skozi llama_cpp_python. To je različica llama.cpp za Python, ki nam omogoča zagon kvantiziranih velikih jezikovnih modelov na potrošniški strojni opremi, kot so prenosniki in namizni računalniki. Toda da bi ga zagnali, moramo prenesti in namestiti Python in celo knjižnice za globoko učenje, kot so torch, huggingface, transformers in številne druge. Po tem je vključevalo pisanje številnih vrstic kode za zagon modela.

Tudi takrat se včasih lahko soočimo s težavami zaradi težav z odvisnostjo (to pomeni, da imajo nekatere knjižnice nižje ali višje različice, kot je potrebno). In obstaja tudi CTtransformatorji knjižnica, ki nam omogoča zagon kvantiziranih LLM. Tudi to zahteva enak postopek, o katerem smo razpravljali za llama_cpp_python

In potem, obstaja Ollama. Ollama je bil zelo uspešen v skupnosti AI zaradi svoje enostavne uporabe za preprosto nalaganje in izvajanje velikih jezikovnih modelov, zlasti kvantiziranih. Ollama je neke vrste TUI (terminalni uporabniški vmesnik) za LLM. Edina razlika med Ollamo in Llamafile je možnost deljenja. Se pravi, če hočem, lahko svojo datoteko model.llama delim s komer koli in ta jo lahko zažene brez prenosa dodatne programske opreme. Toda v primeru Ollame moram dati v skupno rabo datoteko model.gguf, ki jo lahko druga oseba zažene le, ko namesti programsko opremo Ollama ali prek zgornjih knjižnic Python.

Kar zadeva vire, vsi zahtevajo enako količino virov, ker vse te metode uporabljajo spodnji llama.cpp za izvajanje kvantiziranih modelov. Gre le za enostavnost uporabe, kjer obstajajo razlike med temi.

zaključek

Llamafiles označujejo ključni korak naprej pri ustvarjanju LLM-jev, ki jih je mogoče zlahka izvajati. Njihova enostavna uporaba in prenosljivost odpirata svet možnosti za razvijalce, raziskovalce in občasne uporabnike. Čeprav obstajajo omejitve, je potencial datotek llama za demokratizacijo dostopa do LLM očiten. Ne glede na to, ali ste izkušen razvijalec ali radoveden novinec, Llamafiles odpira vznemirljive možnosti za raziskovanje sveta LLM. V tem priročniku smo si ogledali, kako prenesti Llamafile in celo, kako ustvariti lastne Llamafile z našimi kvantiziranimi modeli . Ogledali smo si celo strežnik, združljiv z OpenAI, ki se ustvari pri izvajanju Llamafiles.

Ključni izdelki

  • Llamafile so izvedljive datoteke z eno datoteko, ki omogočajo lažje in bolj dostopno izvajanje velikih jezikovnih modelov (LLM).
  • Odpravljajo potrebo po zapletenih nastavitvah in konfiguracijah, kar uporabnikom omogoča prenos in zagon LLM-jev neposredno brez zahtev Pythona ali GPE.
  • Datoteke Llama so trenutno na voljo za omejen izbor odprtokodnih LLM-jev, vključno z LlaVa, Mistral in WizardCoder.
  • Čeprav so priročni, imajo Llamafiles še vedno omejitve, kot so zahteve glede strojne opreme in varnostni pomisleki, povezani s prenosom izvedljivih datotek iz nezaupljivih virov.
  • Kljub tem omejitvam Llamafiles predstavlja pomemben korak k demokratizaciji dostopa do LLM za razvijalce, raziskovalce in celo občasne uporabnike.

Pogosto zastavljena vprašanja

Q1. Kakšne so prednosti uporabe Llamafiles?

A. Datoteke Llamafiles nudijo številne prednosti pred tradicionalnimi metodami konfiguracije LLM. Omogočajo lažjo in hitrejšo nastavitev in izvajanje LLM-jev, ker vam ni treba namestiti Pythona ali imeti GPE-ja. Zaradi tega so LLM-ji lažje dostopni širšemu občinstvu. Poleg tega lahko Llamafiles deluje v različnih operacijskih sistemih.

Q2. Kakšne so omejitve Llamafiles?

A. Medtem ko Llamafiles zagotavljajo številne prednosti, imajo tudi nekatere omejitve. Izbira LLM-jev, ki so na voljo v Llamafiles, je v primerjavi s tradicionalnimi metodami omejena. Poleg tega izvajanje LLM prek Llamafiles še vedno zahteva precejšnjo količino strojnih virov in starejši ali manj zmogljivi računalniki tega morda ne podpirajo. Nenazadnje so varnostni pomisleki povezani s prenosom in izvajanjem izvršljivih datotek iz nezaupljivih virov.

Q3. Kako lahko začnem uporabljati Llamafiles?

A. Če želite začeti uporabljati Llamafiles, lahko obiščete uradno repozitorij Llamafile GitHub. Tam lahko prenesete datoteko Llamafile za model LLM, ki ga želite uporabiti. Ko prenesete datoteko, jo lahko zaženete neposredno kot izvršljivo datoteko.

Q4. Ali lahko uporabljam svoj model LLM z Llamafiles?

A. Ne. Trenutno Llamafiles podpira samo določene vnaprej zgrajene modele. Ustvarjanje naših lastnih datotek Llamafiles je načrtovano za prihodnje različice.

V5. Kakšni so obeti Llamafiles?

A. Razvijalci Llamafiles si prizadevajo razširiti izbor razpoložljivih modelov LLM, jih učinkoviteje izvajati in izvajati varnostne ukrepe. Namen teh napredkov je narediti Llamafiles še bolj dostopne in varne za več ljudi z malo tehničnega znanja.

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

Časovni žig:

Več od Analitika Vidhya