> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-2751.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Intégrez W&B à Stable Baselines3 pour suivre les expériences d'apprentissage par renforcement et journaliser les performances d'entraînement.

# Stable Baselines 3 PyTorch

[Stable Baselines 3](https://github.com/DLR-RM/stable-baselines3) (SB3) est un ensemble d'implémentations fiables d'algorithmes d'apprentissage par renforcement en PyTorch. L'intégration SB3 de W\&B :

* Enregistre des métriques telles que les pertes et les retours d'épisode.
* Téléverse des vidéos d'agents en train de jouer.
* Enregistre le modèle entraîné.
* Journalise les hyperparamètres du modèle.
* Journalise les histogrammes de gradients du modèle.

Consultez un [exemple de run d'entraînement SB3](https://wandb.ai/wandb/sb3/runs/1jyr6z10).

<div id="log-your-sb3-experiments">
  ## Journalisez vos expériences SB3
</div>

Pour journaliser l’entraînement SB3 dans W\&B, passez `WandbCallback` à la méthode `learn` de votre modèle :

```python theme={null}
from wandb.integration.sb3 import WandbCallback

model.learn(..., callback=WandbCallback())
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2751/26y6qBOOzah48_IG/images/integrations/stable_baselines_demo.gif?s=6dcba6fa0a5ac5c30ba20d6d2679871a" alt="Entraînement de Stable Baselines 3 avec W&B" width="2448" height="1544" data-path="images/integrations/stable_baselines_demo.gif" />
</Frame>

<div id="wandbcallback-arguments">
  ## Arguments de `WandbCallback`
</div>

Le tableau suivant décrit les arguments que vous pouvez passer à `WandbCallback` :

| Argument             | Utilisation                                                                                                                    |
| :------------------- | :----------------------------------------------------------------------------------------------------------------------------- |
| `verbose`            | Niveau de verbosité de la sortie SB3.                                                                                          |
| `model_save_path`    | Chemin du dossier dans lequel le modèle est enregistré. Par défaut, la valeur est `None`, donc le modèle n'est pas journalisé. |
| `model_save_freq`    | Fréquence d'enregistrement du modèle.                                                                                          |
| `gradient_save_freq` | Fréquence de journalisation des gradients. Par défaut, la valeur est `0`, donc les gradients ne sont pas journalisés.          |

<div id="basic-example">
  ## Exemple de base
</div>

L’intégration W\&B SB3 utilise les journaux générés par TensorBoard pour journaliser vos métriques.

```python theme={null}
import gym
from stable_baselines3 import PPO
from stable_baselines3.common.monitor import Monitor
from stable_baselines3.common.vec_env import DummyVecEnv, VecVideoRecorder
import wandb
from wandb.integration.sb3 import WandbCallback


config = {
    "policy_type": "MlpPolicy",
    "total_timesteps": 25000,
    "env_name": "CartPole-v1",
}
run = wandb.init(
    project="sb3",
    config=config,
    sync_tensorboard=True,  # téléversement automatique des métriques TensorBoard de sb3
    monitor_gym=True,  # téléversement automatique des vidéos des agents jouant au jeu
    save_code=True,  # facultatif
)


def make_env():
    env = gym.make(config["env_name"])
    env = Monitor(env)  # enregistre des statistiques telles que les retours
    return env


env = DummyVecEnv([make_env])
env = VecVideoRecorder(
    env,
    f"videos/{run.id}",
    record_video_trigger=lambda x: x % 2000 == 0,
    video_length=200,
)
model = PPO(config["policy_type"], env, verbose=1, tensorboard_log=f"runs/{run.id}")
model.learn(
    total_timesteps=config["total_timesteps"],
    callback=WandbCallback(
        gradient_save_freq=100,
        model_save_path=f"models/{run.id}",
        verbose=2,
    ),
)
run.finish()
```
