Persist library profiles and download history with weight capacity checks
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user