Das lokale Ausführen von Open-Source-KI-Modellen auf unseren eigenen Computern gibt uns Privatsphäre, endlose Möglichkeiten zum Basteln und Freiheit von großen Unternehmen. Es geht fast um freie Meinungsäußerung.
Für uns GPU-arme Menschen scheint der Besitz eines eigenen KI-Computers jedoch ein kostspieliger Traum zu sein.
Was wäre, wenn ich Ihnen sage, dass Sie für 300 US-Dollar einen nützlichen KI-Computer bekommen können? Interessiert? Sie müssen Ihren eigenen Monitor, Ihre eigene Tastatur und Ihre eigene Maus mitbringen. Und Sie müssen ein wenig mit dem Linux-Betriebssystem, den Treibern, der Middleware und den Konfigurationen herumbasteln.
Zur Klarstellung: Es geht hier NICHT um „Training“ oder „Feinabstimmung“ großer generativer KI-Modelle. Wir werden uns auf die Ausführung von Open-Source-LLM (große Sprachmodelle wie z. B
Jetzt machen wir weiter.
Nehmen wir an, einer der Hauptanwendungsfälle für einen Heim-KI-Computer ist der Betrieb
Für eine schnellere Inferenzgeschwindigkeit benötigen Sie jedoch Folgendes. Andernfalls werden Sie so sein, als würden Sie Haare auf Ihrer Handfläche wachsen sehen, während der LLM einen Token nach dem anderen ausspuckt.
Für die Bilderzeugung mit stabiler Diffusion benötigen Sie GPU-Leistung. Allerdings muss man dafür keine besonders schicke GPU haben. Sie können die bereits in Ihren Heimcomputern integrierte GPU nutzen:
Alle Macs mit M1/M2/M3-CPU, die CPU, GPU und Hochgeschwindigkeitsspeicher integriert (sie sind wirklich gut, aber aus Preisgründen von diesem speziellen Artikel ausgeschlossen)
AMD APU (z. B. Ryzen 7 5700U), die CPU und GPU für preisgünstige Mini-PCs integriert. Dies wird der Schwerpunkt dieses Artikels sein.
Intel-CPU (z. B. Core i5-1135G7), die auch CPU und GPU integriert. Sie liegen etwas über dem Budget von 300 US-Dollar für den gesamten Mini-PC, aber Leser können sie gerne auf eigene Faust weiter erkunden.
Ein AMD-basierter Mini-PC mit den folgenden Spezifikationen wird normalerweise für weniger als 300 US-Dollar verkauft. Ich möchte keine bestimmte Marke unterstützen, Sie können also selbst suchen:
Ich habe mich ein bisschen gegönnt und mich für das 400-Dollar-Modell mit 32 GB RAM und 1 TB SSD entschieden (alles andere gleich). Der Hauptgrund ist, dass ich zu Open-Source-LLMs forsche und neben Stable Difusion auch größere Modelle ausführen möchte. Mit dem 300-Dollar-Computer sollten Sie jedoch fast alles in diesem Artikel tun können.
Für AMD-APUs wie die
Sie müssen das je nach Ihrem Hauptanwendungsfall ändern:
Wenn Sie nur die LLM-Inferenz ausführen müssen, können Sie diesen gesamten Vorbereitungsschritt überspringen. Da die LLM-Inferenz nur die CPU beanspruchen muss, sollten Sie den größten Teil des RAM für die CPU einsparen, damit Sie größere LLM-Modelle ausführen können.
Wenn Sie laufen müssen
In meinem Fall möchte ich sowohl Stable Diffusion XL als auch LLM-Inferenz auf demselben Mini-PC ausführen. Daher möchte ich der GPU 16 GB (von insgesamt 32 GB) zuweisen.
Dies können Sie erreichen, indem Sie die Einstellungen im BIOS ändern. Normalerweise gibt es eine Obergrenze, und die Standardeinstellung kann viel niedriger als die Obergrenze sein. Auf meinem Computer lag die Obergrenze bei 16 GB oder der Hälfte des insgesamt verfügbaren RAM.
Wenn das BIOS Ihres Computers solche Einstellungen unterstützt, fahren Sie fort und ändern Sie die gewünschte Zahl. Mein BIOS hat keine solche Einstellung.
Wenn Ihr BIOS diese Einstellung nicht hat, folgen Sie bitte der netten Anleitung „GPU-Speicherzuweisung auf AMD Ryzen™ APU entsperren?“ von Winston Ma. Ich habe es versucht und es hat gut funktioniert, sodass ich jetzt 16 GB VRAM habe.
AMDs
Um AMDs ROCm zu installieren und zum Laufen zu bringen, müssen Sie sicherstellen, dass die Versionen von GPU-Hardware, Linux-Distribution, Kernel, Python, HIP-Treiber, ROCm-Bibliothek und Pytorch kompatibel sind. Wenn Sie den geringsten Schmerz und die größtmögliche Chance auf einen ersten Erfolg wünschen, bleiben Sie bei den empfohlenen und überprüften Kombinationen.
Bitte überprüfen Sie den folgenden Link, um die kompatiblen Linux-Betriebssystem- und Kernel-Versionen zu erhalten und diese zu installieren. Anfangs habe ich den Fehler gemacht, einfach mein Lieblings-Linux-Betriebssystem und den Standard-Linux-Kernel zu installieren, und es war sehr mühsam, rückwärts zu gehen, um Kompatibilitätsprobleme zu lösen. Sie können diesen Schmerz vermeiden, indem Sie einfach die offiziell unterstützten Kombinationen verwenden.
Wenn die gesamte Installation erfolgreich abgeschlossen wurde, können Sie rocminfo
eingeben und es wird etwa Folgendes angezeigt (ich habe nur die relevantesten Teile in Gelb herausgeschnitten):
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
DMAbuf Support: YES
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 7 5800H with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics
Vendor Name: CPU
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16777216(0x1000000) KB
Die Python-Abhängigkeit kann ziemlich knifflig sein, daher empfiehlt es sich, eine geeignete Umgebung einzurichten. Sie können beides verwenden
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
Das Folgende gilt speziell für APUs mit integrierter Grafik. Auch wenn sie von ROCm nicht offiziell unterstützt werden, hat sich Folgendes bewährt.
export HSA_OVERRIDE_GFX_VERSION=9.0.0
Lassen Sie uns nun nach all den komplizierten Schritten testen, ob ROCm mit Torch funktioniert. Und Sie können sehen, dass ROCm „vorgibt“, CUDA für die Zwecke von Pytorch zu sein.
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
Beginnen wir mit etwas Einfachem für unseren neu konfigurierten 300-Dollar-KI-Computer: der lokalen Ausführung eines großen Sprachmodells. Wir können einen der beliebten Open-Source-Modi wählen:
Darüber hinaus können Sie auch kleine LLMs ausprobieren
Wir werden verwenden
Zuerst müssen Sie wget
und git
installieren. Befolgen Sie dann die Schritte zum Kompilieren und Installieren von llama.cpp.
sudo apt-get install build-essential
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
Um die LLMs auf unserem günstigen Rechner statt auf Cloud-Servern mit teuren GPUs auszuführen, müssen wir eine „komprimierte“ Version der Modelle verwenden, damit sie in den RAM-Bereich passen. Als einfaches Beispiel verfügt ein LLaMA-2 7B-Modell über 7B-Parameter, die jeweils durch float16 (2 Bytes) dargestellt werden.
Auch das Dateiformat sollte sein
Zuerst haben wir es auf dem AMD-Mini-PC getestet und dabei etwa 10 Token pro Sekunde erreicht. Das ist eigentlich ganz anständig, und Sie können ohne lange Wartezeiten mit dem LLM chatten.
Systemkonfiguration:
Befehlszeilenanweisung:
./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock
llama_print_timings: load time = 661.10 ms
llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)
llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)
llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)
llama_print_timings: total time = 64114.27 ms
Als nächstes haben wir es auf einem Intel-Mini-PC getestet und dabei etwa 1,5 Token pro Sekunde erreicht. Für eine erfolgreiche Chat-Sitzung ist das etwas zu langsam. Dies ist kein fairer Vergleich, da der Intel N5105 deutlich schwächer ist als der AMD 5800H. Aber das ist der einzige Intel-Mini-PC in meinem Besitz. Wenn Sie die leistungsstärkere Intel-CPU (z. B. Core i5-1135G7) verwenden, sollten Sie vergleichbare Ergebnisse erhalten. Bitte teilen Sie Ihre Ergebnisse unten in den Kommentaren mit.
Systemkonfiguration:
./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock
llama_print_timings: load time = 14490.05 ms
llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)
llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)
llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)
Und achten Sie auch auf diese Seite, wenn es um AMD ROCm geht
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
Test 1
SDXL (maximale Auflösung 1024 x 1024) empfiehlt mindestens 12 GB VRAM, daher müssen Sie auf jeden Fall den Schritt „Vorbereitung 1“ durchführen, um 16 GB VRAM für die iGPU zuzuweisen. Diese Aufgabe ist also nur mit dem 400-Dollar-Mini-PC möglich.
./webui.sh --upcast-sampling
Test 1:
Test 2:
Obwohl sich dieser Artikel auf Linux-Betriebssysteme konzentriert, können Sie Stable Diffusion auch unter Windows zum Laufen bringen. Hier sind meine Experimente:
Test 1:
Haben Sie also Spaß daran, Ihre eigenen generativen KI-Modelle auf Ihrem neuen 300-Dollar-Mini-PC auszuführen? Ich hoffe du tust.
Open-Source-KI-Modelle, die auf persönlichen Geräten laufen, sind einer der spannendsten Bereiche für Bastler, da keiner von uns über den riesigen GPU-Pool verfügt, um tatsächlich ein grundlegendes Modell zu trainieren. Dies wird eine neue Generation von Apps ermöglichen, die sowohl superintelligent sind als auch unsere Privatsphäre schützen.
Was als nächstes?
Und viel Spaß beim Basteln mit KI, Open Source und auf dem Gerät!