Skip to main content
VERL (Volcano Engine Reinforcement Learning) est un framework open source de post-entraînement RL pour les LLM. VERL intègre un backend de traçage Weave qui vous permet de tracer la génération des LLM et les appels d’outil, ainsi que les métriques d’entraînement déjà enregistrées par W&B. Utilisez Weave avec VERL pour :
  • Inspecter chaque étape d’une trajectoire de rollout, y compris les prompts, les réponses du modèle et les invocations d’outils.
  • Filtrer les trajectoires par étape, index d’échantillon, numéro de rollout et nom d’expérience.
  • Comparer plusieurs trajectoires côte à côte afin de déboguer le comportement des agents à différentes étapes de l’entraînement.

Prérequis

  • Un compte W&B et une clé API.
  • Une installation de VERL prenant en charge le traçage des rollouts. Le traçage des rollouts a été ajouté dans verl#2345.
  • Une configuration de rollouts asynchrones. Le traçage s’applique uniquement aux rollouts asynchrones ; les rollouts synchrones ne sont pas tracés.

Activer le traçage Weave

Définissez votre clé API W&B dans l’environnement afin que VERL puisse s’authentifier auprès de votre compte W&B :
Ajoutez ensuite les options suivantes à votre commande d’entraînement VERL :
  • actor_rollout_ref.rollout.trace.backend=weave : sélectionne Weave comme backend de traçage.
  • actor_rollout_ref.rollout.mode=async : active le rollout asynchrone pour vLLM ou SGLang. Le traçage n’a aucun effet sur les rollouts synchrones.
  • trainer.project_name : définit le projet dans lequel vous souhaitez enregistrer les traces et les métriques.
  • trainer.experiment_name : définit le nom de votre expérience.
  • trainer.logger=['console','wandb'] : active le journal wandb en plus de Weave afin que les métriques et les traces apparaissent dans le même projet.
La commande obtenue se présente comme suit :
Weave est initialisé automatiquement à partir de votre projet W&B et du nom de votre expérience. Il n’est pas nécessaire d’appeler weave.init().

Ajuster le volume de traces

Par défaut, VERL trace chaque échantillon à chaque rollout, ce qui peut générer de très grandes quantités de données de trace. Vous pouvez limiter ce volume en définissant les champs suivants dans votre fichier de configuration ppo_trainer.yaml :
  • max_samples_per_step_per_worker : le nombre d’échantillons uniques tracés par les workers à chaque étape d’entraînement. Par défaut, cette valeur est définie sur null afin de tracer tous les échantillons.
  • token2text : définissez cette valeur sur True pour ajouter les valeurs décodées de prompt_text et response_text à la sortie de ToolAgentLoop.run. Par défaut, cette valeur est définie sur False pour préserver les performances. Activez cette option si vous souhaitez lire directement les prompts et les complétions dans l’interface Weave.
Les champs obtenus se présentent comme suit dans le fichier :

Afficher les traces

Pour afficher les traces émises pendant l’entraînement, ouvrez la Page du projet de votre projet W&B et sélectionnez Traces. Chaque trace correspond à une trajectoire de rollout. Vous pouvez sélectionner plusieurs traces et utiliser la vue de comparaison de Weave pour examiner les différences entre les trajectoires. Cela peut vous aider à déboguer les changements de comportement de l’agent au fil des étapes d’entraînement ou des expériences.

Tracer des fonctions supplémentaires

VERL propose deux outils pour étendre la couverture de traçage par défaut :
  • rollout_trace_op : un décorateur qui correspond à weave.op et marque une méthode d’une instance de classe pour le traçage. Par défaut, seules quelques méthodes sont décorées. Vous pouvez ajouter ce décorateur aux méthodes de votre boucle d’agent personnalisée ou de vos implémentations d’outils afin de capturer davantage de détails.
  • rollout_trace_attr : un gestionnaire de contexte qui marque le point d’entrée d’une trajectoire et joint des métadonnées de trajectoire (index de l’échantillon, étape, numéro de rollout, nom de l’expérience). Si vous introduisez un nouveau type d’agent, encapsulez le point d’entrée de sa trajectoire avec rollout_trace_attr afin que la trace soit associée au run.
Voir la documentation de VERL sur le traçage des rollouts pour plus d’informations sur la configuration.