Pro Box ein "Auslastung"-Button in der Compute-Flotte → Modal mit live nvidia-smi (1s), Graphen (GPU-Auslastung + Tokens/Intervall) und Besen-Reset. Historie liegt auf der Box, Diagnostic holt sie via RVS. - node_stats.py (identisch in allen 4 Worker-Build-Contexts): Sampler alle 15s (nvidia-smi + Token-Delta → Ringpuffer ~500 Punkte, persistent als JSON auf der Box), Live-Stream (node_stats, 1s, Auto-Stop 300s), History-Request, Reset. nvidia-smi via async subprocess, fail-safe ohne GPU. - Worker-Wiring (f5tts/whisper/voxtral/llm-adapter): Import, Sampler-Task, _stats.handle() nach dem targetInstance-Filter. llm-adapter zaehlt Tokens (usage.total_tokens) → Token-Graph nur bei LLM-Boxen. Dockerfiles kopieren node_stats.py. - compose: llm-adapter bekommt runtime:nvidia + NVIDIA_VISIBLE_DEVICES=all + DRIVER_CAPABILITIES=utility (nur nvidia-smi, KEIN VRAM/Compute). - diagnostic/server.js: relay node_stats_* (Browser→Box) + forward (Box→Browser). - diagnostic/index.html: Auslastung-Button pro Node (Ziel bevorzugt llm-Instanz), Modal mit live nvidia-smi + Inline-SVG-Sparklines, Besen-Reset. Reporter-Wahl bevorzugt die llm-Instanz (sieht alle GPUs + Tokens); GPU-Worker sehen ihre gepinnte Karte. Gitignored Historie stoert git-Baum der Box nicht. Deploy: diagnostic + GPU-Boxen neu bauen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Voxtral-STT-3B-Satellit (Transformers)
Streaming-STT via Voxtral-Mini-3B-2507 (Mistral, Apache 2.0) über 🤗 Transformers. Ersetzt whisper als STT — genauer, und ohne Treiber-Upgrade: läuft auf dem Trixie-Standardtreiber (550/CUDA 12.4) via torch 2.6.0+cu124 (derselbe Trick wie bei f5tts).
- Modell ~9 GB (bf16) → GPU 1 (die 12-GB-Karte; per Compose gepinnt).
- F5-TTS + LLM bleiben auf GPU 0 (8 GB).
- Arbeitsweise = chunked wie whisper: live PCM → alle ~1 s transkribieren
(Partials) → adaptiver Endpointer (Rausch-Boden-VAD + semantische
Stagnation, aus M0.1) feuert
stt_endpoint. RVS-Protokoll identisch → drop-in.
Starten (Profil voxtral)
cd xtts
docker compose stop whisper-bridge # sonst beantworten beide stt_*
docker compose --profile voxtral up -d --build
docker logs -f aria-voxtral-bridge # Modell laedt (mehrere GB), dann "RVS verbunden"
Zurück zu whisper: docker compose --profile voxtral down && docker compose up -d whisper-bridge.
⚠️ Auf echter Hardware verifizieren (blind gebaut)
- Transformers-API. Die exakte Voxtral-Transkriptions-API ist in
bridge.pyin einer Methode gekapselt (VoxtralRunner._transcribe_blocking), modelliert nach der HF-Modelcard (apply_transcription_request→generate→batch_decode). Beim ersten Lauf gegen die Modelcard prüfen und dort anpassen. - HF-Gating. Ist
Voxtral-Mini-3B-2507gated,HF_TOKENinxtts/.envsetzen (wird alsHUGGING_FACE_HUB_TOKENdurchgereicht). - VRAM/Tempo. 3B in bf16 ~9 GB auf der 12-GB-Karte — Rest fürs KV-Cache. Ist die
Partial-Transkription (alle 1 s) zu schwer,
STREAM_TRANSCRIBE_INTERVAL_MShochsetzen. - torch-Konflikt. Falls
transformers/mistral-commonbeim Build torch>2.6 erzwingen, meldet der Constraint einen Konflikt → dann brauchen wir doch das Treiber-Upgrade (bootstrap.sh --upgrade-drivervia NVIDIA-CUDA-Repo) + cu126-torch.
Protokoll (RVS, identisch zu whisper — drop-in)
Rein: stt_stream_start, stt_audio_chunk (16 kHz mono s16le, base64), stt_stream_end.
Raus: stt_partial, stt_endpoint, stt_stream_done.
TTS
Bleibt F5-TTS (klingt gut, passt auf GPU 0). Voxtral-TTS bräuchte ~24 GB — separates Thema.
Quellen
- Modell: https://huggingface.co/mistralai/Voxtral-Mini-3B-2507
- Transformers-Nutzung: HF-Modelcard (Voxtral) +
mistral-common