el guardián del modelo no falla por lento: falla por MEMORIA, y decía otra cosa
Con github5 puesta, la receta ya baja del mirror (639.160.320 bytes, sha256
verificado) y muere en el guardián 3 con «el servidor no levantó el modelo».
Diagnostiqué «el timeout de 120 s es corto» y el usuario aprobó subirlo. Era
falso, y el dmesg del anfitrión lo dice sin ambigüedad:
oom-kill: … task=llama-server,pid=19786,uid=1001
Out of memory: Killed process 19786 (llama-server)
total-vm:4432388kB, anon-rss:3246920kB
llama-server con este modelo pide ~3,2 GB de RSS y esta caja tiene 7 GB con 5 ya
usados. El OOM killer se lo lleva, /health no contesta nunca, el bucle agota sus
60 vueltas y la receta culpa al modelo. Subir el bucle no arregla nada: esperaría
más tiempo a un proceso ya muerto. (El mismo OOM se había llevado antes un
`minga` de 2,5 GB, de otro frente.)
Queda escrito en el guardián, que advertía de todo menos de esto: hay que
construirla donde haya ≥6 GB libres. El worker (16 GB + 7 de swap) va sobrado.
⚠ El comentario va DENTRO de la fase install, que entra en hash_inputs ⇒
re-hashea a b3:068f4a31. Es el precio de documentar en el sitio donde alguien lo
va a leer, y acá vale la pena.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
1 qillqakuna · +15 −0
diff --git a/recipes/ia-modelo-embeddings.toml b/recipes/ia-modelo-embeddings.toml
index 3938cdd0..b203cf52 100644
--- a/recipes/ia-modelo-embeddings.toml
+++ b/recipes/ia-modelo-embeddings.toml
@@ -101,6 +101,21 @@ test "$comunes" -le 5 || {
# «Tokeniza» todavía no es «ordena». Se levanta el servidor de verdad y se le pide que diga que un
# gato se parece más a un perro que a un cortafuegos. Sin esto, el guardián 2 podría pasar y el
# modelo seguir siendo inútil para buscar.
+#
+# ⚠⚠ ESTE GUARDIÁN NECESITA ~3,2 GB DE RAM, Y CUANDO NO LOS HAY MIENTE (medido 2026-09-22).
+# `llama-server` con este modelo llega a `anon-rss:3246920kB` / `total-vm:4432388kB`. En una caja
+# apretada el OOM killer se lo lleva, `/health` no contesta nunca, el bucle agota sus 60 vueltas y
+# la receta muere diciendo **«el servidor no levantó el modelo»** — que suena a modelo roto y es
+# falta de memoria. Costó un diagnóstico equivocado («el timeout es corto») que sólo se deshizo
+# mirando `dmesg`:
+#
+# oom-kill: … task=llama-server,pid=19786,uid=1001
+# Out of memory: Killed process 19786 (llama-server) total-vm:4432388kB, anon-rss:3246920kB
+#
+# ⇒ **Construir esta receta en una máquina con ≥6 GB libres.** El worker (16 GB + 7 de swap) va
+# sobrado; el hub de la jaula, con 7 GB y 5 en uso, no. Subir el bucle de espera NO arregla nada:
+# esperaría más tiempo a un proceso que ya está muerto. Si algún día hace falta que corra en poco
+# espacio, lo que hay que tocar es el servidor (`--ctx-size`, `--no-mmap`), no el reloj.
S=/tmp/emb-guardian.sock
rm -f "$S"
llama-server --model "$M" --host "$S" --embedding --pooling last --no-warmup > /tmp/emb.log 2>&1 &