Llamatiedostojen käyttäminen LLM-suorituksen yksinkertaistamiseen

Llamatiedostojen käyttäminen LLM-suorituksen yksinkertaistamiseen

Lähdesolmu: 3068075

esittely

Suurten kielimallien käyttäminen on aina ollut työläs prosessi. Sinun on ladattava joukko kolmannen osapuolen ohjelmistoja näiden LLM:ien lataamiseksi tai Python ja luotava ympäristö lataamalla paljon Pytorch- ja HuggingFace-kirjastoja. Jos käytät Pythonic Approachia, sinun on käytävä läpi koodin kirjoitusprosessi mallin lataamiseksi ja suorittamiseksi. Tässä oppaassa tarkastellaan helpompaa lähestymistapaa näiden LLM:ien hoitamiseen.

Oppimistavoitteet

  • Ymmärrä perinteisen LLM:n toteuttamisen haasteet
  • Tartu Llamafilesin innovatiiviseen konseptiin
  • Opi lataamaan ja suorittamaan omia Llamafile-suoritustiedostoja helposti
  • Oppiminen luomaan Llam-tiedostoja kvantisoiduista LLM:istä
  • Tunnista tämän lähestymistavan rajoitukset

Tämä artikkeli julkaistiin osana Data Science Blogathon.

Sisällysluettelo

Ongelmia suurten kielimallien kanssa

Suuret kielimallit (LLM) ovat mullistaneet tavan olla vuorovaikutuksessa tietokoneiden kanssa, luoda tekstiä, kääntää kieliä, kirjoittaa erilaisia ​​luovaa sisältöä ja jopa vastata kysymyksiisi informatiivisella tavalla. Näiden tehokkaiden mallien käyttäminen tietokoneella on kuitenkin usein ollut haastavaa.

LLM:ien suorittamiseksi meidän on ladattava Python ja paljon tekoälyriippuvuuksia, ja sen lisäksi meidän on jopa kirjoitettava koodi niiden lataamiseksi ja suorittamiseksi. Jopa käyttövalmiita käyttöliittymiä asennettaessa suurille kielimalleille, siihen liittyy monia asetuksia, jotka voivat helposti mennä pieleen. Niiden asentaminen ja suorittaminen suoritettavana tiedostona ei ole ollut yksinkertainen prosessi.

Mitä Llamafiles ovat?

Llamatiedostot on luotu toimimaan helposti suosittujen avoimen lähdekoodin suurten kielimallien kanssa. Nämä ovat yhden tiedoston suoritustiedostoja. Se on aivan kuin LLM:n lataaminen ja sen käyttäminen suoritettavana tiedostona. Kirjastojen alustavaa asennusta ei tarvita. Tämä kaikki oli mahdollista llama.cpp:n ja kosmopoliittisen libc:n ansiosta, mikä saa LLM:t toimimaan eri käyttöjärjestelmissä.

Georgi Gerganov on kehittänyt llama.cpp:n suorittamaan suuria kielimalleja kvantisoidussa muodossa, jotta niitä voidaan käyttää suorittimella. Lama.cpp on C-kirjasto, jonka avulla voimme ajaa kvantisoituja LLM:itä kuluttajalaitteistolla. Toisaalta kosmopoliittinen libc on toinen C-kirjasto, joka rakentaa binaarin, joka voi toimia missä tahansa käyttöjärjestelmässä (Windows, Mac, Ubuntu) ilman tulkkia. Joten Llamafile on rakennettu näiden kirjastojen päälle, mikä antaa sen luoda yhden tiedoston suoritettavia LLM-tiedostoja

Saatavilla olevat mallit ovat GGUF-kvantisoidussa muodossa. GGUF on Large Language Models -tiedostomuoto, jonka on kehittänyt Georgi Gerganov, llama.cpp:n luoja. GGUF on muoto suurten kielimallien tallentamiseen, jakamiseen ja lataamiseen tehokkaasti ja tehokkaasti suorittimille ja grafiikkasuorittimille. GGUF käyttää kvantisointitekniikkaa mallien pakkaamiseen alkuperäisestä 16-bittisestä liukulukusta 4- tai 8-bittiseen kokonaislukumuotoon. Tämän kvantisoidun mallin painot voidaan tallentaa tähän GGUF-muotoon

Tämä tekee 7 miljardin parametrin mallien käytöstä helpompaa tietokoneessa, jossa on 16 Gt:n VRAM. Voimme käyttää suuria kielimalleja ilman GPU:ta (vaikka Llamafile jopa sallii meidän ajaa LLM:itä GPU:lla). Tällä hetkellä suosittujen avoimen lähdekoodin suurten kielimallien, kuten LlaVa, Mistral ja WizardCoder, lamatiedostot ovat helposti ladattavissa ja ajettavissa.

One Shot Excutables

Tässä osiossa lataamme ja yritämme käyttää multimodaalista LlaVa Llamafilea. Tässä emme työskentele GPU:n kanssa ja käytämme mallia CPU:lla. Siirry viralliseen Llamafile GitHub -tietovarastoon napsauttamalla tätä ja lataamalla LlaVa 1.5 -mallin.

Yksi laukaus suoritettavat | Llama-tiedostot

Lataa malli

Yllä olevassa kuvassa näkyvät kaikki saatavilla olevat mallit niiden nimien, kokojen ja ladattavien linkkien kanssa. LlaVa 1.5 on vain noin 4 Gt ja se on tehokas monimalli, joka pystyy ymmärtämään kuvia. Ladattu malli on 7 miljardin parametrin malli, joka on kvantisoitu 4-bittiseksi. Kun olet ladannut mallin, siirry kansioon, johon se ladattiin.

"

Avaa sitten CMD, siirry kansioon, johon tämä malli on ladattu, kirjoita lataamamme tiedoston nimi ja paina enter.

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

Mac- ja Linux-käyttäjille

Macissa ja Linuxissa tämän tiedoston suorituslupa on oletusarvoisesti pois käytöstä. Siksi meidän on annettava suorituslupa llamatiedostolle, jonka voimme tehdä suorittamalla alla olevan komennon.

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

Tämä aktivoi llava-v1.5-7b-q4.llama-tiedoston suoritusluvan. Lisää myös "./" ennen tiedoston nimeä suorittaaksesi tiedoston Macissa ja Linuxissa. Kun olet painanut Enter-avainsanaa, malli työnnetään järjestelmän RAM-muistiin ja näyttää seuraavan tulosteen.

Mac- ja Linux-käyttäjille | Llama-tiedostot

Sitten selain avautuu ja malli toimii URL-osoitteessa http://127.0.0.1:8080/

"
"

Yllä oleva kuva näyttää oletuskehotteen, käyttäjänimen, LLM-nimen, kehotemallin ja keskusteluhistorian mallin. Nämä voidaan määrittää, mutta toistaiseksi käytämme oletusarvoja.

Alla voimme jopa tarkistaa konfiguroitavat LLM-hyperparametrit, kuten Top P, Top K, Temperature ja muut. Jopa nämä, annamme niiden olla oletusarvoisia toistaiseksi. Kirjoita nyt jotain ja napsauta Lähetä.

"

Yllä olevassa kuvassa näemme, että olemme kirjoittaneet viestin ja jopa saaneet vastauksen. Sen alapuolella voimme tarkistaa, että saamme noin 6 merkkiä sekunnissa, mikä on hyvä merkki sekunnissa, kun otetaan huomioon, että käytämme sitä kokonaan CPU:lla. Tällä kertaa kokeillaan kuvan kanssa.

CPU | TinyLlama

Vaikka malli ei ollut 100 % oikein, malli saattoi melkein saada suurimman osan asioista suoraan Imagestä. Käydään nyt usean kierroksen keskustelu LlaVan kanssa testataksemme, muistaako se chat-historian.

Yllä olevassa kuvassa voimme nähdä, että LlaVa LLM pystyi pitämään konvoa hyvin. Se voisi ottaa historiallisen keskustelun ja tuottaa sitten vastauksia. Vaikka viimeisin luotu vastaus ei ole aivan totta, se keräsi edellisen keskustelun luomaan sen. Joten tällä tavalla voimme ladata llamatiedoston ja käyttää niitä ohjelmiston tavoin ja työskennellä näiden ladattujen mallien kanssa.

Llama-tiedostojen luominen

Olemme nähneet Llamafilen demon, joka oli jo läsnä virallisessa GitHubissa. Usein emme halua työskennellä näiden mallien kanssa. Sen sijaan haluamme luoda yksitiedostoisia suoritettavia tiedostoja suurille kielimalleillemme. Tässä osiossa käymme läpi prosessin, jolla luodaan yksitiedostoisia suoritettavia tiedostoja, eli laama-tiedostoja kvantisoiduista LLM:istä.

Valitse LLM

Aloitamme valitsemalla suuren kielimallin. Tätä demoa varten valitsemme TinyLlaman kvantisoidun version. Täällä lataamme TinyLlaman 8-bittisen kvantisoidun GGUF-mallin (voit napsauttaa tätä Siirry HuggingFaceen ja lataa malli)

TinyLlama

Lataa uusin Llamafile

Voit ladata uusimman llamafile-zip-tiedoston virallisesta GitHub-linkistä. Lataa myös zip-tiedosto ja pura zip-tiedosto. Tämän artikkelin nykyinen versio on laamatiedosto-0.6. Laman purkamisen jälkeen bin-kansio ja tiedostokansio sisältää alla olevan kuvan mukaiset tiedostot.

"

Siirrä nyt ladattu TinyLlama 8-bittinen kvantisoitu malli tähän roskakansioon. Yksitiedostoisten suoritettavien tiedostojen luomiseksi meidän on luotava .args-tiedosto llamafile-tiedoston bin-kansioon. Tähän tiedostoon meidän on lisättävä seuraava sisältö:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Ensimmäinen rivi osoittaa -m-lippua. Tämä kertoo lamatiedostolle, että lataamme mallin painot.
  • Toisella rivillä määritetään lataamamme mallin nimi, joka on samassa hakemistossa, jossa .args-tiedosto on, eli llamatiedoston bin-kansiossa.
  • Kolmannelle riville lisäämme isäntälipun, joka osoittaa, että suoritamme suoritettavaa tiedostoa ja haluamme isännöidä sen verkkopalvelimelle.
  • Lopuksi viimeisellä rivillä mainitsemme osoitteen, johon haluamme isännöidä ja joka liittyy localhost-palvelimeen. Tämän jälkeen on kolme pistettä, jotka määrittelevät, että voimme välittää argumentteja llamatiedostollemme sen luomisen jälkeen.
  • Lisää nämä rivit .args-tiedostoon ja tallenna se.

Windows-käyttäjille

Nyt seuraava vaihe on Windows-käyttäjille. Jos työskentelemme Windowsissa, meidän piti asentaa Linux WSL:n kautta. Jos ei, napsauta tätä käydä läpi Linuxin asennuksen vaiheet WSL:n kautta. Macissa ja Linuxissa lisävaiheita ei tarvita. Avaa nyt llamafile-kansion bin-kansio päätteessä (jos työskentelet Windowsissa, avaa tämä hakemisto WSL:ssä) ja kirjoita seuraavat komennot.

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

Täällä luomme uuden tiedoston nimeltä tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; eli luomme tiedoston .llamafile-tunnisteella ja siirrämme tiedoston llamafile tähän uuteen tiedostoon. Nyt tämän jälkeen kirjoitamme tämän seuraavan komennon.

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

Täällä työskentelemme zipalign-tiedoston kanssa, joka tuli, kun latasimme llamafile-zip-tiedoston GitHubista. Työskentelemme tällä komennolla luodaksemme llamatiedoston kvantisoidulle TinyLlamalle. Tälle zipalign-komennolle välitämme tinyllama-1.1b-chat-v0.3.Q8_0.llama-tiedoston, jonka olemme luoneet edellisessä vaiheessa, ja sitten välitämme tinyllama-1.1b-chat-v0.3.Q8_0.llama-tiedoston malli, joka meillä on bin-kansiossa, ja välitä lopuksi aiemmin luomamme .args-tiedosto.

Tämä tuottaa lopulta yksittäisen tiedoston suoritettavan tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. Varmistaaksemme, että olemme samalla sivulla, bin-kansio sisältää nyt seuraavat tiedostot.

Suoritettavat tiedostot | Llama-tiedostot

Nyt voimme ajaa tinyllama-1.1b-chat-v0.3.Q8_0.llama-tiedoston samalla tavalla kuin aiemmin. Windowsissa voit jopa nimetä .llama-tiedoston uudelleen muotoon .exe ja suorittaa sen kaksoisnapsauttamalla sitä.

OpenAI-yhteensopiva palvelin

Tässä osiossa tarkastellaan kuinka LLM:itä palvellaan Llam-tiedoston kautta. Olemme huomanneet, että kun suoritamme laama-tiedoston, selain avautuu ja voimme olla vuorovaikutuksessa LLM:n kanssa WebUI:n kautta. Tätä kutsumme pohjimmiltaan suuren kielimallin isännöinniksi.

Kun olemme suorittaneet Llamatiedoston, voimme olla vuorovaikutuksessa vastaavan LLM:n kanssa päätepisteenä, koska mallia palvellaan paikallisessa isännässä PORT 8080:ssa. Palvelin noudattaa OpenAI API-protokollaa eli samanlaista kuin OpenAI GPT -päätepiste. on helppo vaihtaa OpenAI GPT -mallin ja Llamafilen kanssa toimivan LLM:n välillä.

Täällä suoritamme aiemmin luodun TinyLlama-lamatiedoston. Nyt tämän on oltava käynnissä localhost 8080:ssa. Testaamme sitä nyt itse OpenAI API:n kautta Pythonissa

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)
  • Täällä työskentelemme OpenAI-kirjaston kanssa. Mutta sen sijaan, että määrittäisimme OpenAI-päätepisteen, määritämme URL-osoitteen, jossa TinyLlamamme isännöi, ja annamme "sk-no-token-required" api_keylle
  • Sitten asiakas saa yhteyden TinyLlama-päätepisteeseemme
  • Nyt, samalla tavalla kuin työskentelemme OpenAI:n kanssa, voimme käyttää koodia keskustellaksemme TinyLlaman kanssa.
  • Tätä varten teemme yhteistyötä Valmistuneet OpenAI:n luokassa. Luomme uutta Valmistuneet jossa .luoda() -objekti ja välitä tiedot, kuten mallin nimi ja viestit.
  • Viestit ovat sanakirjaluettelon muodossa, jossa meillä on rooli, joka voi olla järjestelmä, käyttäjä tai avustaja, ja meillä on sisältö.
  • Lopuksi voimme noutaa yllä olevan tulostuksen kautta luodut tiedot.

Yllä olevan tulos näkyy alla.

Llamatiedostot | Lähtö

Tällä tavalla voimme hyödyntää llamatiedostoja ja korvata OpenAI API:n helposti laamatiedostolla, jonka valitsimme suorittaa.

Llamafile-rajoitukset

Vaikka lamatiedostot ovat vallankumouksellisia, niitä kehitetään edelleen. Joitakin rajoituksia ovat mm.

  • Rajoitettu mallivalikoima: Tällä hetkellä kaikki LLM:t eivät ole saatavilla lamatiedostoina. Nykyinen valmiiksi rakennettujen Llamafile-tiedostojen valikoima kasvaa edelleen. Tällä hetkellä Llamafiles ovat saatavilla Llama 2:lle, LlaValle, Mistralille ja Wizard Coderille.
  • Laitteistovaatimukset: LLM:ien suorittaminen, jopa Llamafilesin kautta, vaatii silti paljon laskentaresursseja. Vaikka niitä on helpompi käyttää kuin perinteisiä menetelmiä, vanhemmat tai vähemmän tehokkaat tietokoneet saattavat tarvita apua, jotta ne toimivat sujuvasti.
  • Turvallisuushuoli: Suoritustiedostojen lataamiseen ja suorittamiseen epäluotettavista lähteistä liittyy luontaisia ​​riskejä. Joten täytyy olla luotettava alusta, jonne voimme ladata nämä lamatiedostot.

Llamafiles vs the Rest

Ennen Llamafilesiä oli olemassa erilaisia ​​​​tapoja käyttää suuria kielimalleja. Yksi oli läpi llama_cpp_python. Tämä on llama.cpp:n Python-versio, jonka avulla voimme ajaa kvantisoituja suuria kielimalleja kuluttajalaitteistoissa, kuten kannettavissa tietokoneissa ja pöytätietokoneissa. Mutta sen suorittamiseksi meidän on ladattava ja asennettava Python ja jopa syväoppivat kirjastot, kuten taskulamppu, huggingface, muuntajat ja monet muut. Ja sen jälkeen kirjoitettiin useita koodirivejä mallin suorittamiseksi.

Silloinkin saatamme joskus kohdata ongelmia riippuvuusongelmien vuoksi (eli joissakin kirjastoissa on tarvittavaa pienempi tai uudempi versio). Ja siellä on myös CTransformers kirjasto, jonka avulla voimme ajaa kvantisoituja LLM:itä. Jopa tämä vaatii saman prosessin, josta olemme keskustelleet llama_cpp_pythonille

Ja sitten on Ollama. Ollama on menestynyt erittäin hyvin tekoälyyhteisössä, koska sen helppokäyttöisyys on helppo ladata ja suorittaa suuria kielimalleja, erityisesti kvantisoituja. Ollama on eräänlainen TUI (Terminal User Interface) LLM:ille. Ainoa ero Ollaman ja Llamafilen välillä on jaettavuus. Toisin sanoen, jos haluan, voin jakaa model.llama-tiedoston kenen tahansa kanssa ja he voivat käyttää sitä lataamatta lisäohjelmistoja. Mutta Ollaman tapauksessa minun on jaettava model.gguf-tiedosto, jota toinen henkilö voi suorittaa vain Ollama-ohjelmiston asentaessaan tai yllä olevien Python-kirjastojen kautta.

Mitä tulee resursseihin, ne kaikki vaativat saman määrän resursseja, koska kaikki nämä menetelmät käyttävät alla olevaa llama.cpp-tiedostoa kvantisoitujen mallien suorittamiseen. Kyse on vain käytön helppoudesta, jos näiden välillä on eroja.

Yhteenveto

Llama-tiedostot ovat ratkaiseva askel eteenpäin LLM:ien tekemisessä helposti ajettaviksi. Niiden helppokäyttöisyys ja siirrettävyys avaa mahdollisuuksia kehittäjille, tutkijoille ja satunnaisille käyttäjille. Vaikka rajoituksia onkin, lamatiedostojen mahdollisuudet demokratisoida LLM-pääsy on ilmeinen. Olitpa asiantuntijakehittäjä tai utelias aloittelija, Llamafiles avaa jännittäviä mahdollisuuksia tutkia LLM:ien maailmaa. Tässä oppaassa olemme tarkastelleet kuinka ladata Llamafiles ja jopa luoda omia Llamafile-tiedostoja kvantisoiduilla malleillamme. . Olemme jopa tarkastelleet OpenAI-yhteensopivaa palvelinta, joka syntyy, kun Llamafiles on käynnissä.

Keskeiset ostokset

  • Llamatiedostot ovat yksitiedostoisia suoritettavia tiedostoja, jotka tekevät suurten kielimallien (LLM) ajamisesta helpompaa ja helpommin saatavilla.
  • Ne poistavat monimutkaisten asetusten ja kokoonpanojen tarpeen, jolloin käyttäjät voivat ladata ja suorittaa LLM:itä suoraan ilman Python- tai GPU-vaatimuksia.
  • Llamatiedostot ovat juuri nyt saatavilla rajoitetulle valikoimalle avoimen lähdekoodin LLM:itä, mukaan lukien LlaVa, Mistral ja WizardCoder.
  • Vaikka Llamafiles on kätevä, sillä on silti rajoituksia, kuten laitteistovaatimukset ja turvallisuusongelmat, jotka liittyvät suoritettavien tiedostojen lataamiseen epäluotettavista lähteistä.
  • Näistä rajoituksista huolimatta Llamafiles on tärkeä askel kohti LLM-pääsyn demokratisointia kehittäjille, tutkijoille ja jopa satunnaisille käyttäjille.

Usein kysytyt kysymykset

Q1. Mitä hyötyä Llamafilesin käytöstä on?

V. Llamatiedostot tarjoavat useita etuja perinteisiin LLM-määritysmenetelmiin verrattuna. Niiden avulla LLM:t on helpompi ja nopeampi asentaa ja suorittaa, koska sinun ei tarvitse asentaa Pythonia tai käyttää grafiikkasuoritinta. Tämä tekee LLM:t helpommin saatavilla laajemmalle yleisölle. Lisäksi Llamafiles voi toimia eri käyttöjärjestelmissä.

Q2. Mitkä ovat Llamafilesin rajoitukset?

V. Vaikka Llamafileillä on monia etuja, niillä on myös joitain rajoituksia. Llamafilesissa saatavilla olevien LLM:ien valikoima on rajoitettu perinteisiin menetelmiin verrattuna. Lisäksi LLM:ien suorittaminen Llamafilesin kautta vaatii edelleen runsaasti laitteistoresursseja, eivätkä vanhemmat tai vähemmän tehokkaat tietokoneet välttämättä tue sitä. Lopuksi turvallisuusongelmat liittyvät suoritettavien tiedostojen lataamiseen ja suorittamiseen epäluotettavista lähteistä.

Q3. Kuinka voin aloittaa Llamafilesin käytön?

V. Aloita Llamafilesin käyttö vierailemalla virallisessa Llamafile GitHub -varastossa. Siellä voit ladata Llamafile-tiedoston LLM-mallille, jota haluat käyttää. Kun olet ladannut tiedoston, voit ajaa sen suoraan suoritettavan tiedoston tavoin.

Q4. Voinko käyttää omaa LLM-malliani Llamafilesin kanssa?

V. Ei. Tällä hetkellä Llamafiles tukee vain tiettyjä valmiita malleja. Tulevia versioita varten on tarkoitus luoda omia Llamafile-tiedostoja.

Q5. Mitkä ovat Llamafilesin näkymät?

V. Llamafilesin kehittäjät pyrkivät laajentamaan saatavilla olevien LLM-mallien valikoimaa, ajamaan niitä tehokkaammin ja toteuttamaan turvatoimia. Näillä parannuksilla pyritään tekemään Llamafilesista entistäkin helpompaa ja turvallisempaa useammille ihmisille, joilla on vähän teknistä taustaa.

Tässä artikkelissa näkyvä media ei ole Analytics Vidhyan omistuksessa, ja sitä käytetään tekijän harkinnan mukaan.

Aikaleima:

Lisää aiheesta Analyysi Vidhya