Persist library profiles and download history with weight capacity checks

This commit is contained in:
Mikei386
2026-09-28 17:26:21 +02:00
parent f326de18d1
commit 458047a1d3
15 changed files with 360 additions and 180 deletions
+43 -94
View File
@@ -1,103 +1,52 @@
# Stand Laufzeitverwaltung
# Modellverwaltung in Athena Deck
llama.cpp-Prüfung, Releases, Builds, Abbruch und Standard-/Rückfallauswahl sind
jetzt live. Kein manuelles VRAM-Reservefeld mehr. Modellbezogene Prognosen verwenden die lesend eingebundenen alten Routermodelle
und llama-fit-params; ein Modellstart erfolgt nicht. Die folgenden
0.4/0.5-Beschreibungen der Laufzeitansicht sind historisch.
## Serverprofile, Downloads und Größen (2026-09-28)
# Stand 0.5
Profile sind jetzt echte, serverseitig persistierte Konfigurationen in
`state/profiles.json`. Die Bibliothek bietet „Profil anlegen“ für heruntergeladene
Gewichtsdateien. Alle vier Bereiche unterstützen Anlegen, Bearbeiten und
Duplizieren. Namen sind global eindeutig; Änderungen werden anhand einer
Revisionsnummer gegen versehentliches Überschreiben geprüft. Frühere lokale
Browserentwürfe werden weder gelöscht noch automatisch als echte Profile importiert.
Katalog und Datei-Downloads sind jetzt live. Die folgende Beschreibung der
Katalogbeispiele ist historisch (0.4). Aktuelle API und Grenzen: DEVELOPMENT.md.
Profile und Laufzeitsteuerung bleiben Entwürfe.
Bildprofile speichern Auflösung, Schritte, Seed und Guidance. Chatprofile
speichern Kontextbudget, Slots, Threads, Batch und Microbatch; Audio derzeit
Sprechgeschwindigkeit, Video Auflösung, Frames, FPS, Schritte und Seed.
Ein Profil startet noch keinen Worker. Fehlende Laufzeiten und bei Qwen-Image-2.1
Textencoder/VAE werden angezeigt. Auf Wunsch des Betreibers werden in diesem
Schritt keine Bildlaufzeiten oder Zusatzmodelle installiert.
# Modellverwaltung und llama.cpp · GUI-Prototyp 0.4
Der Reiter Downloads zeigt die persistierte Downloadhistorie (`models/downloads.json`).
„Aus Liste entfernen“ blendet ausschließlich einen beendeten Eintrag aus, auch
über Neustarts hinweg. Es löscht keine Modelldatei und keinen Bibliothekseintrag.
Bestehende Bibliotheksdateien werden einmalig als abgeschlossene Downloads übernommen.
Unterbrochene Downloads bleiben erkennbar; noch kein Fortsetzen/Resume.
Abgeschlossene Downloads belegen nicht mehr dauerhaft die Entdecken-Ansicht.
Diese Erweiterung ist ausdrücklich rein optisch und lokal bedienbar. Keine
Modelldateien, Laufzeiten, Downloads, Builds oder produktiven Dienste werden verändert.
Entdecken lädt Dateigrößen mit zwei parallelen Metadatenanfragen nach. Angaben
stammen aus Hugging Face und werden fünf Minuten gecacht (maximal 64 Repositories).
Die Übersicht bevorzugt GGUF-Hauptgewichte, schließt erkennbare Encoder/VAE/LoRA-
Dateien aus und summiert vollständig vorhandene Shards einer Variante.
Die angegebene Spanne enthält keine zusätzlichen Pipeline-Komponenten.
## Ansichten
Die Speicherprüfung ist bewusst eine **Untergrenze für Gewichte**, keine vollständige
Lauffähigkeitsprognose: Dateigröße gegen jede GPU einzeln, insgesamt und aktuell frei,
mit 5 Prozent / mindestens 512 MiB Reserve. GPUs werden nicht pauschal addiert.
Die Dateiauswahl zeigt GPU-Werte, Messzeit und ein vorhandenes Deck-RAM-Limit.
KV-Cache, Kontext, Aktivierungen, Encoder/VAE und backendabhängige Formate bleiben
als unbekannter Zusatzbedarf gekennzeichnet. Ein positives Gewichts-Ergebnis
bedeutet nicht „Modell kann gestartet werden“.
- Sprachmodelle/Chat, Bild, Audio und Video: Entdecken, Bibliothek, Profile, Laufend.
- Katalog: Suche/Quellenfilter über gekennzeichnete Beispiele, Detailansicht mit
getrennter Prüfung von Unterstützung, grundsätzlicher Eignung und aktueller
Startmöglichkeit. Keine Online-Suche und keine berechneten Speicherwerte.
- Bibliothek: Beispiel einer einmaligen Modelldatei mit mehreren Profilen;
ausdrücklich keine bestätigte Installation.
- LLM-Profile: drei vorbelegte Beispiele, Anlegen, Bearbeiten, Duplizieren und
Entfernen lokaler Entwürfe. Name, Modellvariante, Kontextbudget, Slots,
GPU-Zuordnung, KV-Cache, gemeinsamer Pool, GPU-Gewichtung, Batch/Microbatch,
CPU-Threads, Flash Attention und vorgesehener Vision-Projektor.
- Einzigartige API-Profilnamen, gültige Zahlenbereiche, Microbatch <= Batch und
nicht ausschließlich nullwertige GPU-Gewichtung werden im Formular geprüft.
- API-Vorschau zeigt die vorgesehenen Profilnamen. `/v1/models` wird dadurch
**nicht** als funktionsfähiger Endpunkt implementiert.
- Laufend: leerer Zustand sowie geplanter Ablauf des Profilwechsels, ohne
simulierte laufende Modelle oder Warteschlangen.
- Bild/Audio/Video-Profile: vorbereitete, deaktivierte aufgabenspezifische Felder.
API (Administrator-Sitzung erforderlich, bestehender CSRF-Schutz):
- `GET /api/v1/catalog/assessment?repo=owner/name`: Größenbereich und Gewichtsprüfung.
- `GET /api/v1/catalog/files?repo=owner/name`: zusätzlich Prüfung pro Datei.
- `GET /api/v1/catalog`: Bibliotheks-IDs und `downloads` neben aktivem `job`.
- `POST /api/v1/catalog/dismiss` mit `{ "id": "download-id" }`: beendeten Eintrag ausblenden.
- `GET /api/v1/profiles`: Profile, Blocker und Parameterschemata.
- `POST /api/v1/profiles/save`: `id` (bei Neuanlage null), `revision` (anfangs 0),
`name`, `kind`, `model_id` und `parameters`. Die Modelldatei muss tatsächlich
vollständig in der Bibliothek liegen. Keine beliebigen Pfade/Startbefehle.
## Einstellungen → llama.cpp & Updates
Die eigenständig implementierte Galerie orientiert sich an [LocalAIs Explore-/Detailansicht](https://github.com/mudler/LocalAI/blob/master/core/http/react-ui/src/pages/Models.jsx). Kein LocalAI-Frontendcode wurde übernommen. llama.cpp-Buildverwaltung und Einpassung der alten Referenzprofile sind unter Einstellungen verfügbar; Details in DEVELOPMENT.md.
Build-Entwurf mit Backend (CUDA/CPU/Vulkan), gewünschtem Release oder Commit,
automatischer bzw. expliziter GPU-Architekturauswahl, Toolkit-Prüfung, parallelen
Build-Jobs und vorgesehener VRAM-Reserve. Für Athena sind RTX 5080 und RTX 3060 als
bekanntes Zielsystem benannt; eine Live-Build-Kompatibilitätsprüfung erfolgt nicht.
Die Update-Ansicht lässt sich aufklappen. Sie zeigt Platz für aktuellen Build,
verfügbares Release, echte Release-Notes mit Quelle und Datum sowie Neubau und
spätere Wiederherstellung. Alle zustandsändernden Laufzeit-Aktionen und die
Live-Update-Suche sind deaktiviert. Keine erfundenen Versionsnummern oder Fixes.
Ein Link führt zu den offiziellen llama.cpp-Releases.
## Speicherung und spätere Anbindung
Entwürfe liegen ausschließlich im localStorage dieses Browsers und Origins unter
`athena-deck-studio-v1`. Sie bleiben nach Neuladen erhalten, enthalten keine
Zugangsdaten und werden nicht zum Server übertragen. Andere Browser oder die
Server-Instanz teilen diesen Stand nicht. Bei gesperrtem Browser-Speicher weist die
Oberfläche darauf hin, dass der Entwurf nur im aktuellen Speicher bleibt.
Die neuen Ansichten in `studio.js` rufen keine API auf. Vorhandene Anmeldung,
Hardwareanzeige, Demo-Service und Netzwerkverwaltung behalten ihre bisherigen
Funktionen. `server.py` liefert zusätzlich nur die neue JavaScript-Datei aus.
Vor echter Nutzung erforderlich: Modellkatalog-Adapter, Metadaten-/GGUF-Auswertung,
Downloadverwaltung, persistente Profil-API, GPU-/KV-Planung, Build-Manager und
Prozess-Supervisor mit Warteschlange. Gespeicherte Entwürfe dürfen nicht ungeprüft
als Shell-Befehle interpretiert werden. Die genaue Kontext-/Slot-Semantik muss an
die eingesetzte llama.cpp-Version gekoppelt und überprüft werden.
## Prüfung
JavaScript-Syntax geprüft. In einer isolierten statischen Browservorschau:
Profil bearbeitet (Kontext geändert), gespeichert und nach Reload wiedergefunden;
Build-Einstellungen und Update-Ansicht geöffnet, deaktivierte Aktionsknöpfe sowie
Layout kontrolliert. Die Testvorschau verwendet einen eigenen Origin, sodass keine
Entwürfe der eigentlichen Anwendung überschrieben wurden. Keine SSH-/Modell- oder
Build-Aktion für diese GUI-Erweiterung ausgeführt.
## Modellgalerie und Download-Ablauf (2026-09-28)
Die Live-Galerie verwendet eine eigene Deck-Oberfläche, inspiriert von LocalAIs
[Modellgalerie](https://github.com/mudler/LocalAI/blob/master/core/http/react-ui/src/pages/Models.jsx)
und [Download-Anzeige](https://github.com/mudler/LocalAI/blob/master/core/http/react-ui/src/components/OperationCard.jsx).
Es wurde kein LocalAI-Frontendcode übernommen.
- Beim Öffnen erscheinen beliebte Hugging-Face-Repositories des Bereichs.
- Suche liefert bis zu 20 Treffer; Sortierung nach Downloads oder Namen.
- Ergebnis auswählen: Modelldetails, Lizenzlink und feste Quellrevision.
- Dateien nach Name/Quantisierungsbezeichnung und Format filtern; genau eine Datei auswählen.
- Download explizit starten. Zugangsbeschränkte Repositories, bereits vorhandene
Dateien, laufende Downloads und unzureichender Speicher sperren den Button.
- Fortschritt, Bytes, Abbruch und Fehler werden aus der vorhandenen API angezeigt.
- Bibliothek zeigt abgeschlossene Dateien einschließlich Version und Integritätsprüfung.
Grenzen: weiterhin Einzeldateien, keine vollständige Pipeline-Installation,
keine Warteschlange, kein Resume, keine automatischen Modellstarts. Audio-Suche
ist derzeit auf Text-to-Speech begrenzt. Hardware-/Kontext-Eignung wird in dieser
Galerie noch nicht berechnet; Dateigröße wird ausdrücklich nicht als VRAM-Bedarf
angezeigt. Der separate llama.cpp-Einpassungstest bleibt unter Einstellungen.
Validierung: 46 bestehende Python-Tests bestanden; JavaScript-Syntax geprüft;
Browserprüfung mit echten Hugging-Face-Such- und Dateidaten, Dateifilter,
Auswahl und Speicherreserve-Sperre. Keine Modellgewichte für den UI-Test geladen.
Validiert: 54 Python-Tests; JavaScript-Syntaxprüfung; isolierter Browsertest mit echten Katalogdaten und einer temporären Testdatei für Profilanlage, Komponentenhinweise und Download-Ausblenden. Keine produktiven Modellstarts.