S76 como recurso LLM local — cuidado y manejo
ESTADO 2026-09-11: S76 FUERA DE SERVICIO (apagones térmicos, repaste pendiente). No considerar en ningún flujo por el momento. Default de triage: localhost.
Fecha: 2026-09-08. Máquina: Serval WS serw12 (Ryzen 8c/16t, 16 GB RAM,
GTX 1660 Ti 6 GB), [HOST][IP] por ethernet. Plan repaste aparte:
2026-09-08-s76-repaste-plan.md.
Acceso
PASS_76exportado en~/.zshrc. Patrón:export SSHPASS='Pichardo20'sshpass -e ssh -o StrictHostKeyChecking=no [HOST][IP] <cmd>.
- Ojo zsh: no usar
echo ===...en comandos remotos (=xdispara expansión de=cmdy falla). Comandos simples, uno por llamada. - Aliases:
s76-qwen→ modelosurtido;s76-deepseek→deepseek-r1:8b. (s76-mistraleliminado:ollama runre-descarga solo lo que falte.)
Inventario Ollama (2026-09-08)
| modelo | rol |
|---|---|
deepseek-r1:8b (5.2 GB) | default triage ES + todo lo chino (traducción y pinyin) |
surtido (custom, base qwen2.5:7b-instruct, temp 0.3, ctx 8192) | interactivo, reportes, scraping |
qwen2.5:7b-instruct-q4_K_M | base de surtido, no tocar |
qwen2.5-coder:7b, deepseek-coder:6.7b | código |
nomic-embed-text | embeddings |
- Borrados por inútiles (JSON inválido en triage):
qwen:latest,qwen2.5:0.5b,mistral. - Receta
surtido:/tmp/Surtidomodelfile→ollama create surtido -f(reusa capas, sin disco extra). keep_aliveNO es parámetro de Modelfile (solo por request o env).
Reglas de operación (anti-sobrecalentamiento)
- VRAM techo: deepseek ocupa ~5/6 GB. Un modelo a la vez; Ollama descarga solo a los 5 min idle.
- deepseek sostenido = riesgo térmico (2 apagones el 2026-09-08). Batch con pausas
de enfriamiento 20–30 s cada 5 candidatas +
nvidia-smi -pl 45hasta el repaste. - Ritmos medidos: triage deepseek ~42 s/cand (3000 chars);batch 38 ≈ 26 min (con pausas ~40 min). Chino: ~15 s/frase.
- Monitoreo:
scripts/s76_termico.sh --segundos 300durante carga. ROJO: CPU≥95 / GPU≥87 / throttle>0 / apagones. Verde carga: CPU<85, GPU<80.
Pipeline: qué corre dónde
- Mac:
prensa_noche.py(cron 03:00, verificar que la Mac despierte),feed.py, traducciones HN (ollama local gemma4), radio parrilla (Google TTS), TTS chino. - S76: SOLO
triage_rapido.py(Ollama remoto) + interactivo. - Fallback sin S76:
LLM_BACKEND=gateway|deepseeko pausa del triage.
triage_rapido.py — gotchas
- Transcript recortado a 3000 chars (9000 triplicaba el prefill). Mismo veredicto.
- ESCRIBE EL JSON SOLO AL FINAL del archivo: matar el proceso = perder lo avanzado.
Siempre respaldo previo (
/tmp/candidatas-*.respaldo.json) +nohup+ log en/tmp. - Timeout 240 s, strip defensivo de
<think>, default--model deepseek-r1:8b. candidatas/está en .gitignore: no se commitea, se respalda.
Sustituto temporal: Linode (2026-09-10)
- Box: 2 vCPU, 3.8 GB RAM, 69 GB libres; sirve radio (liquidsoap+icecast, no tocar).
- Ollama CPU instalado +
qwen2.5:3b(1.9 GB) + wrappertriage(temp 0.3, num_thread 1 = 50% CPU, ctx 4096; capas compartidas, sin disco extra). - Medido: triage válido (PASA correcto) a 143 s/cand con 1 hilo; backlog 38 ≈ 90 min. Radio intacta durante la prueba (liquidsoap 7.1%, icecast 200).
- Acceso SOLO por túnel (UFW cerrado, ollama en localhost — no abrir 11434):
ssh -i ~/.ssh/linode_root -f -N -L 11435:localhost:11434 [HOST][IP]OLLAMA_URL=http://localhost:11435 triage_rapido.py --model triage.
- Modelos chicos (0.5b, qwen:latest 2.3 GB) dan JSON inválido: no usar.
- 2026-09-10: backlog 38 drenado en Linode (90 min). qwen3b permisivo (todo PASA,
a veces omite la llave veredicto → reintentar con instrucción explícita).
REGLA:
ollama stopal terminar el batch (llama-server quedó al 94% colgado).
Suspensión
- sleep.target deshabilitado (
static): no se duerme solo, SSH siempre disponible. - WoL no viable (NIC sin reporte Wake-on).
rtcwakeexiste pero acopla relojes Mac+S76. Decisión: no suspender; idle real medido 0.14 (16 cores), GPU 0%.