Generative P2P-KI-Plattform
Es gibt Unmengen von Personalcomputern und Homelabs mit viel Rechenleistung, die ungenutzt bleiben. Dieses Projekt zielt darauf ab, einen Marktplatz für Menschen mit Rechenreserven und Menschen mit Bedarf an Rechenleistung zu schaffen. Beachten Sie, dass es sich hierbei nicht um einen Finanzmarktplatz handelt, sondern um ein öffentliches Gut. Ob es durchstartet, ist unklar, aber ich werde in der Zwischenzeit so viel Rechenleistung spenden, wie ich kann, sobald es betriebsbereit ist.
Erstellen Sie eine virtuelle Umgebung:
$ python -m venv env
Abhängig von Ihrer Umgebung müssen Sie möglicherweise python
im obigen Befehl durch python3
ersetzen.
Auf Debian-basierten Distributionen müssen Sie möglicherweise zusätzlich zuerst venv installieren, falls es noch nicht installiert ist:
apt install python3.12-venv
Aktivieren Sie die virtuelle Umgebung:
source env/bin/activate
. e nv S cripts a ctivate
Wenn dieser Befehl nicht funktioniert (z. B. Activate.ps1 cannot be loaded because running scripts is disabled on this system
), müssen Sie möglicherweise den folgenden Befehl in einer Administrator-PowerShell-Sitzung ausführen:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Möglicherweise fehlen Ihnen einige CMAKE-Abhängigkeiten
Unter Debian können Sie Folgendes ausführen
sudo apt-get install build-essential cmake
TODO: Anweisungen für andere gängige Betriebssysteme
Führen Sie dann Folgendes aus:
pip install -r requirements.txt
Wenn Sie auch Ihre GPU (anstelle nur Ihrer CPU) nutzen möchten, befolgen Sie diese plattformspezifischen Anweisungen.
Dies ist die Ressource, die ich verwendet habe, um die Dinge endlich zum Laufen zu bringen: https://medium.com/@piyushbatra1999/installing-llama-cpp-python-with-nvidia-gpu-acceleration-on-windows-a-short-guide-0dfac475002d
Zusammenfassend:
Voraussetzungen
Die nächsten Schritte müssen in derselben virtuellen Umgebung ausgeführt werden, die Sie oben eingerichtet haben. Unten links in Ihrem Terminal sehen Sie so etwas wie (env) (trifft möglicherweise nicht auf allen Plattformen in allen Terminals zu).
Dadurch wird das Lama-CPP-Python ersetzt, das Sie über pip install -r requirements.txt
installiert haben, und es wird angewiesen, cuBLAS zu verwenden.
wenn Sie die Eingabeaufforderung verwenden
set CMAKE_ARGS=-DLLAMA_CUBLAS=on
set FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
wenn Sie Powershell verwenden
$env:CMAKE_ARGS = "-DLLAMA_CUBLAS=on"
$env:FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
Wenn Sie als nächstes server.py
ausführen, sehen Sie BLAS = 1
in einer Zeilensammlung, die wie folgt aussieht:
AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 |
Dies zeigt an, dass server.py
korrekt auf Ihre GPU-Ressourcen zugreifen kann.
llama_cpp_python wird wie folgt initialisiert:
llm = Llama (
model_path = model_path ,
n_gpu_layers = - 1 ,
n_ctx = 8192 ,
chat_format = "llama-3"
)
n_gpu_layers
weist Lama an, so viele Ihrer GPU-Ressourcen wie möglich zu nutzen.
TODO
TODO
Sie benötigen eine Möglichkeit, zwischen Terminal-Registerkarten zu wechseln (z. B. tmux, VS-Code-Terminal-Registerkarten).
Starten Sie das Relay, das unter http://localhost:5000 läuft:
python relay.py
Starten Sie dann in einem separaten Terminal-Tab den Server, der unter http://localhost:3000 läuft:
python server.py
HINWEIS: Beim ersten Start oder wenn die Modelldatei nicht vorhanden ist (derzeit nur Llama 7B Chat GGUF von TheBloke), lädt das Skript das Modell herunter (ca. 4 GB) und speichert es im Verzeichnis models/
in Ihrem Projektverzeichnis unter den gleichen Dateinamen. Dies wird in Zukunft durch Benutzerinteraktion begrenzt, um das Herunterladen großer Dateien ohne die Zustimmung des Benutzers zu verhindern. Schließlich durchsuchen Sie einfach die Modelle und wählen eines aus einer Liste aus.
relay.py
fungiert als Proxy zwischen dem Client (einschließlich, aber nicht beschränkt auf, client.py
dieses Repos) und server.py
und verschleiert die öffentlichen IP-Adressen des jeweils anderen und löst so eine der großen Einschränkungen von P2P-Netzwerken (z. B. für .torrents). In einer zukünftigen Version wird relay.py
dank der Ende-zu-Ende-Verschlüsselung den Inhalt der Konversation zwischen Server und Client nicht mehr sehen. Jeder kann dieses Projekt teilen und Ihr eigenes Relay betreiben, dessen Rechenleistung von verschiedenen server.py
s bereitgestellt wird, die auf verschiedener Consumer-Hardware ausgeführt werden.
Sie können die Dinge mit dem einfachen Befehlszeilen-Client client.py
testen:
python client.py
Geben Sie Ihre Nachricht ein, wenn Sie dazu aufgefordert werden, und drücken Sie die Eingabetaste. All dies geschieht jetzt auf Ihrer lokalen Hardware, dank llama_cpp_python
, einer Bindung für llama.cpp.
Zum Beenden drücken Sie Strg+C/Befehl+C.
Alternativ können Sie http://localhost:5000 in Ihrem Browser aufrufen.
TODO