Drei Schritte, die zusammen Phase 2 lauffaehig machen.
Revisionen (migrations/p2-004, revisionen.py)
Ingest schreibt jede geaenderte Fassung eines Items nach
raw_item_versionen fort. Daraus faellt ein Befund ab, den die
Spezifikation nicht vorsehen konnte: welches Haus seine Schlagzeile
nachtraeglich umschreibt, und wie. 206 von 3407 Items, acht
Einstufungen von 'formal' bis 'neufassung'. Kein Modell, kein Lexikon,
kein Netzzugriff - nur ein Wortvergleich zweier Fassungen.
Fortschreibungen sind ueber ticker_markiert und kopf_stabil abziehbar,
absichtlich als zwei Merkmale statt einer Kategorie: das eine ist eine
Selbstauskunft des Hauses, das andere eine Beobachtung am Satzbau.
Embeddings (embeddings.py)
multilingual-e5-large, 1024 Dimensionen, MIT. Jede Zeile wird auf feste
128 Token aufgefuellt, nicht nur bis zur laengsten des Stapels - sonst
haengt ein Vektor davon ab, mit welchen Nachbarn er kodiert wurde, und
ein Slot-Lauf liefert andere letzte Stellen als ein Backfill.
Nachgewiesen: 64/64 bitgleich einzeln wie im vollen Stapel, groesste
Abweichung 0.00e+00, und im Betrieb 26 Slot-Vektoren unveraendert
gegen den 3407er-Backfill.
Darum transformers statt sentence-transformers: letzteres kapselt genau
diese Stelle weg.
Container (Containerfile, phase2.py, deploy/)
Debian trixie wie der Postgres-Container, torch aus dem CPU-Index.
Die regelbasierten Module liefern darin fuer alle 3407 Items bitgleich
dieselbe Nutzlast wie auf der Entwicklungsmaschine - Portabilitaet
gemessen, nicht behauptet.
version.py bekommt den Schluessel 'revision'. Weil der Hash ueber den ganzen
Komponentensatz laeuft, aendert das auch die Version des Dublettenmoduls,
obwohl an dessen Verfahren nichts anders ist. Das ist die in version.py
beschriebene Semantik der Spezifikation, kein Versehen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NupWEBPzsyohVPG47HsTz8
32 lines
991 B
Desktop File
32 lines
991 B
Desktop File
# Phase 2 fuer den juengsten Slot. Nach ~/.config/systemd/user/ legen.
|
|
#
|
|
# systemctl --user daemon-reload
|
|
# systemctl --user enable --now wurzelwerk-p2.timer
|
|
#
|
|
# Kein Quadlet: das hier ist kein Dienst, der laeuft, sondern ein Auftrag, der
|
|
# faellig wird. Quadlet-Units sind fuer Container gedacht, die stehen bleiben.
|
|
|
|
[Unit]
|
|
Description=Wurzelwerk Phase 2 (Aufbereitung)
|
|
# Nicht Requires: laeuft Postgres gerade nicht, soll der Slot ausfallen und
|
|
# beim naechsten Mal ueber --aufholen nachgeholt werden, nicht die
|
|
# Abhaengigkeit neu starten.
|
|
After=postgres.service
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
EnvironmentFile=%h/.config/wurzelwerk/p2.env
|
|
TimeoutStartSec=1800
|
|
ExecStart=/usr/bin/podman run --rm \
|
|
--name wurzelwerk-p2-lauf \
|
|
--network=pasta \
|
|
--memory=8g --shm-size=1g \
|
|
--volume wurzelwerk-modelle:/cache:U \
|
|
--env DATABASE_URL \
|
|
--env OMP_NUM_THREADS \
|
|
--env HF_HUB_OFFLINE \
|
|
localhost/wurzelwerk-p2 phase2.py --aufholen
|
|
|
|
[Install]
|
|
WantedBy=default.target
|