From d474887f7fcd570d1fb615ab26e316a4c9b666a5 Mon Sep 17 00:00:00 2001 From: "Alejandro Estana (CALMIP)" Date: Wed, 3 Dec 2025 16:25:12 +0100 Subject: [PATCH] Adding HPO index and improving optuna doc --- .../turpan/ressources_ia/HPO/index.md | 14 +++++++++++ .../turpan/ressources_ia/HPO/optuna.md | 25 +++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 docs/arch_exp/turpan/ressources_ia/HPO/index.md diff --git a/docs/arch_exp/turpan/ressources_ia/HPO/index.md b/docs/arch_exp/turpan/ressources_ia/HPO/index.md new file mode 100644 index 00000000..c291da27 --- /dev/null +++ b/docs/arch_exp/turpan/ressources_ia/HPO/index.md @@ -0,0 +1,14 @@ +# Hyperparameter Optimization (HPO) + + +L'optimisation d'hyperparamètres (HPO) est une étape cruciale pour +obtenir les meilleures performances d'un modèle d'apprentissage +automatique. +Sur le cluster Turpan, deux outils sont proposés : + +- [**Ray Tune**](./ray_tune.md) : sur ** un seul + nœud**, jusqu'à **2 GPUs**. +- [**Optuna**](./optuna.md) : adapté pour **configurations multi-nœuds et + multi-GPUs**. + +------------------------------------------------------------------------ diff --git a/docs/arch_exp/turpan/ressources_ia/HPO/optuna.md b/docs/arch_exp/turpan/ressources_ia/HPO/optuna.md index 0a30a3e5..97a145c2 100644 --- a/docs/arch_exp/turpan/ressources_ia/HPO/optuna.md +++ b/docs/arch_exp/turpan/ressources_ia/HPO/optuna.md @@ -43,6 +43,7 @@ optuna/ │ ├── optuna_mnist.py │ ├── check_best_model.py │ ├── run-optuna-multinode_Turpan.sh +│ ├── init_optuna_db.py │ ├── study.db (fichier SQLite partagé) ├── data/ │ └── MNIST/ (dataset MNIST) @@ -57,8 +58,9 @@ optuna/ |--------|------| | `optuna_mnist.py` | Script principal Optuna (fonction objective + entraînement MNIST) | | `check_best_model.py` | Lit le meilleur modèle depuis la base de données | -| `run-optuna-multinode_Turpan.sh` | Script SLURM multi‑nœuds utilisant apptainer | -| `study.db` | Base SQLite contenant les résultats (modifiable) | +| `run-optuna-multinode-Turpan.sh` | Script SLURM multi‑nœuds utilisant apptainer | +| `init_optuna_db.py` | Crée la base de donnes. Code lancé aussi par run-optuna-multinode-Turpan.sh | +| `study.db` | Base SQLite contenant les résultats (crée par le code) | | `data/MNIST` | Dataset téléchargé automatiquement | | `README.txt` | Instructions | @@ -167,17 +169,30 @@ Voici la version adaptée Turpan : set -euo pipefail # ---------- USER CONFIG ---------- -USER_WORKDIR=/tmpdir/bhupen/trash/optuna/code_and_slurm-scripts # must be shared across nodes +USER_WORKDIR="${SLURM_SUBMIT_DIR}" # must be shared across nodes CONTAINER=/work/conteneurs/sessions-interactives/pytorch-24.02-py3-calmip-si.sif PY_SCRIPT=$USER_WORKDIR/optuna_mnist.py STUDY_DB=sqlite:///study.db +DB_PATH="$USER_WORKDIR/study.db" STUDY_NAME="mnist_hpo" TOTAL_TRIALS=500 # total trials you want to run across all workers # ----------------------------------- +INIT_SCRIPT=$USER_WORKDIR/init_optuna_db.py mkdir -p "$USER_WORKDIR" mkdir -p logs +# ====================================================== +# CREATE DB BEFORE RUNNING THE CODE +# ====================================================== +echo "🟦 Initializing DB before starting parallel workers..." + +apptainer exec \ + --bind /tmpdir \ + "$CONTAINER" \ + python "$INIT_SCRIPT" "$STUDY_DB" "$STUDY_NAME" +echo "[SBATCH] DB ready. Launching workers…" + # Ensure $HOME/.local/bin is in PATH for the container export PATH="$HOME/.local/bin:$PATH" @@ -295,7 +310,7 @@ Et définir un espace : ## Lancer le job ```bash -sbatch run-optuna-multinode_Turpan.sh +sbatch run-optuna-multinode-Turpan.sh ``` Suivre la file : @@ -323,7 +338,7 @@ Si vous lancez 500 trials avec 4 GPU : Avec 8 GPU → 8 trials simultanés Avec 16 GPU → 16 trials simultanés -Optuna scale **parfaitement** tant qu’il y a des trials à lancer. +Optuna scale bien tant qu’il y a des trials à lancer. Ce document fournit un exemple complet utilisant MNIST, mais le schéma peut être étendu à des modèles plus complexes comme des CNN plus profonds ou des modèles transformers.