Ja, du kan køre en LLM "AI chatbot" på en Raspberry Pi! Bare følg denne trin-for-trin-proces og spørg den derefter om hvad som helst.
Store sprogmodeller, kendt generelt (og unøjagtigt) som AI'er, har i flere måneder truet med at vælte udgivelses-, kunst- og juridiske verden. En ulempe er, at brug af LLM'er såsom ChatGPT betyder at oprette en konto og lade en andens computer gøre arbejdet. Men du kan køre en trænet LLM på din Raspberry Pi for at skrive poesi, besvare spørgsmål og mere.
Hvad er en stor sprogmodel?
Store sprogmodeller bruger maskinlæringsalgoritmer til at finde sammenhænge og mønstre mellem ord og sætninger. Uddannet på enorme mængder data er de i stand til at forudsige, hvilke ord der statistisk sandsynligt vil komme næste gang, når de får en prompt.
Hvis du skulle spørge tusindvis af mennesker, hvordan de havde det i dag, ville svarene være i stil med: "Jeg har det fint", "Kunne være værre", "OK, men mine knæ spiller op". Samtalen ville så vende i en anden retning. Måske ville personen spørge om dit eget helbred eller følge op med "Undskyld, jeg er nødt til at løbe. Jeg kommer for sent på arbejde".
Givet disse data og den indledende prompt burde en stor sprogmodel være i stand til at komme med sit eget overbevisende og originale svar baseret på sandsynligheden for, at et bestemt ord kommer næste i en rækkefølge, kombineret med en forudindstillet grad af tilfældighed, gentagelsesstraffe og andre parametre.
De store sprogmodeller, der bruges i dag, er ikke trænet på en vox-pop på et par tusinde mennesker. I stedet får de en ufattelig mængde data, skrabet fra offentligt tilgængelige samlinger, sociale medieplatforme, websider, arkiver og lejlighedsvise brugerdefinerede datasæt.
LLM'er trænes af menneskelige forskere, som vil forstærke visse mønstre og føre dem tilbage til algoritmen. Når du spørger en stor sprogmodel "hvad er den bedste slags hund?", vil den være i stand til at dreje et svar, der fortæller dig, at en Jack Russell terrier er den bedste slags hund, og give dig grunde til hvorfor.
Men uanset hvor intelligent eller overbevisende og menneskeligt dumt svaret, hverken modellen eller maskinen løber på har et sind, og de er ude af stand til at forstå hverken spørgsmålet eller ordene, der udgør respons. Det er bare matematik og en masse data.
Hvorfor køre en stor sprogmodel på Raspberry Pi?
Store sprogmodeller er overalt og bliver taget i brug af store søgevirksomheder for at hjælpe med at besvare forespørgsler.
Selvom det er fristende at kaste et naturligt sprogspørgsmål på en virksomheds sort boks, vil du nogle gange gerne søge inspiration eller stille et spørgsmål uden at føre endnu flere data ind i maven af overvågningskapitalisme.
Som en eksperimentel bestyrelse for tinkerer, den Raspberry Pi singleboard computer er filosofisk, hvis ikke fysisk, egnet til bestræbelsen.
I februar 2023 annoncerede Meta (virksomheden tidligere kendt som Facebook) LLaMA, en ny LLM med sprogmodeller på mellem 7 milliarder og 65 milliarder parametre. LLaMA blev trænet ved hjælp af offentligt tilgængelige datasæt,
LLaMA-koden er open source, hvilket betyder, at alle kan bruge og tilpasse den, og 'vægtene' eller parametrene blev opslået som torrents og magnetlinks i en tråd om projektets GitHub side.
I marts 2023 udgav udvikleren Georgi Gerganov lama.cpp, som kan køre på et stort udvalg af hardware, inklusive Raspberry Pi. Koden kører lokalt, og der sendes ingen data til Meta.
Installer llama.cpp på Raspberry Pi
Der er ingen offentliggjorte hardware-retningslinjer for llama.cpp, men det er ekstremt processor-, RAM- og lagerhungrende. Sørg for, at du kører det på en Raspberry Pi 4B eller 400 med så meget hukommelse, virtuel hukommelse, og SSD-plads tilgængelig som muligt. Et SD-kort vil ikke skære det, og en sag med ordentlig køling er et must.
Vi kommer til at bruge 7 milliarder parametermodellen, så besøg denne LLamA GitHub tråd, og download 7B torrent ved hjælp af en klient såsom qBittorrent eller Aria.
Klon llama.cpp-lageret og brug derefter cd kommando for at flytte ind i den nye mappe:
git klon https://github.com/ggerganov/llama.cpp
cdlama.cpp
Hvis du ikke har en compiler installeret, skal du installere en nu med:
sudo apt-få installer g++
Kompiler nu projektet med denne kommando:
lave
Der er en chance for, at llama.cpp mislykkes med at kompilere, og du vil se en masse fejlmeddelelser relateret til "vdotq_s32". Hvis dette sker, skal du fortryde en commit. Indstil først din lokale git-bruger:
git config bruger.navn "david"
Nu kan du fortryde en tidligere commit:
git vende tilbage til 84d9015
En git commit-besked åbnes i nano-teksteditoren. Trykke Ctrl + O at spare, så Ctrl + X for at afslutte nano. llama.cpp skulle nu kompilere uden fejl, når du indtaster:
lave
Du skal oprette en mappe for de vægtede modeller, du har tænkt dig at bruge:
mkdir modeller
Overfør nu de vægtede modeller fra LLaMa vejviser:
mv ~/Downloads/LLaMA/* ~/llama.cpp/models/
Sørg for, at du har Python 3 installeret på din Pi, og installer llama.cpp-afhængighederne:
python3 -m pip installere fakkel numpy sætningsstykke
NumPy-versionen kan forårsage problemer. Opgrader det:
pip installere nusset --opgradering
Konverter nu 7B-modellen til ggml FP16-format:
python3 convert-pth-to-ggml.py models/7B/ 1
Det forrige trin er ekstremt hukommelsesintensivt og bruger efter vores beregning mindst 16 GB RAM. Den er også super langsom og tilbøjelig til at fejle.
Du får bedre resultater ved at følge disse instruktioner parallelt på en stationær pc og derefter kopiere filen /models/7B/ggml-model-q4_0.bin til det samme sted på din Raspberry Pi.
Kvantiser modellen til 4 bit:
./quantize.sh 7B
Det er det. LLaMA LLM er nu installeret på din Raspberry Pi og klar til brug!
Brug af llama.cpp på Raspberry Pi
For at komme i gang med llama.cpp skal du sørge for, at du er i projektbiblioteket og indtaste følgende kommando:
./main -m ./models/7B/ggml-model-q4_0.bin -t 4 -n 128 -s "Hvad er Linux-kernen?"
Det -m muligheden er at dirigere llama.cpp til den model, du vil have den til at bruge; -t angiver antallet af tråde, du ønsker at bruge; -n er antallet af tokens at forudsige; -s er din prompt. Du kan tilpasse enhver og alle disse variabler.
Sæt dig til rette i en lang ventetid, for selvom Raspberry Pi er fremragende til, hvad den gør, var den ikke designet til denne form for CPU-aktivitet. I vores eksempelprompt opdelte lama teksten i otte individuelle tokens, før de gav følgende svar:
Linux Kernel, i en nøddeskal, er altid blevet omtalt som et operativsystem. Det betragtes dog ikke rigtig som en, da de fleste af dens funktioner er det til alle praktiske formål eksponeret gennem API'er og hjælpeprogrammer, som kan bruges af ethvert andet OS, der ønsker (eller har brug for) adgang til disse API(er). For så vidt angår selve Linux Kernel er der ikke meget at gøre med den faktiske kerne. Det vil bare starte, modtage konfigurationsparametre fra din bootloader/initrd efter eget valg, derefter få det i gang på noget hardware, og du går om hvad forretning, det indebærer på dette tidspunkt
Selvom dette var et ret sammenhængende svar, resulterede et andet forsøg i noget, der lignede groft hakket ordsalat:
De fleste af jer har sikkert hørt om det, men ved ikke rigtig, hvad de taler om. Vi vil diskutere dette i detaljer, fordi at forstå dem fuldt ud hjælper os til at bruge vores computere mere effektivt og også træffe bedre beslutninger, når du køber ny hardware eller software til dine pc'er derhjemme, på kontoret etc.. Linux-kernen er rygraden i de fleste operativsystemer, der kører på et computersystem såsom android, som er et open source-operativsystem baseret delvist fra denne kerne. Men hvad mener de præcist med at sige linux kernal?
Linus Torvalds har skrevet sine tanker ned (Viden)
Det er værd at nævne på dette tidspunkt, at hver af disse svar tog tæt på to timer at producere, og alle fire CPU-kerner fungerede 100 % hele vejen igennem. Arbejdet med projektet går dog hurtigt, og du kan forvente, at kommende ARM-optimeringer vil bringe tiden ned.
Du kan også simulere hele samtaler med din LLM i stedet for at give den prompter en ad gangen. Tilføjelse af -jeg mulighed vil starte lama i interaktiv tilstand, mens --interaktiv-start vil bede dig om input i starten. For en komplet liste over tilgængelige muligheder, kør:
hoved -h
Vær opmærksom på, at LlaMA ikke har restriktive regler. Det vil til tider være sexistisk, racistisk, homofobisk og meget forkert.
En stor sprogmodel er ingen erstatning for reel viden
At køre Metas LLaMA på Raspberry Pi er sindssygt fedt, og du kan blive fristet til at henvende dig til din virtuelle guru for at få tekniske spørgsmål, livsråd, venskab eller som en rigtig kilde til viden. Lad dig ikke narre. Store sprogmodeller ved ingenting, føler ingenting og forstår ingenting. Hvis du har brug for hjælp til noget, er det bedre at tale med et menneske eller læse noget skrevet af et menneske.
Hvis du mangler tid, kan du hurtiglæse den i din Linux-terminal!