In diesem spannenden Tutorial dreht sich alles um ein LLM (Large Language Model) wie ChatGPT, das wir auf einem Raspberry Pi 5 zum Leben erwecken. Stell dir vor: Ein preisgünstiger, tragbarer Computer, der so klein ist, dass er in deine Tasche passt, wird zur Schaltzentrale fortschrittlicher Technologie.
Hinweis zum LLM auf Raspberry Pi 5
Aber halt, bevor wir starten: Es gibt da ein paar Dinge, die du wissen solltest. Der Raspberry Pi ist super, aber er hat seine Grenzen – vor allem, wenn es um große Sprachmodelle (LLM) geht. Keine Sorge, wir haben dafür eine Lösung! Wir nutzen einfach eine schlankere Version des Modells, die quantisierten Modelle. Diese sind zwar etwas einfacher gestrickt, mit weniger Parametern und Schichten, aber sie können immer noch eine Menge! So bekommst du fast die ganze Power des Originals, aber passend für unseren kleinen Raspberry Pi. Spannend, oder? Lass uns loslegen!
WARENKORB- Raspberry Pi 5 8GB RPI5
- Raspberry Pi 5 Aktivkühler
- Offizielles Raspberry Pi 5 USB-C PD (Power Delivery) Netzteil 27W PSU
Kühlen mit dem Raspberry Pi Active Cooler
Wenn du deinen Raspberry Pi auch unter Last schön kühl halten möchtest, während er mit einem LLM hantiert, solltest du über die Anschaffung eines Raspberry Pi Active Coolers nachdenken. Dieser aktive Kühler, oder auch Lüfter genannt, ist ein echter Lebensretter für deinen kleinen Computer. Er sorgt dafür, dass die Temperatur auch bei intensiver Nutzung angenehm niedrig bleibt. So kann dein Raspberry Pi auch anspruchsvolle Aufgaben wie das Betreiben großer Sprachmodelle meistern, ohne ins Schwitzen zu kommen. Ein kleines, aber feines Zubehör, das einen großen Unterschied machen kann.
Dieser Mini-Lüfter sorgt dafür, dass der Pi auch bei hohen Belastungen kühl und leise bleibt, was für optimale Leistung und Langlebigkeit entscheidend ist.
Inferenz mit Llama.cpp
Der Goldstandard für lokale Modellinferenz bei LLMs ist LLaMA-cpp, entwickelt von Georgi Gerganov. Keine Abhängigkeiten, keine GPU benötigt, du musst es nur auf einen Modellsnapshot zeigen, den du separat herunterlädst.
Klone das Llama.cpp-Repository
git clone https://github.com/ggerganov/llama.cpp
Als Nächstes navigiere mit dem cd-Befehl zum geklonten Verzeichnis:
cd llama.cpp
Jetzt kompiliere den Code mit dem make-Befehl:
make
Ich habe das quantisierte Microsoft phi-2 Modellgewicht aus dem Hugging Face-Repository heruntergeladen. Phi-2 ist eine ausgezeichnete Wahl für die Ausführung von LLM-Aufgaben auf dem Raspberry Pi. Achte darauf, genügend Speicherplatz zu haben, wenn du die größeren Modelle ausführst. Um Fehler zu vermeiden, lade bitte nur die .gguf Modell-Dateien herunter, bevor du den Modus ausführst.
Führe den folgenden Befehl aus, um es zu starten:
./main -m ./phi-2.Q4_K_M.gguf --color \
-c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -i --n-predict -2 \
-p "bitte sag mir, wer Robert Oppenheimer ist:"
<pre> Wenn es ordnungsgemäß funktioniert, wird folgender Hinweis angezeigt.
Robert Oppenheimer war ein amerikanischer theoretischer Physiker, am besten bekannt für seine Arbeit am Manhattan-Projekt während des Zweiten Weltkriegs. Er war auch Professor an der University of California, Berkeley, und spielte eine Schlüsselrolle in der Entwicklung der Atombombe. <br>> <br>llama_print_timings: Ladezeit = 736,10 ms<br>llama_print_timings: Beispielzeit = 152,55 ms / 53 Durchläufe (2,88 ms pro Token, 347,43 Tokens pro Sekunde)<br>llama_print_timings: Auswertungszeit für den Prompt = 1605,74 ms / 20 Tokens (80,29 ms pro Token, 12,46 Tokens pro Sekunde)<br>llama_print_timings: Auswertungszeit = 10321,61 ms / 53 Durchläufe (194,75 ms pro Token, 5,13 Tokens pro Sekunde)<br>llama_print_timings: Gesamtzeit = 56993,36 ms / 73 Tokens<br>
Das Resultat ist 5 tokens/sec.
LLaMA-cpp unterstützt verschiedene LLMs, einschließlich Mistral 7B Instruct v0.2. Ersetze ‘./path/to/model.gguf’ durch den tatsächlichen Pfad zu Ihrer heruntergeladenen Modelldatei.
./main -m ./mistral-7b-instruct-v0.2.Q4_K_M.gguf --color \<br>-c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -i --n-predict -2 \<br>-p "please tell me who is robert oppenheimer:"
Beispielausgabe mit Mistral 7B Instruct v0.2:
please tell me who is robert oppenheimer: Robert Oppenheimer (April 22, 1904 – February 18, 1967) was an American physicist and leader in the development of the atomic bomb during World War II. He is often referred to as the "Father of the Atomic Bomb" for his role in managing the Los Alamos Laboratory where the weapon was designed and built. After the war, he became a leading scientific advisor to the US government on nuclear weapons and international disarmament. However, his security clearance was revoked after allegations of Communist ties, ending his career in science.<br>llama_print_timings: load time = 741.32 ms<br>llama_print_timings: sample time = 32.26 ms / 131 runs ( 0.25 ms per token, 4060.88 tokens per second)<br>llama_print_timings: prompt eval time = 2105.43 ms / 12 tokens ( 175.45 ms per token, 5.70 tokens per second)<br>llama_print_timings: eval time = 56629.44 ms / 131 runs ( 432.29 ms per token, 2.31 tokens per second)<br>llama_print_timings: total time = 114989.98 ms / 143 tokens
Resultat in 2 tokens/sec.
Inferenz mit Ollama
Ollama bietet dir eine benutzerfreundlichere Möglichkeit, LLMs auf deinem lokalen Rechner zum Laufen zu bringen. Um zu starten, lade das Ollama-CLI herunter und installiere es mit dem folgenden Befehl.
curl https://ollama.ai/install.sh | sh
Die Ausgabe wird wie folgt sein:
% Gesamt % Erhalten % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktuell
Dload Upload Gesamt Verbraucht Verbleibend Geschwindigkeit
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0>>> Herunterladen von ollama...
100 8422 0 8422 0 0 13497 0 --:--:-- --:--:-- --:--:-- 13518
######################################################################## 100.0%######################################################################### 100.0%
>>> Installation von ollama in /usr/local/bin...
>>> Erstellen des Ollama-Benutzers...
>>> Hinzufügen des Ollama-Benutzers zur Render-Gruppe...
>>> Hinzufügen des aktuellen Benutzers zur Ollama-Gruppe...
>>> Erstellen des Ollama-Systemd-Dienstes...
>>> Aktivieren und Starten des Ollama-Dienstes...
Erstellter Symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> Die Ollama-API ist jetzt unter 0.0.0.0:11434 verfügbar.
>>> Installation abgeschlossen. Führe "ollama" von der Kommandozeile aus.
WARNUNG: Keine NVIDIA-GPU erkannt. Ollama wird im Nur-CPU-Modus laufen.
Wenn keine GPU erkannt wird, läuft Ollama im Nur-CPU-Modus, was die Geschwindigkeit beeinträchtigen kann.
Wenn keine GPU erkannt wird, wird Ollama im CPU-Modus ausgeführt, was sich auf die Geschwindigkeit auswirken kann.
Dann führe den folgenden Befehl aus, um Microsoft Phi-2 herunterzuladen und zu starten:
ollama run phi --verbose
Du solltest eine ähnliche Ausgabe wie die folgende sehen:
Ziehe Manifest …<br>
Ziehe 04778965089b… 100% ▕████████████████▏ 1.6 GB <br>
Ziehe 7908abcab772… 100% ▕████████████████▏ 1.0 KB <br>
Ziehe 774a15e6f1e5… 100% ▕████████████████▏ 77 B <br>
Ziehe 3188becd6bae… 100% ▕████████████████▏ 132 B <br>
Ziehe 0b8127ddf5ee… 100% ▕████████████████▏ 42 B <br>
Ziehe 4ce4b16d33a3… 100% ▕████████████████▏ 555 B <br>
Überprüfe sha256-Digest <br>
Schreibe Manifest <br>
Entferne nicht benötigte Schichten <br>
Erfolg
Bitte sag mir, wer Robert Oppenheimer ist<br>
Robert Oppenheimer war ein renommierter Physiker, Akademiker und Militärwissenschaftler, der eine <br>
Schlüsselrolle in der Entwicklung der Atombombe während des Zweiten Weltkriegs spielte. Er ist weithin bekannt für seine <br>
Arbeit am Manhattan-Projekt, wo er als Direktor des Los Alamos National <br>
Laboratory diente. Nach dem Krieg engagierte er sich in der wissenschaftlichen Gemeinschaft und war maßgeblich <br>
an der Schaffung des Gebiets der Kernphysik beteiligt. Oppenheimers Forschung trug wesentlich dazu bei, <br>
unser Verständnis des Atoms und seiner potenziellen Anwendungen, einschließlich Kernenergie und <br>
Medizin, zu verbessern.
Gesamtdauer: 25.58233235s<br>
Ladedauer: 606.444µs<br>
Auswertungsdauer der Aufforder
Dies wird das Modell herunterladen und Informationen zum Fortschritt des Downloads anzeigen. Anschließend kannst du mit dem Modell interagieren, indem du Eingabeaufforderungen “eingeben” und “Antworten” erhältst.
Diesen Befehl kannst du auch für das Mistral-Modell ausführen:
ollama run mistral --verbose
Folgenden Output wirst du erhalten
Robert Oppenheimer was an American theoretical physicist and professor of physics at the <br>University of California, Berkeley. He is best known for his role in the Manhattan Project <br>during World War II, where he led the team that designed and built the atomic bombs used by the <br>United States against the cities of Hiroshima and Nagasaki. The development of the atomic bomb <br>is considered to be one of the greatest scientific achievements of the 20th century. After the <br>war, Oppenheimer became the first director of the Los Alamos National Laboratory in New Mexico <br>and later served as the chairman of the General Advisory Committee of the United States Atomic <br>Energy Commission. In the late 1940s and early 1950s, however, Oppenheimer fell out of favor <br>with the U.S. government due to his political views and was eventually stripped of his security <br>clearance. He continued to work in physics but was never able to regain the prominence he had <br>enjoyed before.<br><br>total duration: 2m8.905908665s<br>load duration: 504.04µs<br>prompt eval count: 20 token(s)<br>prompt eval duration: 10.248923s<br>prompt eval rate: 1.95 tokens/s<br>eval count: 207 token(s)<br>eval duration: 1m58.655013s<br>eval rate: 1.74 tokens/s
Beachte, dass größere Modelle normalerweise langsamere Ausgabezeiten haben. Zum Beispiel generiert Phi-2 (2,7 Milliarden Parameter) etwa 4 Tokens pro Sekunde, während Mistral (7 Milliarden Parameter) etwa 2 Tokens pro Sekunde erzeugt.
Abschluss und Ausblick
Wir sind nun am Ende unseres spannenden Abenteuers angelangt, in dem wir gelernt haben, wie man ein ChatGPT-ähnliches großes Sprachmodell auf dem Raspberry Pi 5 betreibt. Ich hoffe, dieser Leitfaden war hilfreich und inspirierend für dich. Mit ein wenig Geduld und Kreativität hast du gesehen, dass selbst ein kleiner Raspberry Pi mächtige LLMs handhaben kann.
Ob du nun eigene Projekte umsetzt, mit Sprachmodellen experimentierst oder einfach nur Spaß an der Technik hast – die Möglichkeiten sind nahezu grenzenlos. Denke immer daran, dass das Lernen und Experimentieren mit neuen Technologien ein fortlaufender Prozess ist. Bleib neugierig, probiere Neues aus und vor allem: Hab Spaß dabei!
Shakhizat Nurgaliyev
Wir sind begeistert, dir heute einen spannenden Artikel präsentieren zu können, der uns von Shakhizat Nurgaliyev zur Verfügung gestellt wurde. Shakhizat ist ein leidenschaftlicher Entwicklungsingenieur für eingebettete Systeme mit einer beeindruckenden Expertise in den Bereichen Robotik und Internet der Dinge (IoT). Seine Spezialisierung liegt in der Entwicklung autonomer und intelligenter Systeme, die maschinelles Lernen nutzen, um auf ihre Umgebung zu reagieren. Von der Konzeption bis zur Programmierung bringt er umfangreiche Erfahrung mit, die maßgeblich zur Weiterentwicklung von Robotik und IoT beiträgt.
In seinem Artikel wird Shakhizat uns Einblicke in die faszinierende Welt des Betreibens von ChatGPT-ähnlichen Sprachmodellen auf einem Raspberry Pi 5 geben. Dieses DIY-Projekt, das die Grenzen der Technologie auslotet, zeigt uns, wie wir fortschrittliche Sprachmodelle in einer handlichen und erschwinglichen Form nutzen können. Es ist eine großartige Gelegenheit, von einem Experten auf diesem Gebiet zu lernen und in die Welt der kreativen Technologie einzutauchen.
Wie verhält sich das Setup auf einem Pi4? Funktioniert es dort ebenfalls?
Hallo Marco,
vielen Dank für dein Interesse an diesem spannenden Thema! Die Umsetzung eines ähnlichen Projekts auf einem Raspberry Pi 4 stellt in der Tat eine Herausforderung dar, da er im Vergleich zum Raspberry Pi 5 über weniger Rechenleistung und Arbeitsspeicher verfügt. Dies könnte die Effizienz bei der Ausführung rechenintensiver Modelle wie GPT-3 oder GPT-4 beeinträchtigen, die normalerweise leistungsfähigere Hardware erfordern, besonders für Echtzeit-Interaktionen.
Es gibt allerdings kleinere oder vereinfachte Versionen dieser großen Sprachmodelle, die eventuell auf einem Raspberry Pi 4 laufen könnten. Dabei solltest du jedoch beachten, dass dies möglicherweise zu Einschränkungen in der Antwortqualität und -geschwindigkeit führen kann. Eine weitere Möglichkeit wäre, den Raspberry Pi 4 als eine Art Schnittstelle zu nutzen, die Anfragen an einen stärkeren Server weiterleitet, auf dem das Modell tatsächlich läuft.
Ich werde unseren Experten Shakhizat kontaktieren, um zu erfahren, ob er ein ähnliches Projekt mit dem Raspberry Pi 4 durchgeführt hat, und werde die Informationen dann hier teilen. Falls du selbst Erfahrungen mit dem Raspberry Pi 4 und Sprachmodellen sammelst, würden wir uns sehr freuen, davon zu hören!
Viel Erfolg und Spaß bei deinem Projekt!
Beste Grüße