> 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/nemo/rl/0-3-0/environment-variable-precedence-in-ne-mo-rl/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fr.nvidia-localization.ferndocs.com/_mcp/server. # Ordre de Précédence des Variables d'Environnement dans NeMo RL 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](https://github.com/NVIDIA-NeMo/RL/blob/def76820d7838c63c1ee4900e63f73a93d927ff2/nemo_rl/models/policy/megatron_policy_worker.py#L338) 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=` ### 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 : ```yaml 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](https://github.com/NVIDIA-NeMo/RL/blob/def76820d7838c63c1ee4900e63f73a93d927ff2/nemo_rl/models/generation/vllm.py#L88).