Maison >Périphériques technologiques >IA >GRPO Fineding sur Deepseek-7b avec un peu
Deepseek a pris d'assaut le monde du traitement du langage naturel. Avec son échelle et ses performances impressionnantes, ce modèle de pointe excelle dans les tâches comme la réponse aux questions et la résumé de texte. Sa capacité à gérer la compréhension nuancée en fait un changement de jeu dans les industries. Le réglage fin améliore sa puissance, l'adaptant aux besoins de niche et fournissant rapidement des résultats précis. Fineding transforme Deepseek-7b d'un généraliste à un expert de domaine en le affinant sur des ensembles de données spécialisés. Ce blog explore comment le GRPO (optimisation générale du renforcement de renforcement) améliore le réglage fin avec l'apprentissage du renforcement, et comment l'optimise de la gestion de la mémoire, accélérant le processus de grands modèles comme Deepseek-7b. Ensemble, ces méthodes permettent un réglage fin plus rapide et rentable, entraînant des applications AI de nouvelle génération.
À la fin de ce blog, vous devriez pouvoir:
Cet article a été publié dans le cadre du Data Science Blogathon.
Deepseek-R1-Distill-Qwen-7b est un modèle de grande langue à la pointe de la technologie construit sur l'architecture QWEN. Avec une conception robuste et évolutive, il exploite des milliards de paramètres pour gérer des tâches NLP complexes telles que la génération de texte, la réponse aux questions et le résumé. La variante Deepseek-7b est une version distillée de ses homologues plus grandes, ce qui signifie qu'il conserve une grande partie des performances tout en étant plus efficace en termes de calcul et d'utilisation de la mémoire. Cela le rend bien adapté au déploiement dans des environnements où la vitesse d'inférence et la précision sont essentielles. Son architecture utilise des couches de transformateur avec des mécanismes d'auto-agence, ce qui le rend très efficace pour traiter les dépendances à long terme dans le texte.
À son cœur, Deepseek-7B utilise une architecture transformateur multicouche qui est très parallélisable, permettant une formation efficace sur les ensembles de données à grande échelle. Chaque couche se compose d'une série de modules d'auto-atténuation multiples et de réseaux à action directe. Le mécanisme d'attention aide le modèle à se concentrer sur les parties pertinentes de la séquence d'entrée pendant le traitement, ce qui le rend très efficace pour les tâches nécessitant une compréhension contextuelle.
Processus Deepseek-7b Les intégres des jetons par le codage de position, les couches d'attention et une couche d'adaptation, permettant une mise à l'échelle efficace des grands ensembles de données tout en conservant des résultats de haute qualité. Sa compréhension profonde du contexte améliore la généralisation entre les domaines après un réglage fin. Des méthodes telles que LORA améliorent l'efficacité de la formation en appliquant des mises à jour de faible rang, en rendant le réglage fin, même avec des ressources de calcul limitées.
GRPO (Optimisation de prélèvement de renforcement général) est une technique avancée conçue pour améliorer l'efficacité des modèles de grande langue fins. Il combine les principes de l'apprentissage du renforcement avec la pré-entraînement pour affiner le comportement du modèle en utilisant des signaux de récompense plutôt que une supervision directe. GRPO optimise les paramètres du modèle itérativement en utilisant une approche d'optimisation basée sur la stratégie.
Dans un scénario de réglage fin typique, le modèle est formé sur un ensemble de données supervisé, où il apprend directement des étiquettes de vérité au sol. En revanche, GRPO introduit un paradigme d'apprentissage par renforcement (RL) où le modèle est formé pour maximiser un signal de récompense qui guide son comportement. Ce processus permet au modèle de s'adapter de manière plus flexible aux nuances spécifiques aux tâches, améliorant à la fois la précision et la généralisation.
La formule clé pour l'optimisation des politiques dans GRPO peut être exprimée comme suit:
où:
Cette approche basée sur la stratégie garantit que le modèle s'adapte en permanence aux commentaires fournis lors de la formation, en se concentrant sur l'amélioration du signal de récompense qui correspond aux objectifs spécifiques à la tâche.
Dans GRPO, la fonction de récompense peut être définie en fonction des exigences de tâche spécifiques, guidant le modèle pour se concentrer sur le comportement souhaité. La récompense peut être fonction de plusieurs facteurs, tels que la précision, la mise en forme ou la cohérence logique. Par exemple, une fonction de récompense de l'exactitude r_correct pourrait être définie comme:
Ce mécanisme de rétroaction permet à GRPO d'affiner progressivement le modèle, mettant l'accent sur les domaines qui comptent le plus pour la tâche donnée.
Alors que GRPO introduit l'apprentissage du renforcement basé sur les politiques pour optimiser le processus de pré-formation, le PPO (optimisation de la politique proximale) est un autre algorithme largement utilisé dans l'apprentissage du renforcement, en particulier dans le contexte des grands modèles de réglage fin. PPO est connu pour sa stabilité et sa capacité à gérer les espaces d'action à haute dimension, ce qui le rend populaire pour la formation de modèles à grande échelle. Cependant, PPO nécessite souvent une grande quantité de données et peut être sensible aux hyperparamètres comme le taux d'apprentissage.
La différence clé entre GRPO et PPO réside dans la nature de l'optimisation des politiques. Dans PPO, la politique est mise à jour à l'aide d'un objectif coupé pour empêcher les écarts importants de la politique actuelle, ce qui peut conduire à une formation instable. La fonction d'objectif PPO est donnée par:
où:
Ce mécanisme de «coupure» dans l'OPP permet d'éviter les grandes mises à jour politiques qui pourraient conduire à l'instabilité, mais elle peut également ralentir le processus d'apprentissage, en particulier pour les grands modèles comme Deepseek-7b.
L'objectif coupé garantit que le modèle ne fait pas de grandes mises à jour instables en pénalisant de gros déviations dans la politique. Cependant, il introduit également un compromis entre la stabilité et la vitesse d'apprentissage, en particulier pour les modèles plus grands où le nombre de mises à jour et le taux d'apprentissage doivent être soigneusement réglés.
En revanche, GRPO utilise une structure de récompense plus adaptative et dynamique qui lui permet de maximiser directement les performances sur les mesures spécifiques à la tâche sans s'appuyer sur une approche de «région de confiance». La procédure d'optimisation dans GRPO ne nécessite pas d'écrasement, et son mécanisme d'apprentissage basé sur la récompense fournit une voie plus directe et efficace vers un réglage fin. En conséquence, GRPO nécessite souvent moins de mises à jour pour converger vers des performances optimales.
Les gradients pour la mise à jour des paramètres du modèle dans GRPO sont calculés en étant en rétablissement des récompenses via le modèle. Si la récompense r_t au pas de temps est calculée à partir de la sortie du modèle, la règle de mise à jour du gradient pour les paramètres θis:
Cette approche de descente de gradient est plus directe et efficace par rapport à la méthode d'écrêtage PPO, où les gradients sont ajustés en fonction de la fonction Advantage. Les principales différences entre PPO et l'algorithme GRPO sont résumées ci-dessous:
Feature | GRPO | PPO |
---|---|---|
Objective | Maximize cumulative reward over time. | Minimize the clipped objective for stable updates. |
Reward Signal | Task-specific adaptive rewards. | Advantage-based rewards with clipping. |
Training Stability | More flexible and direct. | Stability ensured via clipping mechanism. |
Optimization Mechanism | Direct reward maximization. | Clipped policy update. |
Use Case | Task-adaptive fine-tuning with rewards. | General RL tasks with stability concerns. |
Les modèles de gros langues finissent comme Deepseek-7b sont coûteux en calcul, nécessitant une mémoire et une puissance de traitement significatifs. Unsil est un cadre d'optimisation conçu pour accélérer la formation tout en réduisant considérablement la consommation de mémoire. Il est particulièrement bénéfique lors de l'utilisation de LORA (adaptation de faible rang) et du GRPO, car il assure une utilisation efficace des ressources GPU et permet un réglage fin sur le matériel de base de la consommation.
Unsloth introduit plusieurs optimisations qui améliorent l'efficacité du réglage du modèle:
Le processus de chargement du modèle à l'aide de Unsain est simple et permet une exécution efficace. Les détails de celle-ci sont couverts dans la section suivante.
En incorporant des insuffisants dans le pipeline de réglage fin, les chercheurs et les ingénieurs peuvent maximiser les performances de Deepseek-7b sans exécuter des limitations de calcul communes.
s'appuyant sur la fondation que nous avons posée dans les sections précédentes, où nous avons couvert l'architecture de Deepseek-7b et de l'algorithme GRPO, il est maintenant temps de se pencher dans les étapes pratiques nécessaires pour affiner le modèle. Cette section vous guidera à travers les étapes nécessaires, de la configuration de l'environnement à la configuration de l'entraîneur GRPO, y compris des extraits de code et des explications détaillées pour chaque partie du processus.
Le modèle Deepseek-7b, comme discuté dans la section 2, est un outil puissant pour gérer les tâches NLP à grande échelle, et lorsqu'elles sont associées à GRPO (optimisation générale de pré-élaction), elle devient encore plus efficace. En appliquant l'approche GRPO, nous pouvons affiner Deepseek-7b sur des tâches spécifiques à l'aide d'un cadre d'apprentissage de renforcement. Cela permet au modèle non seulement de produire de meilleurs résultats, mais aussi de s'adapter aux nouvelles données plus efficacement que les méthodes traditionnelles.
Explorons maintenant les étapes détaillées pour le réglage fin de Deepseek-7b en utilisant GRPO et un peu, tirant parti de Lora pour une utilisation efficace de la mémoire pendant l'entraînement.
Pour commencer, affiner Deepseek-7b, vous devez configurer l'environnement. Cela inclut l'installation de dépendances telles que les unis, Vllm et d'autres packages nécessaires. Voici la commande pour installer ces packages:
!pip install unsloth vllm datasets !pip install git+https://github.com/huggingface/trl.git
Explication:
Une fois ceux-ci installés, nous pouvons procéder à charger le modèle et démarrer le réglage fin.
Maintenant, nous allons charger le modèle Deepseek-7b en utilisant un peu. Le modèle sera chargé de LORA (adaptation de faible rang) pour un réglage fin efficace. Voici l'extrait de code pour cette étape:
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/DeepSeek-R1-Distill-Qwen-7B", max_seq_length=512, load_in_4bit=True, # Uses 4-bit quantization for memory efficiency fast_inference=True, # Enables fast inference for quicker processing max_lora_rank=32, # LoRA rank for fine-tuning efficiency gpu_memory_utilization=0.6 # Controls memory usage )
Explication:
Résultat attendu: Le modèle sera chargé en mémoire avec des configurations optimisées, prêtes à affiner avec Lora.
lora est utilisé pour optimiser la mémoire pour les grands modèles comme Deepseek-7b. En appliquant LORA, nous mettons à jour uniquement des matrices de bas rang au lieu de l'ensemble du modèle, ce qui rend la mémoire à réglage fin. Voici l'extrait de code:
model = FastLanguageModel.get_peft_model( model, r=32, # Rank of LoRA layers, which controls memory and efficiency target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], # Modules to apply LoRA to lora_alpha=32, # Scaling factor for LoRA use_gradient_checkpointing="unsloth", # Enables gradient checkpointing for long context fine-tuning random_state=3407 # Seed for reproducibility )
Explication:
Résultat attendu: Le modèle est désormais optimisé pour l'utilisation de la mémoire et peut être efficacement affiné sur les grands ensembles de données.
!pip install unsloth vllm datasets !pip install git+https://github.com/huggingface/trl.git
Explication:
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/DeepSeek-R1-Distill-Qwen-7B", max_seq_length=512, load_in_4bit=True, # Uses 4-bit quantization for memory efficiency fast_inference=True, # Enables fast inference for quicker processing max_lora_rank=32, # LoRA rank for fine-tuning efficiency gpu_memory_utilization=0.6 # Controls memory usage )
Explication:
Résultat attendu:
Ces fonctions de récompense guident le modèle vers la production de réponses qui sont non seulement correctes mais aussi bien structurées et dans le format souhaité.
Maintenant, nous allons configurer le Grpotrainer pour utiliser les fonctions de jeu de données et de récompense de formation. L'objet grpoconfig est utilisé pour spécifier les paramètres de formation comme le taux d'apprentissage et la taille du lot.
!pip install unsloth vllm datasets !pip install git+https://github.com/huggingface/trl.git
Explication:
Explication des paramètres grpoconfig:
Résultat attendu:
Le modèle sera formé avec l'algorithme GRPO en utilisant les fonctions de récompense définies, affligeant le modèle pour mieux performer sur l'ensemble de données.
Sauver le modèle LORA-Fine Tuned
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/DeepSeek-R1-Distill-Qwen-7B", max_seq_length=512, load_in_4bit=True, # Uses 4-bit quantization for memory efficiency fast_inference=True, # Enables fast inference for quicker processing max_lora_rank=32, # LoRA rank for fine-tuning efficiency gpu_memory_utilization=0.6 # Controls memory usage )
Explication:
Résultat attendu:
Le modèle et le jetons seront enregistrés sur le chemin spécifié, ce qui les rend disponibles pour une utilisation future. Vous pouvez plus tard utiliser ce modèle enregistré pour recharger la version exacte à réglage fin pour l'inférence sans avoir besoin de se recycler.
Une fois que vous avez enregistré le modèle affiné, vous pouvez facilement le recharger dans la mémoire pour une inférence ou un réglage fin. Voici le code pour charger le modèle enregistré et le tokenizer, ainsi que la configuration spécifique de LORA:
!pip install unsloth vllm datasets !pip install git+https://github.com/huggingface/trl.git
Explication:
Résultat attendu:
Le modèle est chargé à partir du répertoire enregistré, ainsi que ses configurations LORA, vous permettant d'effectuer efficacement l'inférence. Cela signifie que le modèle tirera parti des paramètres affinés, et vous pouvez commencer directement à générer des réponses ou à exécuter des tâches sans réappliquer le processus de réglage fin.
Vous trouverez ci-dessous un exemple de la sortie de l'ensemble de données utilisé pour affiner ce blog. Il était lié à la feuille de théâtre du processus. Voyez comment le modèle raisonne et génère les réponses à la requête. Le réglage fin avec le modèle GRPO intègre des capacités de raisonnement, qui se reflète dans la réponse ci-dessous.
Si vous souhaitez enregistrer le modèle dans le stockage cloud (comme Google Drive ou Amazon S3), vous pouvez modifier le modèle_save_path pour pointer vers le répertoire cloud respectif. Voici un exemple pour enregistrer Google Drive en utilisant gdown :
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/DeepSeek-R1-Distill-Qwen-7B", max_seq_length=512, load_in_4bit=True, # Uses 4-bit quantization for memory efficiency fast_inference=True, # Enables fast inference for quicker processing max_lora_rank=32, # LoRA rank for fine-tuning efficiency gpu_memory_utilization=0.6 # Controls memory usage )
pour Amazon S3, Vous pouvez utiliser la bibliothèque boto3 pour télécharger le modèle:
model = FastLanguageModel.get_peft_model( model, r=32, # Rank of LoRA layers, which controls memory and efficiency target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], # Modules to apply LoRA to lora_alpha=32, # Scaling factor for LoRA use_gradient_checkpointing="unsloth", # Enables gradient checkpointing for long context fine-tuning random_state=3407 # Seed for reproducibility )
Explication:
Résultat attendu:
Vous pouvez enregistrer et accéder au modèle à partir du cloud, ce qui facilite le partage et le déploiement sur d'autres environnements.
Lorsque les grands modèles de réglage fin comme Deepseek-7b, plusieurs pièges communs peuvent survenir, en particulier liés à la mémoire GPU, aux configurations de formation et à la fonction de récompense. Être conscient de ces problèmes et comprendre comment les dépanner peut gagner beaucoup de temps pendant le processus de réglage fin.
Les grands modèles de réglage fin conduisent souvent à une surcharge de mémoire GPU, en particulier lors de l'utilisation de configurations avancées comme LORA ou de formation avec des tailles de lots élevées. Pour atténuer ceci:
Parfois, des configurations de chargement de modèles incorrectes peuvent provoquer des problèmes, en particulier lors du chargement de grands modèles en précision 4 bits ou avec LORA. Assurez-vous de:
Le réglage fin avec les fonctions de récompense nécessite une attention particulière. Des configurations de fonction de récompense incorrectes ou trop strictes peuvent entraver l'apprentissage, ce qui fait fonctionner le modèle par optimage. Pour dépanner:
La qualité et la mise en forme des données sont cruciales pour une formation réussie. Si vous utilisez des ensembles de données personnalisés, transformez-les au format d'ensemble de données de face étreint et assurez-vous l'analyse et le prétraitement appropriés de toute entrée basée sur JSON. Vérifiez toujours l'ensemble de données pour toutes les écarts ou champs manquants, en particulier dans des fonctions de récompense complexes comme correct_reward_func, qui dépend d'une correspondance précise.
Les conflits dans les configurations de formation, tels que les taux d'apprentissage incompatibles, les paramètres d'optimiseur ou les étapes d'accumulation de gradient, peuvent conduire à des performances sous-optimales ou à une convergence plus lente. Assurez-vous toujours que les paramètres de la configuration GRPO sont affinés en fonction des exigences spécifiques de votre matériel et de l'objectif de formation. De plus, un faible taux d'apprentissage avec des étapes d'accumulation à gradient élevé peut aider à stabiliser la formation pour de très grands modèles.
En abordant ces pièges communs et en surveillant l'utilisation de la mémoire, la mise en forme des données et l'efficacité de la fonction de récompense, vous pouvez rationaliser le processus de réglage fin et assurer une formation de modèle plus fluide.
bonus: Maintenant, êtes-vous ravi de commencer à expérimenter le dernier modèle Deepseek? N'hésitez pas à utiliser le cahier pour ce blog et à le développer pour votre cas d'utilisation!
Dans ce guide, nous avons exploré le processus de réglage fin de GRPO sur Deepseek-7b (renforcement général de l'optimisation de pré-élaction) et LORA (adaptation de faible rang), combinant les forces de ces technologies pour optimiser une formation grande modèle. Nous avons commencé par discuter de l'architecture de Deepseek-7b et GRPO, décrivant le rôle de non-teneur dans la gestion de la mémoire et la formation efficace des modèles. Nous avons également démontré les étapes pratiques impliquées, de la configuration de l'environnement et du chargement du modèle avec LORA à l'application de fonctions de récompense basées sur l'apprentissage en renforcement pour le réglage fin.
Fonction d'efficacité efficace combine GRPO et LORA: GRPO améliore l'apprentissage via des mises à jour basées sur des politiques, tandis que LORA permet une formation économe en mémoire. Nous avons démontré la définition des fonctions de récompense, l'optimisation avec Grpotrainer et assurer la convivialité du modèle par la sauvegarde et le rechargement. Les principaux défis incluent la mise à l'échelle des ensembles de données plus grands et les fonctions de récompense de raffinage pour une meilleure adaptabilité. L'élargissement du GRPO à des modèles multimodaux pourrait faire progresser davantage les capacités de l'IA.
Le média présenté dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur.
ANS. Le GRPO (optimisation de pré-formation générale du renforcement) optimise la phase de pré-formation du modèle en combinant l'apprentissage du renforcement avec des méthodes de réglage fin traditionnelles. Il améliore l'efficacité d'apprentissage du modèle en incorporant l'optimisation basée sur les politiques, garantissant que le modèle s'adapte mieux à des tâches spécifiques avec moins d'étapes. GRPO réduit le temps de formation et améliore les performances globales des grands modèles comme Deepseek-7b.
Q2. Comment Lora (adaptation de faible rang) améliore-t-elle l'efficacité de la mémoire?ANS. LORA optimise le réglage fin des grands modèles en appliquant des adaptations de bas rang à certaines parties du modèle. Au lieu de régler l'ensemble du modèle, Lora n'ajuste qu'un petit sous-ensemble de poids (ceux qui ont le plus d'impact sur les performances), ce qui réduit l'utilisation de la mémoire et le temps de calcul. Cela permet aux modèles comme Deepseek-7b d'être affinés sur un matériel plus petit sans sacrifier les performances.
Q3. Pourquoi le point de contrôle du gradient est-il important lors de la formation de grands modèles?ANS. Le point de contrôle du gradient est une technique d'économie de mémoire utilisée lors de la rétro-propagation dans la formation des modèles. En stockant des activations intermédiaires à des points de contrôle spécifiques, il réduit l'utilisation de la mémoire, permettant la formation de modèles plus importants sur des ressources GPU limitées. Ceci est particulièrement utile lorsque des modèles de réglage fin comme Deepseek-7b, où l'utilisation de la mémoire peut être un goulot d'étranglement.
Q4. Puis-je affiner Deepseek-7b sur un petit ensemble de données?ANS. Le réglage fin sur un ensemble de données plus petit est possible mais peut être moins efficace si l'ensemble de données manque de diversité ou n'est pas représentatif de la tâche. Des ensembles de données plus importants permettent au modèle de mieux généraliser. Pour les ensembles de données plus petits, vous devrez peut-être utiliser des techniques telles que l'augmentation des données ou le transfert d'apprentissage à partir d'un modèle pré-formé pour obtenir des résultats satisfaisants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!