gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

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>

f53913d7e4976c3866285bdf3405fae98d547380 · ruwaq Sergio · (1 killa ñawpaq) · tayta 1fd9243fe · kay commitpi sach'ata qhaway

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 &