Brug af Llamafiles til at forenkle LLM-udførelse

Brug af Llamafiles til at forenkle LLM-udførelse

Kildeknude: 3068075

Introduktion

At køre store sprogmodeller har altid været en kedelig proces. Man skal downloade et sæt 3. parts software for at indlæse disse LLM'er eller downloade Python og skabe et miljø ved at downloade en masse Pytorch og HuggingFace Libraries. Hvis man går gennem Pythonic Approach, skal man igennem processen med at skrive kode for at downloade og køre modellen. Denne vejledning vil se på en lettere tilgang til at køre disse LLM'er.

Læringsmål

  • Forstå udfordringerne ved traditionel LLM-udførelse
  • Få fat i det innovative koncept med Llamafiles
  • Lær at downloade og køre dine egne Llamafile-eksekverbare filer med lethed
  • Lær at oprette Llamfiler fra kvantiserede LLM'er
  • Identificer begrænsningerne ved denne tilgang

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

Indholdsfortegnelse

Problemer med store sprogmodeller

Store sprogmodeller (LLM'er) har revolutioneret, hvordan vi interagerer med computere, genererer tekst, oversætter sprog, skriver forskellige former for kreativt indhold og endda besvarer dine spørgsmål på en informativ måde. Det har dog ofte været en udfordring at køre disse kraftfulde modeller på din computer.

For at køre LLM'erne skal vi downloade Python og en masse AI-afhængigheder, og oven i købet skal vi endda skrive kode for at downloade og køre dem. Selv når du installerer de brugsklare brugergrænseflader til store sprogmodeller, involverer det mange opsætninger, som nemt kan gå galt. Det har ikke været en simpel proces at installere og køre dem som en eksekverbar.

Hvad er Llamafiles?

Llamafiler er skabt til at fungere nemt med populære open source store sprogmodeller. Disse er eksekverbare filer med en enkelt fil. Det er ligesom at downloade en LLM og køre den som en eksekverbar. Der er ikke behov for en indledende installation af biblioteker. Dette var alt muligt på grund af llama.cpp og den kosmopolitiske libc, som får LLM'erne til at køre på forskellige OS'er.

llama.cpp blev udviklet af Georgi Gerganov til at køre store sprogmodeller i det kvantiserede format, så de kan køre på en CPU. llama.cpp er et C-bibliotek, der lader os køre kvantificerede LLM'er på forbrugerhardware. På den anden side er det kosmopolitiske libc et andet C-bibliotek, der bygger en binær, der kan køre på ethvert OS (Windows, Mac, Ubuntu) uden at skulle bruge en tolk. Så Llamafilen er bygget oven på disse biblioteker, hvilket lader den oprette enkeltfil eksekverbare LLM'er

De tilgængelige modeller er i GGUF kvantiseret format. GGUF er et filformat til store sprogmodeller udviklet af Georgi Gerganov, skaberen af ​​llama.cpp. GGUF er et format til lagring, deling og indlæsning af store sprogmodeller effektivt og effektivt på CPU'er og GPU'er. GGUF'en bruger en kvantiseringsteknik til at komprimere modellerne fra deres oprindelige 16-bit flydende komma til et 4-bit eller 8-bit heltalsformat. Vægten af ​​denne kvantificerede model kan gemmes i dette GGUF-format

Dette gør det nemmere for 7 Billion Parameter-modeller at køre på en computer med 16 GB VRAM. Vi kan køre de store sprogmodeller uden at kræve en GPU (selvom Llamafile endda tillader os at køre LLM'erne på en GPU). Lige nu er lamafilerne fra populære Open Source Large Language-modeller som LlaVa, Mistral og WizardCoder let tilgængelige til at downloade og køre

One Shot eksekverbare

I dette afsnit vil vi downloade og prøve at køre en multimodal LlaVa Llamafile. Her vil vi ikke arbejde med GPU og køre modellen på CPU. Gå til det officielle Llamafile GitHub Repository ved at klikke link. og download af LlaVa 1.5-modellen.

One shot eksekverbare | Lamafiler

Download modellen

Ovenstående billede viser alle tilgængelige modeller med deres navne, størrelser og links, der kan downloades. LlaVa 1.5 er lige omkring 4 GB og er en kraftfuld multimodel, der kan forstå billeder. Den downloadede model er en 7 Billion Parameter-model, der er kvantificeret til 4-bit. Når du har downloadet modellen, skal du gå til den mappe, hvor den blev downloadet.

"

Åbn derefter CMD'en, naviger til mappen, hvor denne model er downloadet, skriv navnet på den fil, vi downloadede, og tryk på enter.

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

Til Mac- og Linux-brugere

For Mac og Linux er udførelsestilladelsen som standard slået fra for denne fil. Derfor skal vi give udførelsestilladelsen til llamafilen, hvilket vi kan gøre ved at køre nedenstående kommando.

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

Dette er for at aktivere udførelsestilladelsen for llava-v1.5-7b-q4.llamafilen. Tilføj også "./" før filnavnet for at køre filen på Mac og Linux. Når du har trykket på enter nøgleordet, vil modellen blive skubbet til systemets RAM og vise følgende output.

Til Mac- og Linux-brugere | Lamafiler

Derefter vil browseren blive vist, og modellen kører på URL'en http://127.0.0.1:8080/

"
"

Ovenstående billede viser standard prompt, brugernavn, LLM-navn, promptskabelon og chathistorikskabelon. Disse kan konfigureres, men indtil videre går vi med standardværdierne.

Nedenfor kan vi endda kontrollere de konfigurerbare LLM-hyperparametre som Top P, Top K, Temperatur og de andre. Selv disse vil vi lade dem være standard for nu. Lad os nu skrive noget og klikke på send.

"

På ovenstående billede kan vi se, at vi har skrevet en besked og endda modtaget et svar. Herunder kan vi tjekke, at vi får omkring 6 tokens i sekundet, hvilket er et godt token/sekund i betragtning af, at vi kører det udelukkende på CPU. Denne gang, lad os prøve det med et billede.

CPU | Lille Lama

Selvom det ikke er 100 % rigtigt, kunne modellen næsten få de fleste af tingene rigtigt fra billedet. Lad os nu have en samtale med flere drejninger med LlaVa for at teste, om den husker chathistorikken.

På ovenstående billede kan vi se, at LlaVa LLM var i stand til at holde konvoen godt. Det kunne tage historiesamtalen ind og derefter generere svarene. Selvom det sidst genererede svar ikke er helt sandt, samlede det den forrige konvo for at generere det. Så på denne måde kan vi downloade en llamafil og bare køre dem som software og arbejde med de downloadede modeller.

Oprettelse af Llamafiler

Vi har set en demo af Llamafile, der allerede var til stede på den officielle GitHub. Ofte ønsker vi ikke at arbejde med disse modeller. I stedet ønsker vi at oprette eksekverbare enkeltfiler af vores store sprogmodeller. I dette afsnit vil vi gennemgå processen med at skabe eksekverbare enkeltfiler, dvs. lama-filer fra kvantiserede LLM'er.

Vælg en LLM

Vi starter først med at vælge en stor sprogmodel. Til denne demo vil vi vælge en kvantiseret version af TinyLlama. Her vil vi downloade den 8-bit kvantificerede GGUF-model af TinyLlama (Du kan klikke link. for at gå til HuggingFace og downloade modellen)

Lille Lama

Download den seneste Llam-fil

Den seneste llamafile-zip fra det officielle GitHub-link kan downloades. Download også zip-filen og udpak zip-filen. Den aktuelle version af denne artikel er lama fil-0.6. Efter lamaudtrækningen vil bin-mappen med filmappen indeholde filerne som på billedet nedenfor.

"

Flyt nu den downloadede TinyLlama 8-bit kvantiserede model til denne bin-mappe. For at oprette de eksekverbare filer med en enkelt fil, skal vi oprette en .args-fil i bin-mappen i llamafile. Til denne fil skal vi tilføje følgende indhold:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Den første linje angiver flaget -m. Dette fortæller lamafilen, at vi indlæser vægten af ​​en model.
  • I anden linje angiver vi modelnavnet, som vi har downloadet, som er til stede i den samme mappe, som .args-filen er til stede i, dvs. bin-mappen i llamafilen.
  • I den tredje linje tilføjer vi værtsflaget, hvilket indikerer, at vi kører den eksekverbare fil og ønsker at hoste den til en webserver.
  • Til sidst, i den sidste linje, nævner vi adressen, hvor vi ønsker at være vært, som er knyttet til localhost. Efterfulgt af dette er de tre prikker, som angiver, at vi kan sende argumenter til vores lamafil, når den er oprettet.
  • Tilføj disse linjer til .args-filen og gem den.

For Windows-brugere

Nu er det næste trin for Windows-brugerne. Hvis vi arbejdede på Windows, skulle vi have installeret Linux via WSL. Hvis ikke, klik link. for at gennemgå trinene til at installere Linux gennem WSL. I Mac og Linux kræves ingen yderligere trin. Åbn nu bin-mappen i llamafile-mappen i terminalen (hvis du arbejder på Windows, åbn denne mappe i WSL) og skriv følgende kommandoer.

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

Her opretter vi en ny fil kaldet tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; det vil sige, vi opretter en fil med filtypen .llamafile og flytter filen llamafile ind i denne nye fil. Nu, efter dette, vil vi indtaste denne næste kommando.

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

Her arbejder vi med zipalign-filen, der kom, da vi downloadede llamafilen zip fra GitHub. Vi arbejder med denne kommando for at skabe lamafilen til vores kvantificerede TinyLlama. Til denne zipalign-kommando sender vi tinyllama-1.1b-chat-v0.3.Q8_0.llamafilen, som vi har oprettet i det foregående trin, og derefter videregiver vi tinyllama-1.1b-chat-v0.3.Q8_0.llamafilen model, som vi har i bin-mappen og til sidst videregive .args-filen, som vi har oprettet tidligere.

Dette vil endelig producere vores enkeltfil eksekverbare tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. For at sikre, at vi er på samme side, indeholder bin-mappen nu følgende filer.

Eksekverbare filer | Lamafiler

Nu kan vi køre filen tinyllama-1.1b-chat-v0.3.Q8_0.llama på samme måde, som vi gjorde før. I Windows kan du endda omdøbe .llamafilen til .exe og køre den ved at dobbeltklikke på den.

OpenAI-kompatibel server

Dette afsnit vil se på, hvordan man serverer LLM'er gennem Llamfilen. Vi har bemærket, at når vi kører lama-filen, åbnes browseren, og vi kan interagere med LLM gennem WebUI. Det er dybest set, hvad vi kalder vært for den store sprogmodel.

Når vi først har kørt Llamafilen, kan vi interagere med den respektive LLM som et slutpunkt, fordi modellen bliver serveret hos den lokale vært på PORT 8080. Serveren følger OpenAI API Protocol, dvs. ligner OpenAI GPT Endpoint, og gør dermed det er nemt at skifte mellem OpenAI GPT-modellen og LLM, der kører med Llamafile.

Her vil vi køre den tidligere oprettede TinyLlama lamafil. Nu skal dette køre på localhost 8080. Vi vil nu teste det gennem OpenAI API selv i Python

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)
  • Her arbejder vi med OpenAI-biblioteket. Men i stedet for at angive OpenAI-slutpunktet, angiver vi URL'en, hvor vores TinyLlama er hostet, og giver "sk-no-token-påkrævet" for api_key
  • Derefter vil klienten få forbindelse til vores TinyLlama-slutpunkt
  • Nu, ligesom vi arbejder med OpenAI, kan vi bruge koden til at chatte med vores TinyLlama.
  • Til dette arbejder vi med afslutninger klasse af OpenAI. Vi skaber nyt afslutninger med .skab() objekt og videregive detaljerne som modelnavnet og meddelelserne.
  • Beskederne er i form af en liste over ordbøger, hvor vi har rollen, som kan være system, bruger eller assistent, og vi har indholdet.
  • Endelig kan vi hente de oplysninger, der er genereret gennem ovenstående printerklæring.

Outputtet for ovenstående kan ses nedenfor.

Lamafiler | Produktion

På denne måde kan vi udnytte llamafilerne og nemt erstatte OpenAI API med den llamafil, som vi valgte at køre.

Llamafiles begrænsninger

Selvom de er revolutionerende, er lamafiler stadig under udvikling. Nogle begrænsninger omfatter:

  • Begrænset modeludvalg: I øjeblikket er ikke alle LLM'er tilgængelige i form af lamafiler. Det nuværende udvalg af præbyggede Llamafiles vokser stadig. I øjeblikket er Llamafiler tilgængelige til Llama 2, LlaVa, Mistral og Wizard Coder.
  • Hardwarekrav: At køre LLM'er, selv gennem Llamafiles, kræver stadig mange beregningsressourcer. Selvom de er nemmere at køre end traditionelle metoder, kan ældre eller mindre kraftfulde computere have brug for hjælp til at køre dem problemfrit.
  • Sikkerhedsproblemer: At downloade og køre eksekverbare filer fra ikke-pålidelige kilder medfører iboende risici. Så der skal være en pålidelig platform, hvor vi kan downloade disse lamafiler.

Llamafiles vs resten

Før Llamafiles var der forskellige måder at køre store sprogmodeller på. Den ene var igennem lama_cpp_python. Dette er Python-versionen af ​​llama.cpp, der lader os køre kvantificerede store sprogmodeller på forbrugerhardware som bærbare og stationære pc'er. Men for at køre det skal vi downloade og installere Python og endda deep learning-biblioteker som torch, huggingface, transformatorer og mange flere. Og derefter indebar det at skrive mange linjer kode for at køre modellen.

Selv da kan vi nogle gange stå over for problemer på grund af afhængighedsproblemer (det vil sige, at nogle biblioteker har lavere eller højere versioner end nødvendigt). Og der er også CTransformere bibliotek, der lader os køre kvantiserede LLM'er. Selv dette kræver den samme proces, som vi har diskuteret for llama_cpp_python

Og så er der Ollama. Ollama har haft stor succes i AI-fællesskabet for dets brugervenlighed til nemt at indlæse og køre store sprogmodeller, især de kvantificerede. Ollama er en slags TUI (Terminal User Interface) for LLM'er. Den eneste forskel mellem Ollama og Llamafilen er delbarheden. Det vil sige, hvis jeg vil, så kan jeg dele min model.llamafile med hvem som helst, og de kan køre den uden at downloade yderligere software. Men i tilfælde af Ollama er jeg nødt til at dele model.gguf-filen, som den anden person kun kan køre, når de installerer Ollama-softwaren eller gennem ovenstående Python-biblioteker.

Med hensyn til ressourcerne kræver de alle den samme mængde ressourcer, fordi alle disse metoder bruger llama.cpp nedenunder til at køre de kvantiserede modeller. Det handler kun om brugervenligheden, hvor der er forskel på disse.

Konklusion

Llamafiler markerer et afgørende skridt fremad i at gøre LLM'er let at køre. Deres brugervenlighed og portabilitet åbner en verden af ​​muligheder for udviklere, forskere og tilfældige brugere. Selvom der er begrænsninger, er potentialet for lamafiler til at demokratisere LLM-adgang tydeligt. Uanset om du er en ekspertudvikler eller en nysgerrig nybegynder, åbner Llamafiles spændende muligheder for at udforske verden af ​​LLM'er. I denne guide har vi taget et kig på, hvordan du downloader Llamafiles, og endda hvordan du skaber vores helt egne Llamafiles med vores kvantificerede modeller . Vi har endda taget et kig på den OpenAI-kompatible server, der oprettes, når du kører Llamafiles.

Nøgleforsøg

  • Llamafiler er eksekverbare enkeltfiler, der gør det nemmere og lettere at køre store sprogmodeller (LLM'er).
  • De eliminerer behovet for komplekse opsætninger og konfigurationer, hvilket giver brugerne mulighed for at downloade og køre LLM'er direkte uden Python- eller GPU-krav.
  • Llamafiles er lige nu tilgængelige for et begrænset udvalg af open source LLM'er, herunder LlaVa, Mistral og WizardCoder.
  • Selvom det er praktisk, har Llamafiles stadig begrænsninger, såsom hardwarekravene og sikkerhedsproblemer forbundet med at downloade eksekverbare filer fra ikke-pålidelige kilder.
  • På trods af disse begrænsninger repræsenterer Llamafiles et vigtigt skridt i retning af at demokratisere LLM-adgang for udviklere, forskere og endda tilfældige brugere.

Ofte stillede spørgsmål

Q1. Hvad er fordelene ved at bruge Llamafiles?

A. Llamafiler giver flere fordele i forhold til traditionelle LLM-konfigurationsmetoder. De gør LLM'er nemmere og hurtigere at konfigurere og udføre, fordi du ikke behøver at installere Python eller have en GPU. Dette gør LLM'er lettere tilgængelige for et bredere publikum. Derudover kan Llamafiles køre på tværs af forskellige operativsystemer.

Q2. Hvad er begrænsningerne for Llamafiles?

A. Mens Llamafiles giver mange fordele, har de også nogle begrænsninger. Udvalget af LLM'er tilgængelige i Llamafiles er begrænset sammenlignet med traditionelle metoder. Derudover kræver det stadig en god mængde hardwareressourcer at køre LLM'er gennem Llamafiles, og ældre eller mindre kraftfulde computere understøtter det muligvis ikke. Endelig er sikkerhedsproblemer forbundet med at downloade og køre eksekverbare filer fra ikke-pålidelige kilder.

Q3. Hvordan kommer jeg i gang med Llamafiles?

A. For at komme i gang med Llamafiles kan du besøge det officielle Llamafile GitHub Repository. Der kan du downloade Llamafile til den LLM-model, du vil bruge. Når du har downloadet filen, kan du køre den direkte som en eksekverbar fil.

Q4. Kan jeg bruge min egen LLM-model med Llamafiles?

A. Nej. I øjeblikket understøtter Llamafiles kun specifikke præbyggede modeller. At skabe vores helt egne Llamafiles er planlagt til fremtidige versioner.

Q5. Hvad er udsigterne for Llamafiles?

A. Udviklerne af Llamafiles arbejder på at udvide udvalget af tilgængelige LLM-modeller, køre dem mere effektivt og implementere sikkerhedsforanstaltninger. Disse fremskridt har til formål at gøre Llamafiles endnu mere tilgængelige og sikre for flere mennesker, der har ringe teknisk baggrund.

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

Tidsstempel:

Mere fra Analyse Vidhya