- JavaScript 55.5%
- CSS 29.4%
- HTML 15.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| lib | ||
| LICENSES | ||
| public | ||
| .gitignore | ||
| LICENSE | ||
| LLM-Daschboard.png | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
| THIRD_PARTY_NOTICES.md | ||
LLM-Dashboard
Ein browserbasiertes Dashboard für den Betrieb eines lokalen llama.cpp-Servers.
Es bündelt die Auswahl und Steuerung eigener Modell-Startskripte mit einer
Übersicht über Hardwareauslastung, Generierungsleistung und Anfrage-Slots.
So lässt sich während einer Generierung verfolgen, wie stark CPU, RAM und
NVIDIA-GPUs ausgelastet sind und welche Anfragen der Server gerade verarbeitet.
Das Projekt richtet sich an Nutzer, die lokale Sprachmodelle mit llama.cpp
betreiben und deren Betrieb an einer Stelle beobachten möchten. Über die
Schaltfläche Open Web-UI lässt sich die Weboberfläche des Modellservers öffnen.
Funktionen
- Modelle steuern: Eigene Shellskripte aus einer Auswahlliste starten und den Modellserver stoppen. Die Skriptnamen dienen als Modellbezeichnungen.
- Hardware beobachten: CPU-Auslastung, RAM-Belegung und verfügbare CPU-Temperatur sowie Auslastung, VRAM-Belegung und Temperatur pro NVIDIA-GPU.
- Verläufe ansehen: Diagramme für Auslastung, Speicher und Temperatur mit bis zu 30 Messpunkten; Hardwaredaten werden ungefähr einmal pro Sekunde abgefragt.
- Generierungsleistung verfolgen: Tokens pro Sekunde für Generierung und Prompt-Verarbeitung, aktive und wartende Anfragen sowie verfügbare Kennzahlen zum Speculative Decoding. Die letzte Leistungsmessung bleibt während Leerlauf und Verbindungsunterbrechungen sichtbar.
- Slots prüfen: Aktivität und Kontextlimit je Anfrage-Slot sowie verfügbare Prompt-, Cache- und Ausgabetokenzahlen bei aktiven Anfragen.
Aufbau
Das Frontend verwendet HTML, CSS und Vanilla JavaScript; die Diagramme werden mit Chart.js dargestellt. Ein Node.js-Server mit Express stellt das Dashboard bereit, fragt die Llama-API ab und führt die lokalen Startskripte und Hardwareabfragen aus. Schriftarten und Diagrammbibliotheken liegen im Projekt.
| Datei / Ordner | Aufgabe |
|---|---|
server.js |
Webserver, API-Routen, Prozesssteuerung und Hardwareabfragen |
lib/llama-monitor.js |
Aufbereitung von Metriken und Slotdaten |
public/ |
Oberfläche, Diagramme, Styles und Schriftarten |
scripts/ |
Eigene ausführbare Modell-Startskripte |
Voraussetzungen
- Node.js und npm zum Installieren der Abhängigkeiten und Starten des Dashboards.
- Eine lokale Linux-Umgebung mit Bash,
pgrepundpkillfür die Modellsteuerung. - Ein eingerichteter
llama.cpp-Server und passende Modelldateien. Beides wird nicht mitgeliefert; die eigenen Startskripte legen Modell und Serveroptionen fest. - Erreichbare Endpunkte
/slotsund/metricsam Modellserver für Slot- und Leistungsanzeigen. Fehlende Daten werden als nicht verfügbar dargestellt. - Optional
nvidia-smifür NVIDIA-GPU-Metriken undsensorsfür die CPU-Temperatur. Die aktuelle Temperaturabfrage ist aufcoretemp-isa-0000und dessen WertPackage id 0zugeschnitten.
Start
npm ci
npm start
Das Dashboard ist auf Port 3000 erreichbar. Es verwendet standardmäßig die
Llama-API unter http://127.0.0.1:8081. Eine andere Adresse lässt sich über
LLAMA_API_URL konfigurieren.
Öffne anschließend http://<LLM-HOST>:3000 im Browser. Sobald ausführbare
.sh-Dateien im Skriptverzeichnis liegen, erscheinen sie in der Modellauswahl.
Wähle ein Skript und klicke auf START, um den Modellserver zu starten.
Standardausgabe und Fehlerausgabe werden neben dem Skript als
<skript>.out.log und <skript>.err.log gespeichert.
Die Prozesssteuerung ist auf einen Modellserver ausgelegt: Beim Start eines
Modells und beim Stoppen beendet das Dashboard Prozesse, deren Kommandozeile
llama-server enthält. Es verwaltet mehrere Serverinstanzen nicht getrennt.
Der Dashboard-Server lauscht auf allen Netzwerkschnittstellen und besitzt derzeit keine Anmeldung. Er ist für den Betrieb in einer vertrauenswürdigen Umgebung gedacht.
Konfiguration
| Einstellung | Standard | Bedeutung |
|---|---|---|
LLAMA_API_URL |
http://127.0.0.1:8081 |
Basisadresse für Slot- und Metrikabfragen |
LLAMA_SCRIPTS_DIR |
scripts im Projektordner |
Verzeichnis für Modell-Startskripte und deren Logs |
| Dashboard-Port | 3000 |
Derzeit in server.js festgelegt |
Beispiel für eine abweichende API-Adresse:
LLAMA_API_URL="http://127.0.0.1:8082" npm start
Die Schaltfläche Open Web-UI verwendet derzeit unabhängig davon den
Hostnamen der geöffneten Dashboard-Seite mit Port 8081.
Portable Skriptpfade
Startskripte (*.sh) gehören standardmäßig in den Ordner scripts neben
server.js. Der Pfad wird vom Projektordner aus aufgelöst, unabhängig vom
Benutzernamen und vom aktuellen Arbeitsverzeichnis. Persönliche Skripte und Logs werden nicht mitveröffentlicht; eigene ausführbare
Startskripte müssen ergänzt werden. Siehe Skriptanleitung.
Ein anderes Skriptverzeichnis kann beim Start angegeben werden:
LLAMA_SCRIPTS_DIR="$HOME/llama-scripts" npm start
Relative Werte für LLAMA_SCRIPTS_DIR beziehen sich auf den Projektordner.
$HOME wird im Beispiel von der Shell expandiert. Werte aus einer anderen
Konfigurationsquelle müssen bereits aufgelöst sein; JavaScript expandiert
$HOME, $USER und ~ in Pfadstrings nicht automatisch.
Verwende auch in eigenen Shellskripten projektbezogene Pfade oder "$HOME"
anstelle fest eingetragener Benutzernamen. $HOME berücksichtigt den tatsächlichen
Home-Pfad, während /home/$USER eine bestimmte Verzeichnisstruktur voraussetzt.
Optional: systemd-Dienst
Beispiel für /etc/systemd/system/llm-dashboard.service.
BENUTZERNAME und den Projektpfad anpassen. Den npm-Pfad mit
command -v npm prüfen.
[Unit]
Description=Node.js LLM-Daschboard
After=network.target
[Service]
Type=simple
User=BENUTZERNAME
WorkingDirectory=/ABSOLUTER/PFAD/ZUM/PROJEKT
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=5
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
WorkingDirectory muss auf den Ordner mit der package.json zeigen.
Die Abhängigkeiten zuvor dort mit npm ci installieren.
Dienst aktivieren und starten:
sudo systemctl daemon-reload
sudo systemctl enable --now llm-dashboard.service
Lizenz und Sicherheit
Der eigene Projektcode steht unter der MIT-Lizenz. Für mitgelieferte Bibliotheken und Schriftarten gelten die Fremdkomponenten-Hinweise.
