Particularités du Modèle
Ce document décrit les cas spéciaux et les comportements spécifiques aux modèles nécessitant un traitement personnalisé dans NeMo RL. Ces cas spéciaux sont contrôlés par l’énumération ModelFlag.
Gemma-3
Initialisation vLLM
Les modèles Gemma-3 présentent un problème spécifique avec l’initialisation des poids factices vLLM en raison d’un bug vLLM où un tampon normalizer est créé qui n’est pas présent dans le modèle Hugging Face. Cela provoque le réglage du tampon normalizer sur des poids factices à l’initialisation, qui ne sont jamais mis à jour avec les valeurs correctes lors du réajustement du modèle. Comme solution de contournement pour ce problème, nous n’utilisons pas l’initialisation des poids factices pour vLLM avec les modèles Gemma-3 et utilisons plutôt le paramètre load_format="auto" pour charger les poids complets à l’initialisation.
Traitement Spécial :
- Nous utilisons automatiquement
load_format="auto"pour les modèles Gemma-3 lors de l’initialisation de vLLM. - Cela évite les problèmes d’initialisation des poids factices, où les poids factices de ce tampon ne seraient jamais remplacés lors du réajustement.
Runtime vLLM V1
NeMo-RL utilise le runtime vLLM V1 pour l’inférence synchrone et asynchrone. Le runtime V1 offre de meilleures performances et stabilité pour l’inférence.
Traitement Spécial :
- Les modes d’inférence sync et async utilisent le runtime V1 par défaut.
- Les utilisateurs peuvent remplacer le runtime V0 en définissant la variable d’environnement
NRL_VLLM_USE_V1=0. - Important : L’implémentation asynchrone utilise toujours le runtime V1. Les utilisateurs qui ont besoin d’utiliser le runtime V0 doivent basculer vers l’inférence synchrone en définissant
policy.generation.vllm_cfg.async_engine=False.
Context Parallel avec FSDP2
-
NeMo-RL a implémenté cette fonctionnalité basée sur l’implémentation CP de torch implementation. Et nous héritons de ses limitations. Le support au niveau du modèle pour CP ne dépend que des arguments transmis à
torch.nn.functional.scaled_dot_product_attention. Actuellement, NeMo-RL transmet tous les masques d’attention à un dansmodel.forward. Pour Gemma-3, il n’ignorera pas le masque d’attention carattn_biasn’est pas None, ce qui n’est pas pris en charge par torch CP. Veuillez consulter l’assertion. -
Context parallel ne peut pas être utilisé avec l’empaquetage de séquence. L’empaquetage de séquence nécessite
attn_implementation="flash_attention_2", ce qui entre en conflit avec context parallel qui nécessite l’implémentation SDPA. Reportez-vous ici pour plus de détails. -
C’est un problème connu que context parallel ne peut pas être utilisé avec sequence parallel. Reportez-vous ici pour plus de détails.
Problèmes de Convergence de la Recette DeepScaleR
La recette DeepScaleR (par exemple, examples/configs/grpo-deepscaler-1.5b-8K.yaml) a été trouvée en proie à des problèmes de convergence lorsque les graphiques CUDA sont activés dans vLLM.
Traitement Spécial :
- Les graphiques CUDA doivent être désactivés en définissant
enforce_eager: Truedans la configuration vLLM (https://github.com/NVIDIA-NeMo/RL/pull/857 force l’exécution eager par défaut).
Délai de Rollout Asynchrone vLLM
La génération asynchrone vLLM a un délai configurable pour attendre les résultats d’échantillonnage individuels. Ceci est particulièrement important pour les séquences plus longues sur les grands modèles.
Si vous rencontrez des erreurs de délai dépassé, le système suggérera de doubler la valeur de délai actuelle.