Documentation
VRAMPilot s'installe comme un paquet Python et n'a besoin de rien d'autre : pas d'installation de llama.cpp, pas de téléchargement manuel d'un binaire llama-server. Cette page couvre l'installation, le fonctionnement de l'échelle de récupération, ce qui est persisté, le comportement du watchdog, et les prérequis.
Installation
pipx install vrampilot # ou : pip install vrampilot
Lancez-le sur un modèle :
vrampilot votre-modele.gguf --ctx 8192 # CLI : plan -> lancement -> récupération -> service
vrampilot-web # UI web : collez un chemin .gguf -> Launch -> chat
L'interface web écoute sur http://127.0.0.1:8770. Les deux points d'entrée aboutissent à un endpoint compatible OpenAI utilisable par n'importe quel client. La forme module fonctionne aussi : python -m vrampilot.cli / python -m vrampilot.web.
Comment fonctionne l'échelle de récupération
Quand le serveur ne démarre pas (ou démarre mais ne peut pas générer de token), VRAMPilot lit le log d'erreur, le classifie comme out-of-memory, se replie d'un cran, et réessaie. L'ordre est conçu pour préserver le plus de capacité :
- La précision du KV-cache d'abord (f16 -> q8_0 -> q4_0). Cela réduit le KV-cache tout en gardant votre contexte complet. C'est lossy sur le raisonnement long — le rapport le dit.
- Puis réduire le contexte — divisé par deux jusqu'à ce que ça tienne.
- Puis décharger davantage vers le CPU — plus d'expert-offload MoE, ou moins de couches GPU pour les modèles denses.
- Le plancher — si rien ne tient, il le dit honnêtement au lieu de faire semblant.
Exemple validé (trace brute dans validation/RESULTS.md) : face à une configuration volontairement impossible à 262144 de contexte, il a récupéré à 131072 de contexte — 4x plus qu'un repli sur le seul contexte n'en aurait gardé — et a servi une vraie réponse.
Le détecteur d'OOM reconnaît les chaînes d'erreur CUDA, Vulkan, ROCm et Metal.
Persistance
Chaque configuration qui a réellement démarré est persistée par (empreinte machine, hash de l'en-tête du modèle, contexte demandé) dans une base SQLite locale, ~/.governor/configs.db (le moteur garde le nom « governor » à dessein). En append-only : une configuration qui ne marche plus est gardée en historique, jamais écrasée. Le lancement suivant démarre directement sur la configuration connue-bonne ; un changement de driver ou de GPU invalide l'entrée et déclenche un nouveau plan.
Pourquoi c'est important : une tentative ratée coûte un chargement complet du modèle — mesuré à ~220 s par tentative pour un modèle MoE de 9,5 Go chargé avec --no-mmap sur le disque de la machine du gate. Le cache existe pour ne jamais payer ça deux fois.
Contrôles de transparence :
vrampilot configs list # inspecter tout ce qu'il retient
vrampilot modele.gguf --no-cache # ignorer le cache, forcer un nouveau plan
Rien ne quitte votre machine.
Comportement du watchdog
Pendant que le serveur tourne, le watchdog couvre l'épuisement de la VRAM pendant une génération — par exemple, vous ouvrez une autre application GPU en plein stream.
- Sur NVIDIA, la VRAM libre est mesurée (vraies lectures nvidia-smi, sondées toutes les quelques secondes), pas estimée. Une mauvaise tendance déclenche une alerte douce ; le franchissement du plancher auto-calibré (400 MiB dans le run validé) déclenche un redémarrage contrôlé sur une configuration dégradée, et la configuration survivante est persistée pour que le prochain lancement parte de là.
- Le redémarrage n'est pas invisible. Une génération en cours au moment du redémarrage est perdue, et le watchdog le dit dans son propre message critique. Aucune sur-promesse de continuité.
- Run validé sous vraie pression externe (
validation/WATCHDOG.md) : plancher franchi à 102 MiB libres, récupéré en 223,9 s à un contexte 8192 → 4096 — pendant que le serveur de pression occupait toujours sa VRAM. Contre-test sur des générations normales ensuite : 0 soft alerts, 0 interventions. - Sur Vulkan et Apple, la VRAM libre est une estimation, pas assez fiable pour agir : le watchdog se déclasse honnêtement en surveillance processus + santé, et l'annonce dans son premier événement.
Limite connue : llama.cpp ne sait pas réduire à chaud le KV-cache d'un serveur en marche ; la seule action runtime est donc ce redémarrage contrôlé. Si l'amont livre le redimensionnement à chaud du KV, VRAMPilot l'adoptera et retirera le redémarrage pour ce chemin.
Prérequis
Python 3.9+ est l'unique prérequis déclaré de l'installation pip/pipx — tout le reste (y compris le binaire du moteur d'inférence) est téléchargé et vérifié au premier lancement.
- Python 3.9+. C'est le seul prérequis déclaré de la distribution pip/pipx.
- Aucun llama-server nécessaire. Le premier lancement en résout un dans cet ordre :
$LLAMA_SERVER→ PATH → cache local → téléchargement du build llama.cpp épinglé b9592 pour votre OS et votre GPU, avec vérification SHA256 obligatoire — un hash qui ne correspond pas supprime le fichier et arrête net, sans solution de repli. Le manifest épingle 7 cibles (Windows Vulkan/CUDA/CPU, Linux Vulkan/CPU, macOS arm64/x64). - Par défaut : Vulkan sur Windows et Linux (un seul binaire pour NVIDIA, AMD et Intel), Metal sur macOS, CUDA en opt-in via
GOVERNOR_BACKEND=cuda. GOVERNOR_SERVER_BASE_URLpeut pointer le téléchargement vers n'importe quel miroir que vous contrôlez (votre serveur, un NAS, un partage isolé) — les hashs épinglés s'appliquent toujours, donc aucun miroir ne peut substituer les binaires. Vous pouvez toujours passer--server /chemin/vers/llama-serverà la place.