Documentación
VRAMPilot se instala como un paquete Python y no necesita nada más: sin instalación de llama.cpp, sin descarga manual de un binario llama-server. Esta página cubre la instalación, el funcionamiento de la escala de recuperación, lo que se persiste, el comportamiento del watchdog y los requisitos previos.
Instalación
pipx install vrampilot # o: pip install vrampilot
Ejecútalo sobre un modelo:
vrampilot tu-modelo.gguf --ctx 8192 # CLI: plan -> arranque -> recuperación -> servicio
vrampilot-web # UI web: pega una ruta .gguf -> Launch -> chat
La interfaz web escucha en http://127.0.0.1:8770. Ambos puntos de entrada terminan en un endpoint compatible con OpenAI utilizable por cualquier cliente. La forma de módulo también funciona: python -m vrampilot.cli / python -m vrampilot.web.
Cómo funciona la escala de recuperación
Cuando el servidor no arranca (o arranca pero no puede generar ningún token), VRAMPilot lee el log de error, lo clasifica como out-of-memory, retrocede un peldaño y reintenta. El orden está diseñado para preservar la mayor capacidad posible:
- La precisión del KV-cache primero (f16 -> q8_0 -> q4_0). Esto reduce el KV-cache manteniendo tu contexto completo. Es lossy en el razonamiento largo — el informe lo dice.
- Luego reducir el contexto — dividido a la mitad hasta que quepa.
- Luego descargar más hacia la CPU — más expert-offload MoE, o menos capas GPU para los modelos densos.
- El suelo — si nada cabe, lo dice honestamente en lugar de fingir.
Ejemplo validado (traza en bruto en validation/RESULTS.md): ante una configuración deliberadamente imposible con 262144 de contexto, se recuperó a 131072 de contexto — 4x más de lo que un repliegue solo sobre el contexto habría conservado — y sirvió una respuesta real.
El detector de OOM reconoce las cadenas de error de CUDA, Vulkan, ROCm y Metal.
Persistencia
Cada configuración que realmente ha arrancado se persiste por (huella de la máquina, hash de la cabecera del modelo, contexto solicitado) en una base SQLite local, ~/.governor/configs.db (el motor conserva el nombre «governor» a propósito). En append-only: una configuración que ya no funciona se conserva en el historial, nunca se sobrescribe. El siguiente lanzamiento arranca directamente sobre la configuración conocida-buena; un cambio de driver o de GPU invalida la entrada y desencadena un nuevo plan.
Por qué importa: un intento fallido cuesta una carga completa del modelo — medida en ~220 s por intento para un modelo MoE de 9,5 Go cargado con --no-mmap en el disco de la máquina del gate. La caché existe para no pagar eso nunca dos veces.
Controles de transparencia:
vrampilot configs list # inspeccionar todo lo que recuerda
vrampilot modelo.gguf --no-cache # ignorar la caché, forzar un nuevo plan
Nada sale de tu máquina.
Comportamiento del watchdog
Mientras el servidor está en marcha, el watchdog cubre el agotamiento de la VRAM durante una generación — por ejemplo, abres otra aplicación GPU en plena transmisión.
- En NVIDIA, la VRAM libre se mide (lecturas reales de nvidia-smi, sondeadas cada pocos segundos), no se estima. Una tendencia mala desencadena una alerta suave; el cruce del suelo autocalibrado (400 MiB en el run validado) desencadena un reinicio controlado sobre una configuración degradada, y la configuración superviviente se persiste para que el próximo lanzamiento parta de ahí.
- El reinicio no es invisible. Una generación en curso en el momento del reinicio se pierde, y el watchdog lo dice en su propio mensaje crítico. Ninguna sobrepromesa de continuidad.
- Run validado bajo presión externa real (
validation/WATCHDOG.md): suelo cruzado con 102 MiB libres, recuperado en 223,9 s a un contexto 8192 → 4096 — mientras el servidor de presión seguía ocupando su VRAM. Contraprueba sobre generaciones normales después: 0 soft alerts, 0 interventions. - En Vulkan y Apple, la VRAM libre es una estimación, no lo bastante fiable para actuar: el watchdog se rebaja honestamente a vigilancia de proceso + salud, y lo anuncia en su primer evento.
Límite conocido: llama.cpp no sabe reducir en caliente el KV-cache de un servidor en marcha; la única acción en runtime es por tanto ese reinicio controlado. Si el upstream entrega el redimensionamiento en caliente del KV, VRAMPilot lo adoptará y retirará el reinicio para esa vía.
Requisitos previos
Python 3.9+ es el único requisito previo declarado de la instalación pip/pipx — todo lo demás (incluido el binario del motor de inferencia) se descarga y se verifica en el primer lanzamiento.
- Python 3.9+. Es el único requisito previo declarado de la distribución pip/pipx.
- Ningún llama-server necesario. El primer lanzamiento resuelve uno en este orden:
$LLAMA_SERVER→ PATH → caché local → descarga del build llama.cpp fijado b9592 para tu SO y tu GPU, con verificación SHA256 obligatoria — un hash que no coincide elimina el archivo y se detiene en seco, sin solución de repliegue. El manifest fija 7 cibles (Windows Vulkan/CUDA/CPU, Linux Vulkan/CPU, macOS arm64/x64). - Por defecto: Vulkan en Windows y Linux (un único binario para NVIDIA, AMD e Intel), Metal en macOS, CUDA opt-in vía
GOVERNOR_BACKEND=cuda. GOVERNOR_SERVER_BASE_URLpuede apuntar la descarga hacia cualquier espejo que controles (tu servidor, un NAS, un recurso compartido aislado) — los hashes fijados siguen aplicándose, así que ningún espejo puede sustituir los binarios. Siempre puedes pasar--server /chemin/vers/llama-serveren su lugar.