Bautagebuch | Construction Diary ... Build a DIY Low Budget Ai-Home-Server and Run LLM's Locally
by _-_kowabunga_-_ in Circuits > Raspberry Pi
78 Views, 2 Favorites, 0 Comments
Bautagebuch | Construction Diary ... Build a DIY Low Budget Ai-Home-Server and Run LLM's Locally

diy build - low budget ai home server, run LLM's locally on Raspberry 5 8GB with second hand Radeon rx 580 8GB GPU over the pcie bus with NVMe dual SSD shiel adapter and a pcie 1x to 16x Riser Card with M.2 to pcie x1 NGFF slot adapter.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Disclaimer:
Die Zusammenstellung der Informationen in diesem Artikel wurde von mir mit größtmöglicher Sorgfalt vorgenommen.
Dennoch kann keinerlei Gewähr für Aktualität, Korrektheit, Vollständigkeit oder Qualität der bereit gestellten Informationen und Daten übernommen werden.
Haftungsansprüche gegen mich oder die Autoren bzw. Verantwortlichen dieser Website für Schäden materieller oder immaterieller Art, die auf ggf. fehlerhaften oder unvollständigen Informationen und Daten beruhen, sind, soweit nicht Vorsatz oder grobe Fahrlässigkeit vorliegt, ausgeschlossen.
Diesr Artikel enthält Links zu Webseiten Dritter, die von anderen unterhalten werden. Diese Links sind rein für Ihren gefälligen Gebrauch zur Verfügung gestellt und stellen keine Billigung des Inhalts auf diesen genannten Seiten seitens von mir dar.
Ich bin für den Inhalt dieser Links nicht verantwortlich und stehen auch nicht für den Inhalt und die Genauigkeit des Materials auf den Webseiten Dritter ein.
Wenn Sie sich für einen Zugriff auf diese Links zu den Webseiten Dritter entscheiden, tun Sie dies auf eigene Verantwortung.
Mit freundlichen Grüßen
Supplies
Quellenangabe:
Jeff Geerling
https://www.youtube.com/@JeffGeerling
James Mackenzie
https://www.youtube.com/@jamesfmackenzie
GitHub_Repsitory von Core Forges
https://github.com/Coreforge/linux.git
Blog Postings and Hardware Link:
+++LLMs accelerated with eGPU on a Raspberry Pi 5 (Jeff Geerling)+++
https://www.jeffgeerling.com/blog/2024/llms-accelerated-egpu-on-raspberry-pi-5
Use an External GPU on Raspberry Pi 5 for 4K Gaming (Jeff Geerling)
https://www.jeffgeerling.com/blog/2024/use-external-gpu-on-raspberry-pi-5-4k-gaming
Llama Benchmarking issue
https://github.com/geerlingguy/ollama-benchmark?tab=readme-ov-file
AMD not supporting ROCm on Arm
https://github.com/ROCm/ROCm/issues/3960
Raspberry Pi PCIe Database
https://pipci.jeffgeerling.com
X1005 NVMe dual SSD Shield
https://wiki.geekworm.com/X1005
Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5
https://blog.berrybase.de/raspberry-pi-5-grafikkarte-linux-kernel-kompilieren/
MZHOU PCI-E 1X to 16X VER010-X Riser Card mit M.2 to PCI-E X1 NGFF Slot Adapter für Bitcoin Cryptocurrency Mining Ethernet Mining
https://mzhou.com/product-category/pci-e-expansion-card/
Waveshare Micro HDMI to HDMI Multifunctional Adapter
https://www.waveshare.com/pi5-connector-adapter.htm
KIOXIA 64GB Micro Sd Card
https://europe.kioxia.com/de-de/personal/micro-sd/exceria.html
GeeekPi N07 M.2 PCIe to NVMe Bottom SSD Pip PCIe Peripheral Board for Raspberry Pi 5
Hardware and purchase price:
based on Februar 2025
Rasperrey 5 8GB (Semaf.at EUR 87,85)
Radeon RX 580 8GB GPU (refurbed, second Hand Price EUR 70-80)
Geekworm X1005 NVMe dual SSD Shield (Amazon EUR 39,32)
MZHOU PCI-E 1X to 16X VER010-X Riser (Amazon EUR 11,09)
Cooler Master Silent PRO 600W (refurbed, second Hand Price EUR 30-40)
KIOXIA 64GB Micro Sd Card (Semaf.at EUR 6,00)
Optional:
Waveshare Micro HDMI to HDMI Multifunctional Adapter (Amazon EUR 13,10 )
QIVYNSRY M.2 Kühlkörper NVME 2280 (optional Amazon EUR 10,07)
Samsung 980 PRO NVMe M.2 SSD, 1 TB (Amazon EUR 91,75)
Yunseity DIY ITX Computer Open Air Gehäuse (Amazon EUR 43,72)
GeeekPi N07 M.2 PCIe to NVMe Bottom SSD Pip PCIe Peripheral Board (Amazon EUR 15,97)
RPI Software Update
Stellen Sie zunächst sicher, dass auf Ihrem Raspberry Pi die neueste Software ausgeführt wird.
Führen Sie den folgenden Befehl aus, um das Update durchzuführen:
Stellen Sie als Nächstes sicher, dass Ihre Raspberry Pi-Firmware auf dem neuesten Stand ist .
Führen Sie den folgenden Befehl aus, um zu sehen, welche Firmware Sie ausführen:
Wenn der 6. Dezember 2023 oder ein späteres Datum angezeigt wird, fahren Sie mit dem nächsten Schritt fort.
Wenn Sie ein Datum vor dem 6. Dezember 2023 sehen, führen Sie den folgenden Befehl aus, um die Raspberry Pi-Konfigurations-CLI zu öffnen:
Unter Advanced Options > Bootloader Versionwählen Latest.
Beenden Sie dann raspi-config mit Finish oder die Esc-Taste .
Führen Sie den folgenden Befehl aus, um Ihre Firmware auf die neueste Version zu aktualisieren:
Starten Sie dann neu mit:
Informationen PCI-Bus

Der Linux-Befehl lspci (list PCI) zeigt Informationen zu jedem PCI-Bus auf Ihrem System an.
Dazu gehören Informationen über die an das PCI-Subsystem angeschlossenen Geräte.
schauen Sie mit sudo nano ob die Zeile [all] dtoverlay=pciex1_=3 paqsst.
mit Ctrl+X beenden
AMD Treiber Und Kernel Neu Kompilieren.



Kernel-Quellcode aus dem GitHub_Repsitory von Core Forges
Wechseln sie in das Verzeichnis linux
Holen Sie die Kopie der optimierten Mem-Kopierbibliothek von CoreForges und Speichern Sie sie unter /Linux
Anm.: die Datei memcpy_unaligned.c befindet sich jetzt im Ordner ~/linux
Führen Sie den Befehl aus:
und fügen sie in die erste Zeile den Eintrag ein.
Anm.: Um eine Datei mit nano wieder zu speichern, hier folgende Anweisung:
. Drücken Sie Strg+O.
. Eine"WriteOut"-Meldung wird im Terminal angezeigt.
. Drücken Sie Enter, um die Datei zu speichern.
. Wenn Sie den Editor verlassen wollen, drücken Sie Strg+X.
Installieren der benötigten Pakete (Install Required Packages) mit:
Wir verwenden den Kernel_2712
Anm.:
menuconfig ist ein Tool, das Benutzer:innen bei der Konfiguration des Linux-Kernels vor dem Erstellen unterstützt. Ein notwendiger Schritt, der zum Kompilieren des Quellcodes erforderlich ist. make menuconfig, erzeugt eine menügesteuerten Benutzeroberfläche , die es dem Benutzer ermöglicht, auszuwählen, welche Funktionen und Module kompiliert werden sollen.
Quelle: https://en.wikipedia.org/wiki/Menuconfig
Folgende Einstellungen sind vorzunehmen:
1. Kernel Features > Page Size > 4 KB (for Box86 compatibility)
2. Kernel Features > Kernel support for 32-bit EL0 > Fix up misaligned multi-word loads and stores in user space
3. Kernel Features > Fix up misaligned loads and stores from userspace for 64bit code
4. Device Drivers > Graphics support > AMD GPU (optionally SI/CIK support too)
5. Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Force Architecture can write-combine memory
danach OK und Exit
Mit nachfolgendem Befehl startet die Kompilierung des Kernes
WARTEN --- Kernel wird kompiliert
Anmerkung: auf dem Raspi 5 dauert es ca. 1 Std.
Module & AMD Grafik Firmware Installieren
Wenn die Kompilierung abgeschlossen ist müssen die Module noch installiert werden
danach
Jetzt noch die Grafik Firmware installieren
Es sollte wenn alles gut geht folgende Meldung im cli erscheinen
jetzt noch ….NEUSTART
Schauen sie mit lspci nach ob die GPU erkannt wurde.
der Eintrag sollte folgendes beinhalten:
Installation Von Llama.cpp Mit Vulkanunterstützung
Quelle:
AMD Radeon PRO W7700 running on Raspberry Pi
https://www.jeffgeerling.com/blog/2024/amd-radeon-pro-w7700-running-on-raspberry-pi
zuerst müssen die Vulkan SDK zum kompilieren des llama Kernels geladen werden.
Danach klonen wir llama3.2:3b und wechseln in den llama.cpp Ordner
Jetzt erstellen wir den llama-Kernel mit Vulkan Unterstützung
Jetzt können Sie ein Modell z.B. von HuggingFace herunterladen und zu testen ob llama.cpp die GPU verwendet.
diese spechern wir im llama.cpp Ornder in den Unterordner models
Um den llama Server zu starten verwenden sie folgenden Befehl:
ein Beispiel für den möglichen Output:
Sie können auch die GPU-Statistik mit Tools wie nvtop oder amdgpu_top nutzen, Details dazu im Abschnitt Tools
Llama.cpp HTTP-Server + Einfache WebUI
Minimalistische Lösung, die direkt mit der Vulkan-kompilierten llama.cpp funktioniert.
Starte den integrierten HTTP-Server:
Nutze das llama WebUI im Browser
STOPPE den llama Server mit
Hier ist noch die Erklärung des Befehls llama.cpp mit den Parametern (Quelle deepseek):
"./main -m model.gguf -n 512 --temp 0.7 --n-gpu-layers 28 -t 8 --mlock"
Bedeutung der Parameter
- -n 512 (Antwortlänge):
- Das Modell generiert bis zu 512 Token (≈ 400 Wörter).
- Stoppt früher, wenn ein End-of-Sequence-Token (</s>) erscheint.
- --temp 0.7 (Kreativität):
- 0.7: Ausgewogener Modus (leicht kreativ, aber fokussiert).
- Beispiel:
- --temp 0.3: Faktenbasierte Antworten (gut für Code/Mathe).
- --temp 1.2: Kreative Geschichten/offene Dialoge.
- --n-gpu-layers 28 (GPU-Beschleunigung):
- Beschleunigt die Berechnung der ersten 28 Schichten auf der GPU.
- Wichtig: Die maximale Layer-Anzahl hängt vom VRAM der GPU ab:
- RX 580 (8 GB): ~20–25 Layers für ein 7B-Modell.
- RTX 4090 (24 GB): 40+ Layers.
- -t 8 (CPU-Threads):
- Optimal, wenn die CPU 8 physische Kerne hat (z. B. Ryzen 7 5800X).
- Auf einem Raspberry Pi 5 (8 Kerne): -t 8 ist sinnvoll.
- --mlock (RAM-Optimierung):
- Verhindert, dass das Betriebssystem Teile des Modells auf die Festplatte auslagert.
- Voraussetzung: Ausreichend RAM (z. B. 16 GB für ein 7B-Modell).
Llm Benchmark Und Einstellungen
erster Test 07.02.2025 (mistral-7b-instruct-v0.1.Q4_K_M)*
'noch mit einem Geekworm X1005 Dual NVMe SSD Shield, Slot1=NVME 1TB, Slot2=PCI-E 1X to 16X VER010-X Riser Card
ENTFERNT wurde "--flash-attn 1 " war die Bremse;). nur für NVIDA GPU, Versuch nach Optimierung mit:
"--threads 4 --n-gpu-layers 31 -b 512 -pg 256,128"
Important Tools



Installing and Using Neofetch
Startbefehl im Linux command line Terminal
Installing and Using NVTOP
Quelle: https://github.com/Syllo/nvtop
Startbefehl im Linux command line Terminal
Install and using htop (CPU Auslastung)
Quelle: https://htop.dev/
Startbefehl im Linux command line Terminal
Installing and Using RadeonTOP
Quelle: https://github.com/clbr/radeontop
Build options
Build options can be specified to having the following variables being set to "1"
Example:
This will build radeontop with amdgpu reporting and xcb support.
Updates

update 2025.02.09
das Geekworm X1005 Dual NVMe SSD Shield könnte der Flaschenhals sein, unterstützt nur Gen2, werde einen Versuch mit dem GeeekPi N07 M.2 PCIe to NVMe HAT unternehmen, ein booten ist dann nur noch über den sd slot oder USB 3.0 Port möglich.
update 2025.02.12
der GeeekPi N07 M.2 PCIe to NVMe (Single) HAT brachte keine Verbesserung der t/s Leistung, der PCIe Bus ist es also auch nicht. Der GeeekPi N07 sollte eigentlich den PCIe Bus zur MZHOU PCI-E 1X to 16X Riser nur durchschleifen und das mit PCIe3.0 Geschwindigkeit.
Nach stundenlangen Chats mit ChatGPT und Deepseek brachte der Eintrag in der amdgpu.conf starke Verbesserungen :
Und noch die GPU-Power-Tweaks aktiviert:
Benchmark-Ergebnisse:
TestGeschwindigkeit (Tokens/Sekunde)
pp512 - 145.47 t/s | tg128 - 23.52 t/s | pp256+tg128 - 51.06 t/s
nächste Schritte:
Sobald erhältlich der "Seeed Studio PCIe 3.0 to Dual M.2 HAT+".
(Spezifikationen: Unterstützte SBCs – Raspberry Pi 5 und möglicherweise andere SBCs mit einem PCIe FFC-Anschluss wie das Kakip-Board.
2x M.2 M-PCIe-Steckplätze mit PCIe 3.0 x1, die M.2 2230-, 2242-, 2260-, 2280-Module unterstützen (SSD, KI-Beschleuniger usw.)
PCIe-Switch – ASMedia ASM2806 PCIe 3.0-Switch-Chip mit PCIe Gen3 x2 Upstream (hier nur x1 verwendet) und vier PCIe 3.1-Lanes Downstream (hier nur zwei verwendet) für 8GT/s kombinierte Bandbreite