diff --git a/docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md b/docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md index 226a484..5fff2f3 100644 --- a/docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md +++ b/docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md @@ -25,11 +25,16 @@ - Das Encoding-Ansible-Projekt unter `llm-server/encoding/ansible/` verwaltet und verifiziert den Encoding-Grundzustand (Konto, Pfade, CPU-Isolation, rootless Store); Check-Mode und Idempotenzlauf meldeten jeweils `changed=0`. -- Es sind noch kein Encoding-Image, kein Container, keine Quadlet-Unit und kein - Timer eingerichtet. +- Das Image `linuxserver/handbrake:1.11.2-ls48` ist mit dem amd64-Manifest-Digest + `sha256:fda92bd1b43a07a770b10ad793172b10451ba1690803112dbaf2b48a6148a3c7` + gepinnt und per Pull im rootless Store von `gn-encoding` verifiziert. +- Es sind noch kein Container, keine Quadlet-Unit und kein Timer eingerichtet. ## Nächste Festlegungen -Vor einer Encoding-Implementierung müssen insbesondere Encoder und -Container-Image, Ein- und Ausgabeverfahren, genaue Zeitfenster, CPU-/I/O-Grenzen, -Abbruchverhalten am Ende des Zeitfensters und Aufbewahrung festgelegt werden. +Am 19.10.2026 festgelegt: HandBrake im Image `linuxserver/handbrake:1.11.2-ls48` +(amd64-Manifest-Digest gepinnt), nächtliches Zeitfenster 00:00–06:00 Uhr +Europe/Berlin mit geordnetem Stopp und nächtlichem Retry sowie NFS-Mounts für +Ein- und Ausgabe. Noch offen: Codecs und Qualitätsprofile, NFS-Server- und +Exportdetails, Queue- und Fehlerverhalten, Aufbewahrung, Benachrichtigung sowie +CPU-/I/O-Grenzen nach einem Lasttest unter Inferenzlast. diff --git a/docs/platform/llm-server/encoding/GNENC-001-PLAN_Architecture.md b/docs/platform/llm-server/encoding/GNENC-001-PLAN_Architecture.md index 2fbf8e8..b9d4ccf 100644 --- a/docs/platform/llm-server/encoding/GNENC-001-PLAN_Architecture.md +++ b/docs/platform/llm-server/encoding/GNENC-001-PLAN_Architecture.md @@ -27,8 +27,9 @@ unabhängig konkurrierende Sollzustände auf denselben Host anwenden. | Containertrennung | eigener rootless Podman-Store und eigener rootverwalteter Quadlet-Pfad | eingerichtet; Grundzustand per Ansible verwaltet und verifiziert; noch keine Workload definiert | | Rechenressource | Encoding ist nach Betreiberfestlegung rein CPU-basiert und erhält keinen GPU-Zugriff | Planungsentscheidung; reale Last noch nicht gemessen | | Parallelität | darf parallel zu AI Production oder AI Testing laufen | Planungsentscheidung | -| Zeitsteuerung | automatische Ausführung ausschließlich außerhalb der Stoßzeiten, zunächst nachts | Richtung festgelegt; konkrete Uhrzeiten fehlen | -| Anwendungen | konkrete Encoder, Images, Profile und Queue sind noch nicht gewählt | offen | +| Zeitsteuerung | nächtlich 00:00–06:00 Uhr Europe/Berlin; am Fensterende geordneter Stopp, unfertige Jobs starten nächtlich erneut | Betreiberentscheidung 19.10.2026 | +| Anwendung | HandBrake im Image `linuxserver/handbrake:1.11.2-ls48` mit gepinntem amd64-Manifest-Digest `sha256:fda92bd1b43a07a770b10ad793172b10451ba1690803112dbaf2b48a6148a3c7` | Betreiberentscheidung 19.10.2026; Digest aufgelöst und per Pull im gn-encoding-Store bestätigt | +| Ein-/Ausgabe | NFS-Mounts auf `/var/lib/ghostnet-encoding/input` und `/var/lib/ghostnet-encoding/output` | Betreiberentscheidung 19.10.2026; Server- und Exportdetails offen | ## 3. Zielbild @@ -145,19 +146,26 @@ CPU-Isolation (keine GPU-Gruppenmitgliedschaft, kein Lesezugriff auf `/dev/kfd` oder DRM-Render-Nodes). Solange die offenen Entscheidungen in Abschnitt 7 nicht getroffen sind, stellt die Rolle zusätzlich sicher, dass weder Quadlet-Dateien noch Container für `gn-encoding` existieren. Check-Mode und zwei -aufeinanderfolgende Läufe meldeten jeweils `ok=30 changed=0 failed=0`. +aufeinanderfolgende Läufe meldeten jeweils `ok=30 changed=0 failed=0`. Das +gepinnte HandBrake-Image `linuxserver/handbrake:1.11.2-ls48` +(`sha256:fda92bd1…48a3c7`) wurde anschließend in den rootless Store von +`gn-encoding` gezogen; der Pull bestätigte den Manifest-Digest. ## 7. Offene Entscheidungen -1. Welcher Encoder und welches fest versionierte Container-Image werden genutzt? -2. Welche Codecs, Qualitätsprofile und Hardwarekompatibilitäten sind erforderlich? -3. Woher kommen Eingabedateien, und wie werden fertige Dateien abgeholt? -4. Welches konkrete nächtliche Zeitfenster und welche Zeitzone gelten? -5. Darf ein laufender Job das Zeitfenster überschreiten oder wird er gestoppt? -6. Welche CPU-, Speicher- und I/O-Grenzen schützen die KI-Dienste? -7. Wie werden Warteschlange, Wiederholung, Teilresultate und Fehler behandelt? -8. Welche Aufbewahrungs-, Backup- und Löschregeln gelten für Video- und +Am 19.10.2026 wurden Encoder und Image (HandBrake, gepinnter Digest), das +nächtliche Zeitfenster (00:00–06:00 Uhr Europe/Berlin), das Abbruchverhalten am +Fensterende (geordneter Stopp, nächtlicher Retry) und das Ein-/Ausgabeverfahren +(NFS-Mounts) festgelegt. Offen bleiben: + +1. Welche Codecs, Qualitätsprofile und Hardwarekompatibilitäten sind erforderlich? +2. Welche NFS-Server-Adresse, Export-Pfade und Mount-Optionen gelten für Ein- und Ausgabe? +3. Wie werden Warteschlange, Wiederholung, Teilresultate und Fehler behandelt? +4. Welche Aufbewahrungs-, Backup- und Löschregeln gelten für Video- und Arbeitsdateien? -9. Welche Statusanzeige oder Benachrichtigung benötigen Nutzer? +5. Welche Statusanzeige oder Benachrichtigung benötigen Nutzer? +6. Welche CPU-, Speicher- und I/O-Grenzen schützen die KI-Dienste? Konkrete + Grenzwerte werden erst nach einem repräsentativen Encoding-Test unter + gleichzeitiger Inferenzlast festgelegt (Abschnitt 4). Diese Werte werden nicht vorab in Playbooks angenommen.