Ja, Sie können einen LLM-"AI-Chatbot" auf einem Raspberry Pi ausführen! Folgen Sie einfach diesem Schritt-für-Schritt-Prozess und fragen Sie ihn dann alles.

Große Sprachmodelle, allgemein (und fälschlicherweise) als KIs bekannt, drohen seit Monaten die Verlags-, Kunst- und Rechtswelt auf den Kopf zu stellen. Ein Nachteil ist, dass die Verwendung von LLMs wie ChatGPT bedeutet, ein Konto zu erstellen und den Computer eines anderen die Arbeit erledigen zu lassen. Aber Sie können ein trainiertes LLM auf Ihrem Raspberry Pi ausführen, um Gedichte zu schreiben, Fragen zu beantworten und vieles mehr.

Was ist ein großes Sprachmodell?

Große Sprachmodelle verwenden maschinelle Lernalgorithmen, um Beziehungen und Muster zwischen Wörtern und Sätzen zu finden. Anhand riesiger Datenmengen trainiert, sind sie in der Lage vorherzusagen, welche Wörter statistisch wahrscheinlich als nächstes kommen werden, wenn sie dazu aufgefordert werden.

Wenn Sie Tausende von Menschen fragen würden, wie sie sich heute fühlen, würden die Antworten in etwa lauten: „Mir geht es gut“, „Könnte schlechter sein“, „Okay, aber meine Knie spielen mit“. Das Gespräch würde sich dann in eine andere Richtung drehen. Vielleicht würde die Person dich nach deiner eigenen Gesundheit fragen oder mit „Tut mir leid, ich muss rennen. Ich komme zu spät zur Arbeit".

instagram viewer

Angesichts dieser Daten und der anfänglichen Eingabeaufforderung sollte ein großes Sprachmodell in der Lage sein, eine überzeugende und originelle eigene Antwort zu liefern, basierend auf die Wahrscheinlichkeit, dass ein bestimmtes Wort als nächstes in einer Folge kommt, kombiniert mit einem voreingestellten Grad an Zufälligkeit, Wiederholungsstrafen und anderem Parameter.

Die großen Sprachmodelle, die heute verwendet werden, sind nicht auf Vox Pop von ein paar tausend Leuten trainiert. Stattdessen erhalten sie eine unvorstellbare Menge an Daten, die aus öffentlich zugänglichen Sammlungen, Social-Media-Plattformen, Webseiten, Archiven und gelegentlich benutzerdefinierten Datensätzen stammen.

LLMs werden von menschlichen Forschern trainiert, die bestimmte Muster verstärken und sie an den Algorithmus zurückgeben. Wenn Sie ein großes Sprachmodell fragen: „Was ist die beste Art von Hund?“, kann es Ihnen antworten, dass ein Jack Russell Terrier die beste Art von Hund ist, und Ihnen Gründe dafür nennen.

Aber egal, wie intelligent oder überzeugend und menschlich dumm die Antwort ist, weder das Modell noch die Maschine läuft weiter, hat einen Verstand, und sie sind unfähig, die Frage oder die Worte zu verstehen, aus denen sie bestehen Antwort. Es ist nur Mathematik und eine Menge Daten.

Warum ein großes Sprachmodell auf Raspberry Pi ausführen?

Große Sprachmodelle sind überall und werden von großen Suchunternehmen übernommen, um bei der Beantwortung von Anfragen zu helfen.

Während es verlockend ist, eine Frage in natürlicher Sprache an eine Unternehmens-Blackbox zu werfen, möchten Sie manchmal nach Inspiration suchen oder eine Frage stellen, ohne noch mehr Daten in den Schlund von zu füttern Überwachungskapitalismus.

Als Experimentierboard für Tüftler ist das Einplatinencomputer Raspberry Pi ist philosophisch, wenn auch nicht physisch, für das Unterfangen geeignet.

Im Februar 2023 kündigte Meta (das früher als Facebook bekannte Unternehmen) LLaMA an, ein neues LLM mit Sprachmodellen zwischen 7 Milliarden und 65 Milliarden Parametern. LLaMA wurde mit öffentlich zugänglichen Datensätzen trainiert,

Der LLaMA-Code ist Open Source, was bedeutet, dass jeder ihn verwenden und anpassen kann, und die „Gewichte“ oder Parameter wurden als veröffentlicht Torrents und Magnetlinks in einem Thread zum Projekt GitHub-Seite.

Im März 2023 veröffentlichte Entwickler Georgi Gerganov lama.cpp, das auf einer Vielzahl von Hardware ausgeführt werden kann, einschließlich Raspberry Pi. Der Code wird lokal ausgeführt und es werden keine Daten an Meta gesendet.

Installieren Sie llama.cpp auf dem Raspberry Pi

Es gibt keine veröffentlichten Hardware-Richtlinien für llama.cpp, aber es ist extrem prozessor-, RAM- und speicherhungrig. Stellen Sie sicher, dass Sie es auf einem Raspberry Pi 4B oder 400 mit so viel Speicher ausführen, virtueller Speicher, und verfügbarer SSD-Speicherplatz wie möglich. Eine SD-Karte wird es nicht schneiden, und ein Gehäuse mit ordentlicher Kühlung ist ein Muss.

Wir werden das 7-Milliarden-Parameter-Modell verwenden, also besuchen Sie dies LLamA-GitHub-Thread, und laden Sie den 7B-Torrent mit einem Client wie qBittorrent oder Aria herunter.

Klonen Sie das Repository llama.cpp und verwenden Sie dann die CD Befehl zum Wechseln in das neue Verzeichnis:

git Klon https://github.com/ggerganov/llama.cpp
CDLama.cpp

Wenn Sie keinen Compiler installiert haben, installieren Sie jetzt einen mit:

sudo apt-erhalten g++ installieren

Kompilieren Sie nun das Projekt mit diesem Befehl:

machen

Es besteht die Möglichkeit, dass llama.cpp nicht kompiliert werden kann und Sie eine Reihe von Fehlermeldungen in Bezug auf „vdotq_s32“ sehen. In diesem Fall müssen Sie einen Commit rückgängig machen. Legen Sie zuerst Ihren lokalen Git-Benutzer fest:

git config user.name "David"

Jetzt können Sie einen vorherigen Commit rückgängig machen:

git zurücksetzen 84d9015

Eine Git-Commit-Nachricht wird im Nano-Texteditor geöffnet. Drücken Sie Strg + O dann zu sparen Strg + X Nano beenden. llama.cpp sollte jetzt fehlerfrei kompiliert werden, wenn Sie Folgendes eingeben:

machen

Sie müssen ein Verzeichnis für die gewichteten Modelle erstellen, die Sie verwenden möchten:

mkdir-Modelle

Übertragen Sie nun die gewichteten Modelle aus dem Lama Verzeichnis:

mv ~/Downloads/Lama/* ~/llama.cpp/models/

Stellen Sie sicher, dass Sie Python 3 auf Ihrem Pi installiert haben, und installieren Sie die llama.cpp-Abhängigkeiten:

python3 -m Pip Installieren Fackel numpy Satzstück

Die NumPy-Version kann Probleme verursachen. Aktualisieren Sie es:

Pip Installieren taub --Aktualisierung

Konvertieren Sie nun das 7B-Modell in das ggml FP16-Format:

python3 convert-pth-to-ggml.py models/7B/ 1

Der vorherige Schritt ist extrem speicherintensiv und belegt unserer Einschätzung nach mindestens 16 GB RAM. Es ist auch super langsam und fehleranfällig.

Sie erzielen bessere Ergebnisse, wenn Sie diese Anweisungen parallel auf einem Desktop-PC befolgen und dann die Datei kopieren /models/7B/ggml-model-q4_0.bin an denselben Ort auf Ihrem Raspberry Pi.

Quantisieren Sie das Modell auf 4 Bit:

./quantize.sh 7B

Das ist es. LLaMA LLM ist jetzt auf Ihrem Raspberry Pi installiert und einsatzbereit!

Verwendung von llama.cpp auf Raspberry Pi

Um mit llama.cpp zu beginnen, stellen Sie sicher, dass Sie sich im Projektverzeichnis befinden, und geben Sie den folgenden Befehl ein:

./main -m ./models/7B/ggml-model-q4_0.bin -t 4 -N 128 -P "Was ist der Linux-Kernel?"

Der -M Die Option besteht darin, llama.cpp zu dem Modell zu leiten, das Sie verwenden möchten. -T gibt die Anzahl der Threads an, die Sie verwenden möchten; -N ist die Anzahl der vorherzusagenden Token; -P ist Ihre Aufforderung. Sie können alle diese Variablen anpassen.

Stellen Sie sich auf eine lange Wartezeit ein, denn der Raspberry Pi ist zwar hervorragend in dem, was er tut, aber er wurde nicht für diese Art von CPU-Aktivität entwickelt. In unserem Beispiel-Prompt zerlegte Lama den Text in acht einzelne Tokens, bevor es die folgende Antwort gab:

Der Linux-Kernel wurde, kurz gesagt, immer als Betriebssystem bezeichnet. Es wird jedoch nicht wirklich als eines angesehen, da es für alle praktischen Zwecke die meisten seiner Funktionen sind durch APIs und Dienstprogramme verfügbar gemacht, die von jedem anderen Betriebssystem verwendet werden können, das auf diese zugreifen möchte (oder muss). API(s). Was den Linux-Kernel selbst betrifft, so hat er nicht viel mit dem eigentlichen Kernel zu tun. Es startet einfach, erhält Konfigurationsparameter von Ihrem Bootloader/initrd Ihrer Wahl, bringt es dann auf einer Hardware zum Laufen und Sie machen sich an alles, was an diesem Punkt anfällt

Während dies eine ziemlich kohärente Antwort war, führte ein zweiter Versuch zu etwas, das einem grob gehackten Wortsalat ähnelte:

Die meisten von Ihnen haben wahrscheinlich schon davon gehört, wissen aber nicht wirklich, wovon sie sprechen. Wir werden dies im Detail besprechen, weil es uns hilft, unsere Computer besser zu nutzen, wenn wir sie vollständig verstehen effizienter und treffen Sie auch bessere Entscheidungen beim Kauf neuer Hardware oder Software für Ihre PCs zu Hause oder im Büro usw.. Der Linux-Kernel ist das Rückgrat der meisten Betriebssysteme, die auf einem Computersystem wie Android ausgeführt werden, einem Open-Source-Betriebssystem, das teilweise auf diesem Kernel basiert. Aber was genau meinen sie mit Linux Kernal?

Der Linus Torvalds hat seine Gedanken niedergeschrieben (Wissen)

Es ist an dieser Stelle erwähnenswert, dass jede dieser Antworten fast zwei Stunden in Anspruch nahm und alle vier CPU-Kerne durchgehend mit 100 % arbeiteten. Die Arbeit an dem Projekt schreitet jedoch schnell voran, und Sie können davon ausgehen, dass bevorstehende ARM-Optimierungen die Zeit verkürzen werden.

Sie können auch ganze Gespräche mit Ihrem LLM simulieren, anstatt es einzeln mit Eingabeaufforderungen zu füttern. Hinzufügen der -ich Option startet Lama im interaktiven Modus, während --interactive-start wird Sie zu Beginn um Eingabe bitten. Führen Sie für eine vollständige Liste der verfügbaren Optionen Folgendes aus:

Haupt-h

Beachten Sie, dass LlaMA keine restriktiven Regeln hat. Es wird gelegentlich sexistisch, rassistisch, homophob und sehr falsch sein.

Ein großes Sprachmodell ist kein Ersatz für echtes Wissen

Das Ausführen von Metas LLaMA auf Raspberry Pi ist wahnsinnig cool, und Sie könnten versucht sein, sich bei technischen Fragen, Lebensratschlägen, Freundschaften oder als echte Wissensquelle an Ihren virtuellen Guru zu wenden. Lassen Sie sich nicht täuschen. Große Sprachmodelle wissen nichts, fühlen nichts und verstehen nichts. Wenn Sie bei etwas Hilfe brauchen, ist es besser, mit einem Menschen zu sprechen oder etwas zu lesen, das von einem Menschen geschrieben wurde.

Wenn Sie wenig Zeit haben, können Sie es in Ihrem Linux-Terminal schnell lesen!