Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/arch_exp/turpan/ressources_ia/HPO/optuna.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ Optuna est une bibliothèque d’optimisation d’hyperparamètres moderne, effi
Contrairement à Ray Tune, qui fonctionne bien sur un seul nœud, **Optuna supporte naturellement les environnements multi‑nœuds sur Turpan**, via une base de données partagée SQLite que chaque worker met à jour. Cela permet de lancer des centaines de trials en parallèle sur plusieurs GPU et plusieurs nœuds.

Ce document explique comment utiliser Optuna sur Turpan :
- [copier les fichiers d’exemple](#copier-lexemple-optuna)
- [Copier les fichiers d’exemple](#copier-lexemple-optuna)
- [Structure du répertoire](#structure-du-répertoire)
- [installer Optuna dans le conteneur](#installer-optuna-dans-le-conteneur-turpan)
- [fonctionnement d’Optuna sur Turpan (multi‑nœuds)](#fonctionnement-doptuna-sur-turpan-multinœuds)
- [écrire votre fonction `objective(trial)` dynamique](#la-fonction-objectivetrial--cœur-doptuna)
- [Installer Optuna dans le conteneur](#installer-optuna-dans-le-conteneur-turpan)
- [Fonctionnement d’Optuna sur Turpan (multi‑nœuds)](#fonctionnement-doptuna-sur-turpan-multinœuds)
- [Écrire votre fonction `objective(trial)` dynamique](#la-fonction-objectivetrial--cœur-doptuna)
- [Script SBATCH (multi‑nœuds, multi‑GPU)](#script-sbatch-multinœuds-multigpu)
- [récupérer le meilleur modèle](#récupérer-le-meilleur-modèle)
- [Récupérer le meilleur modèle](#récupérer-le-meilleur-modèle)
- [Algorithmes d'optimisation avancés dans Optuna](#algorithmes-doptimisation-avancés-dans-optuna)
- [Visualisations Optuna](#visualisations-optuna)
- [Adapter l’exemple à des modèles plus grands (LLM)](#adapter-lexemple-à-des-modèles-plus-grands-llm)
Expand Down
21 changes: 4 additions & 17 deletions docs/arch_exp/turpan/ressources_ia/HPO/ray_tune.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ Ce document explique comment lancer Ray Tune sur le cluster Turpan en utilisant
- [Modèle MNIST dynamique](#modèle-mnist-dynamique)
- [Adapter pour des expériences LLM](#adapter-pour-des-expériences-llm)
- [Lancer le job](#lancer-le-job)
- [Évolutivité attendue](#évolutivité-attendue)
- [Algorithmes de recherche avancés](#utiliser-des-algorithmes-de-recherche-avancés-bohb-hebo-optuna-bayesopt)

---
Expand Down Expand Up @@ -58,7 +57,6 @@ ray_tune/
│ ├── mnist_ddp.py
│ ├── ray_tune.py
│ ├── run-ray_tune_on_2gpus_Turpan.sh
│ ├── run-ray_tune_on_8gpus_Turpan.sh
├── data
│ └── MNIST/ (dataset MNIST téléchargé)
└── README.txt
Expand All @@ -71,7 +69,6 @@ ray_tune/
| `mnist_ddp.py` | Script d'entraînement utilisant PyTorch |
| `ray_tune.py` | Script principal Ray Tune pour l'HPO |
| `run-ray_tune_on_2gpus_Turpan.sh` | Script SLURM pour lancer Ray Tune sur 2 GPU |
| `run-ray_tune_on_8gpus_Turpan.sh` | Script SLURM pour lancer Ray Tune sur 8 GPU |
| `data/MNIST` | Dataset MNIST (téléchargé automatiquement si manquant) |
| `README.txt` | Instructions et notes |

Expand Down Expand Up @@ -125,7 +122,7 @@ Chaque essai utilise par exemple :
tune.with_resources(original_main, resources={"cpu": 4, "gpu": 1})
```

Cela signifie que chaque *trial* consomme 1 GPU. Si chaque nœud offre 2 GPU → 2 trials simultanés par noeud. Avec 4 nœuds → 8 trials en parallèle.
Cela signifie que chaque *trial* consomme 1 GPU. Si chaque nœud offre 2 GPU → 2 trials simultanés par noeud.

Si vous voulez qu'un *trial* utilise plusieurs GPU, changez `"gpu": 2` et adaptez le code d'entraînement pour utiliser `DistributedDataParallel` ou un schéma multi-GPU.

Expand Down Expand Up @@ -230,8 +227,8 @@ Supprimez les parties liées à MNIST (dataset, transformations) et adaptez le p

## Lancer le job

Dans `code_and_slurm-scripts` il y a deux exemples prêts à être lances `run-ray_tune_on_2gpus_Turpan.sh` et `run-ray_tune_on_8gpus_Turpan.sh`
Pour les lances il suffit de :
Dans `code_and_slurm-scripts` il y a un exemple prêt à être lancé `run-ray_tune_on_2gpus_Turpan.sh`.
Pour les lancer il suffit de :

```bash
sbatch run-ray_tune_on_2gpus_Turpan.sh
Expand All @@ -249,16 +246,6 @@ placement --checkme

---

## Évolutivité attendue
Si chaque essai demande 1 GPU et que `num_samples=8` :
- 1 nœud = 2 GPUs → 2 essais simultanés
- 4 nœuds = 8 GPUs → 8 essais simultanés (tous les essais peuvent s'exécuter en parallèle)
- Le temps total ≈ temps d'entraînement d'un modèle (si le nombre d'essais ≤ nombre de GPUs)

`num_samples` définit le nombre total d'essais Ray lancés (échantillonnés dans l'espace d'hyperparamètres). Ce n'est pas nécessairement égal au nombre de combinaisons possibles : Ray échantillonne `num_samples` points dans l'espace.

---

## Utiliser des algorithmes de recherche avancés (BOHB, HEBO, Optuna, BayesOpt)
Ray Tune permet de remplacer la recherche aléatoire par des algorithmes adaptatifs. Ajoutez un *search_alg* au `Tuner` :

Expand All @@ -279,7 +266,7 @@ tuner = tune.Tuner(
mode="min",
num_samples=50, # nombre total d'essais
search_alg=search_alg, # l'algorithme d'optimisation
max_concurrent_trials=8,
max_concurrent_trials=2,
),
)
tuner.fit()
Expand Down