Dashboard Streamlit pour benchmarker et optimiser automatiquement les paramètres de llama.cpp.
- 📦 Gestion des modèles : Scan local + téléchargement depuis Hugging Face
- ⚡ Benchmark : Exécution de
llama-benchavec paramètres personnalisables - 📊 Sweeps : Exploration de paramètres (1D ou multi-paramètres)
- 🤖 HyperOptimus : Optimisation automatique via Optuna (TPE)
- 📈 Historique : Visualisation et comparaison des runs
- 🖥️ Multi-hardware : Détection automatique GPU/CPU
# 1. Cloner et setup (une seule fois)
git clone https://github.com/BerthalonLucas/llama-cpp-optimus-bench.git
cd llama-cpp-optimus-bench
./llama.sh setup
# 2. Placer un modèle GGUF dans models/
cp /path/to/model.gguf models/
# 3. Optimiser !
./llama.sh optimize model.gguf --preset fast- Python 3.10+
- Docker + docker compose plugin
- GPU NVIDIA + nvidia-container-toolkit (recommandé, CPU aussi supporté)
docker --version # Docker version 24.0+
docker compose version # Docker Compose version v2.0+nvidia-smi # Doit afficher votre GPUgit clone https://github.com/BerthalonLucas/llama-cpp-optimus-bench.git
cd llama-cpp-optimus-bench
./llama.sh setupCette commande :
- ✅ Crée les dossiers
models/etruns/ - ✅ Crée l'environnement Python
.venv/ - ✅ Installe les dépendances
- ✅ Build l'image Docker llama.cpp
# Cloner
git clone https://github.com/BerthalonLucas/llama-cpp-optimus-bench.git
cd llama-cpp-optimus-bench
# Créer les dossiers
mkdir -p models models/hf-cache runs
# Python venv
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements_dashboard.txt
# Docker
docker compose build --pull llama-cpp# Pour télécharger des modèles privés depuis Hugging Face
export HF_TOKEN="hf_xxx..."./llama.sh setup./llama.sh dashboard [--port 8510] [--host 0.0.0.0]Ouvre http://localhost:8510 dans votre navigateur.
# Optimisation rapide (~5 min, 20 trials)
./llama.sh optimize my-model.gguf --preset fast
# Optimisation équilibrée (~30 min, 50 trials)
./llama.sh optimize my-model.gguf --preset mid
# Optimisation approfondie (~1-2h, 100 trials)
./llama.sh optimize my-model.gguf --preset high
# Options avancées
./llama.sh optimize my-model.gguf --trials 30 --ctx-max 16384 --ctx-min 4096# Lancer un serveur avec config optimisée
./llama.sh server --model models/my-model.gguf -ngl 99 -c 16384 --flash-attn
# Benchmark manuel
./llama.sh bench --model /models/my-model.gguf -ngl 99 -p 512 -n 128
# Shell interactif
./llama.sh shell| Commande | Description |
|---|---|
./llama.sh setup |
Installation initiale (venv, deps, docker) |
./llama.sh dashboard |
Lance le dashboard web (port 8510) |
./llama.sh optimize <model> |
Optimisation HyperOptimus en CLI |
./llama.sh server [args] |
Lance llama-server |
./llama.sh bench [args] |
Lance llama-bench |
./llama.sh shell |
Shell interactif dans le conteneur |
| Option | Description | Défaut |
|---|---|---|
--preset |
Intensité : fast, mid, high |
fast |
--trials |
Nombre d'essais Optuna | selon preset |
--ctx-min |
Contexte minimum | 2048 |
--ctx-max |
Contexte maximum | auto (selon VRAM) |
--weight-tg |
Poids Text Generation | 0.5 |
--weight-pp |
Poids Prompt Processing | 0.3 |
--weight-ctx |
Poids Context bonus | 0.2 |
L'optimiseur automatique utilise Optuna avec l'algorithme TPE pour trouver les meilleurs paramètres :
| Paramètre | Plage | Description |
|---|---|---|
ctx |
2048-65536 | Taille du contexte |
batch |
512-8192 | Taille du batch |
ubatch |
256-4096 | Micro-batch |
threads |
4-16 | Threads CPU |
flash_attn |
0/1 | Flash Attention |
ngl |
0-999 | Couches GPU |
score = α × TG + β × PP_normalized + γ × CTX_bonus
PP_normalized = PP × (ctx^0.4 / 1000)
CTX_bonus = log2(ctx/1000) × 20
- TG : vitesse de génération (tokens/s)
- PP : vitesse de traitement du prompt (tokens/s)
- CTX : bonus pour les grands contextes
llama-cpp-optimus-bench/
├── llama.sh # 🔧 Script principal (point d'entrée)
├── cli.py # 🖥️ CLI Python pour HyperOptimus
├── compose.yml # 🐳 Docker Compose config
├── Dockerfile # 🐳 Image llama.cpp + CUDA
├── requirements_dashboard.txt
│
├── models/ # 📦 Vos modèles GGUF (gitignored)
│ └── hf-cache/ # Cache Hugging Face
│
├── runs/ # 📊 Historique des runs (gitignored)
│ ├── bench/
│ ├── hyperoptimus/
│ └── sweeps/
│
└── streamlit_dashboard/ # 🌐 Application web
├── streamlit_app.py # Point d'entrée Streamlit
├── core/ # Logique métier
│ ├── hyperoptimus.py # Optimisation Optuna
│ ├── bench.py # Exécution llama-bench
│ └── ...
├── pages/ # Pages Streamlit
└── ui/ # Composants UI
Pour télécharger des modèles depuis le dashboard :
| Format | Exemple |
|---|---|
hf.co/<org>/<repo>:<quant> |
hf.co/unsloth/Qwen3-0.6B-GGUF:Q4_K_M |
<org>/<repo>:<quant> |
TheBloke/Mistral-7B-GGUF:Q5_K_M |
<org>/<repo> |
unsloth/Qwen3-0.6B-GGUF (sélection manuelle) |
# Le modèle doit être dans models/
ls models/
# ou spécifier le chemin complet
./llama.sh optimize /chemin/absolu/model.gguf# Vérifier que Docker fonctionne
docker run hello-world
# Rebuild avec logs
docker compose build --pull --no-cache llama-cpp# Vérifier nvidia-container-toolkit
nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smiMIT