FP8 pour NeMo-RL
Ce module fournit une suite d’outils pour permettre la quantification FP8 pour les grands modèles de langage. Ce module est encore en développement. Actuellement, nous prenons en charge la génération FP8, en utilisant FP8 de style Deepseek (mise à l’échelle de sous-canal).
NeMo-RL applique des corrections à plusieurs fonctions vLLM pour permettre des générations FP8 pour l’apprentissage par renforcement. La fonction init_fp8 corrige les composants vLLM clés lors de l’initialisation :
RayDistributedExecutor: Pour l’inférence multi-GPU, l’exécuteur est corrigé pour s’assurer que chaque processus worker applique les mêmes correctifs FP8 avant l’initialisation du modèle.- Utilitaires de Quantification : Les fonctions au sein de
vllm.model_executor.layers.quantizationsont remplacées par des versions qui prennent en charge la mise à l’échelle de puissance de 2 et d’autres fonctionnalités personnalisées. - Chargement des Poids : Une fonction personnalisée
load_weightsgère la quantification à la volée des poids du modèle d’un format de précision supérieure vers FP8 avec les facteurs de mise à l’échelle corrects.
Utilisation
Les générations FP8 sont recommandées d’être configurées avec les paramètres suivants :
Précision
Nous observons sur la recette Llama 8b une perte de précision d’environ 5% avec les générations FP8. La convergence est toujours en cours de recherche active et les générations FP8 doivent être utilisées avec prudence. Nous recherchons des moyens de réduire l’écart de précision et d’améliorer encore les performances.