Passer à la navigation

Ordre de Précédence des Variables d’Environnement dans NeMo RL

Afficher en Markdown

Il existe plusieurs façons de transmettre des variables d’environnement aux workers Ray dans NeMo RL. Ce document explique chacune des méthodes et pourquoi elles sont utiles.

Ordre de Précédence

1. Variables d’Environnement du Runtime Ray (le plus bas)

  • Définies via les décorateurs ray.remote(runtime_env={'env_vars': {...}}).
  • Appliquées à toutes les instances de classes de workers spécifiques. Elles définissent les variables d’environnement par défaut pour la classe si elles ne sont pas remplacées par une méthode de plus haute priorité.
  • Exemple : @ray.remote(runtime_env=get_runtime_env_for_policy_worker("megatron_policy_worker")). Voir ici où get_runtime_env_for_policy_worker sera appliqué à toutes les instances de MegatronPolicyWorker.

2. Variables d’Environnement au Niveau Système (moyen)

  • Définies via export dans le shell ou os.environ en Python.
  • Utiles pour contrôler les variables d’environnement à un niveau élevé. Si elles ne sont pas remplacées par des méthodes de plus haute priorité, tous les workers hériteront de ces variables d’environnement.
  • Exemple : export HF_TOKEN=<votre_token>

3. env_vars de Configuration YAML (élevé)

  • Définies dans les fichiers de configuration YAML sous policy.megatron_cfg.env_vars ou policy.dtensor_cfg.env_vars.
  • Utiles pour contrôler les variables d’environnement au niveau d’une expérience.
  • Exemple :
    policy:
    megatron_cfg:
    env_vars:
    PYTORCH_CUDA_ALLOC_CONF: "expandable_segments:False"

4. Méthode configure_worker Spécifique au Worker (le plus élevé)

  • Définies via la méthode statique configure_worker dans les classes de workers.
  • Appliquées à des instances de workers spécifiques en fonction de la configuration.
  • Voir un exemple dans VllmGenerationWorker ici.