> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fr.nvidia-localization.ferndocs.com/fr/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fr.nvidia-localization.ferndocs.com/fr/_mcp/server.

# Déboguer les Applications NeMo RL

Ce guide explique comment déboguer des applications NeMo RL, couvrant deux scénarios. Il décrit d'abord la procédure pour déboguer des processus de workers/acteurs Ray distribués à l'aide du Débogueur Distribué Ray dans un environnement SLURM, puis détaille le débogage du script pilote principal.

## Déboguer Workers/Acteurs sur SLURM

Comme les programmes Ray peuvent générer plusieurs workers et acteurs, l'utilisation du Débogueur Distribué Ray est essentielle pour atteindre avec précision les points d'arrêt sur chaque worker.

### Prérequis

* Installer l'[extension de Débogueur Ray pour VS Code/Cursor](https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html).
* Lancer le [cluster interactif](/fr/nemo/rl/0-2-1/set-up-clusters#interactive-launching) avec `ray.sub`.
* Lancer VS Code/Cursor sur le nœud de connexion SLURM (où `squeue`/`sbatch` est disponible).
* Ajouter `breakpoint()` dans votre code sous les acteurs et tâches (c'est-à-dire les classes ou fonctions décorées avec `@ray.remote`).
* **S'assurer** que `RAY_DEBUG=legacy` n'est pas défini, car ce débogage nécessite le débogueur distribué par défaut.

### Transférer un Port depuis le Nœud Principal

Depuis le nœud de connexion SLURM, interroger les nœuds utilisés par le travail interactif `ray.sub` comme suit :

```sh
teryk@slurm-login:~$ squeue --me
             JOBID PARTITION        NAME     USER ST       TIME  NODES NODELIST(REASON)
           2504248     batch ray-cluster   terryk  R      15:01      4 node-12,node-[22,30],node-49
```

Le premier nœud est toujours le nœud principal, nous devons donc transférer le port du tableau de bord vers le nœud de connexion :

```sh
# Le trafic du $LOCAL du nœud de connexion est transféré vers node-12:$DASHBOARD_PORT
# - Si vous n'avez pas modifié le DASHBOARD_PORT par défaut dans ray.sub, il est probablement 8265
# - Choisir un LOCAL_PORT qui n'est pas utilisé. Si le cluster est multi-tenant, 8265
#   sur le nœud de connexion est probablement déjà utilisé par quelqu'un d'autre.
ssh -L $LOCAL_PORT:localhost:$DASHBOARD_PORT -N node-12

# Exemple de choix d'un port autre que 8265 pour le LOCAL_PORT
ssh -L 52640:localhost:8265 -N node-12
```

La sortie d'exemple du transfert de port avec `ssh` peut imprimer des journaux comme ceci, où l'avertissement est attendu.

```text
Warning: Permanently added 'node-12' (ED25519) to the list of known hosts.
bind [::1]:52640: Cannot assign requested address
```

### Ouvrir l'Extension du Débogueur Ray

Dans VS Code ou Cursor, ouvrez l'extension du Débogueur Ray en cliquant sur l'icône Ray dans la barre d'activité ou en recherchant "View: Show Ray Debugger" dans la Palette de Commandes (Ctrl+Shift+P ou Cmd+Shift+P).

![Étape 1 de l'Extension du Débogueur Ray](/fr/_fern-img/5606e9329725ef782649bd53a3653e3bf107b45d054b9dd6be9a08535acc626b.webp)

### Ajouter le Cluster Ray

Cliquez sur le bouton "Add Cluster" dans le panneau du Débogueur Ray.

![Étape 2 de l'Extension du Débogueur Ray](/fr/_fern-img/b170924b526f30ed94120a07470cf1f8ff8be6ab1b68d655e0ded742779732a1.webp)

Entrez l'adresse et le port que vous avez configurés lors de l'étape de transfert de port. Si vous avez suivi l'exemple ci-dessus en utilisant le port 52640, vous entrerez :

![Étape 3 de l'Extension du Débogueur Ray](/fr/_fern-img/3985011ad6dfe7cf19b452842b7ff636a1ac972489380fdc037f10df37b63203.webp)

### Ajouter un Point d'Arrêt et Exécuter Votre Programme

Le Panneau du Débogueur Ray pour le cluster `127.0.0.1:52640` liste tous les points d'arrêt actifs. Pour commencer le débogage, sélectionnez un point d'arrêt dans la liste déroulante et cliquez sur `Start Debugging` pour atteindre ce worker.

Notez que vous pouvez passer entre les points d'arrêt sur tous les workers avec ce processus.

![Étape 4 de l'Extension du Débogueur Ray](/fr/_fern-img/c15d24a1fb9305a3a26e77ea62330a66b9690cf48eb495bd124a883907d454e0.webp)

## Déboguer le Script Pilote

Par défaut, définir des points d'arrêt dans le script pilote (en dehors de `@ray.remote`) ne mettra pas en pause l'exécution du programme lors de l'utilisation de Ray. Pour permettre la pause à ces points d'arrêt, définissez la variable d'environnement à `RAY_DEBUG=legacy` :

```sh
RAY_DEBUG=legacy uv run ....
```