Maison >Périphériques technologiques >IA >GRPO Fineding sur Deepseek-7b avec un peu

GRPO Fineding sur Deepseek-7b avec un peu

Christopher Nolan
Christopher Nolanoriginal
2025-03-04 09:23:09537parcourir

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.

Objectifs d'apprentissage

À la fin de ce blog, vous devriez pouvoir:

  • Apprenez les principes fondamentaux de la fin de profondeur-7b pour les performances améliorées sur les tâches spécialisées.
  • Découvrez les avantages de GRPO par rapport à PPO, augmentant l'efficacité de la formation dans le réglage fin.
  • Utilisez un non-impliquant et LORA pour un réglage fin rapide et économe en mémoire de grands modèles.
  • Configurez les amendeurs Deepseek-7b avec un peu, vllm, face étreinte et optimiser les performances du GPU.
  • Implémentez les fonctions de récompense comme l'exactitude et le XML pour les sorties structurées dans l'apprentissage du renforcement.
  • Charge, enregistrer et recharger les modèles affinés en utilisant LORA pour une inférence à haute performance économe en mémoire.
  • Dépannage des problèmes de mémoire et de configuration du GPU pour le réglage fin sans couture.
  • Explorez la mise à l'échelle des ensembles de données plus grands, de nouvelles fonctions de récompense et GRPO pour les modèles multimodaux.

Cet article a été publié dans le cadre du Data Science Blogathon.

Table des matières

  • Comprendre les modèles Deepseek et l'algorithme GRPO
  • Introduction à GRPO et comment il améliore l'optimisation finale
  • comment GRPO diffère de l'OPP (optimisation de la politique proximale)?
  • Untente-toot: Amélioration de l'efficacité de l'efficacité fine
  • des amende Deepseek-7b avec Grpo
  • Économiser et recharger le modèle fini par un modèle
  • Pièges et dépannage communs
  • Conclusion
  • Fréquemment posés aux questions

Comprendre les modèles Deepseek et l'algorithme GRPO

Qu'est-ce que Deepseek-R1-Distill-Qwen-7b?

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.

GRPO Fineding sur Deepseek-7b avec un peu

Caractéristiques clés et aperçu de l'architecture

À 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.

GRPO Fineding sur Deepseek-7b avec un peu

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.

Introduction au Grpo et comment il améliore le réglage fin

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:

GRPO Fineding sur Deepseek-7b avec un peu

où:

GRPO Fineding sur Deepseek-7b avec un peu

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.

Signal de récompense de Grpo

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:

GRPO Fineding sur Deepseek-7b avec un peu

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.

comment GRPO diffère de PPO (optimisation de politique proximale)?

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:

GRPO Fineding sur Deepseek-7b avec un peu

où:

GRPO Fineding sur Deepseek-7b avec un peu

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.

Règle de mise à jour du gradient pour les paramètres θ

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:

GRPO Fineding sur Deepseek-7b avec un peu

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.

UNSLUCH: Amélioration de l'efficacité du réglage fin

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.

Comment l'optimisation de la formation des modèles n'est pas insuffisante?

Unsloth introduit plusieurs optimisations qui améliorent l'efficacité du réglage du modèle:

  • Chargement économe en mémoire: Un certain nombre prend en charge la quantification 4 bits et 8 bits, en réduisant l'empreinte mémoire des modèles tout en maintenant les performances.
  • Formation rapide et inférence: en tirant parti de l'attention des flashs et en paginant des optimisateurs, un peu accélère considérablement à la fois la formation et l'inférence.
  • Points de contrôle du gradient: il prend en charge le point de contrôle du gradient, ce qui réduit la mémoire GPU requise en ne stockant qu'un sous-ensemble d'activations et en les récompensant en cas de besoin.
  • Intégration transparente avec LORA: un peu de soutien natif de LORA, permettant aux utilisateurs de former seulement un sous-ensemble de paramètres du modèle au lieu de l'ensemble du réseau.

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.

Avantages de l'utilisation d'un non-impatience

  • réduit l'utilisation de la mémoire GPU jusqu'à 50%, permettant une formation sur les GPU de niveau intermédiaire.
  • permet une formation plus rapide en intégrant les mécanismes d'attention optimisés.
  • prend en charge VllM (modèles de langage très large) pour l'accélération d'inférence.
  • fonctionne parfaitement avec le GRPO, garantissant que le réglage fin basé sur l'apprentissage est économe en ressources.

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.

Fine-Tuning Deepseek-7b avec Grpo

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.

Étape 1: Configuration de l'environnement

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:

  • Usloth: Une bibliothèque pour un modèle de langage efficace pour régler et optimisation de la mémoire.
  • vllm: permet une inférence rapide pour les grands modèles.
  • Ensemble de données: Une bibliothèque pour travailler avec divers ensembles de données NLP, y compris ceux de l'étreinte Face.

Une fois ceux-ci installés, nous pouvons procéder à charger le modèle et démarrer le réglage fin.

Étape 2: Chargement du modèle avec un peu

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:

  • Model_name: Nous spécifions le modèle à charger, dans ce cas, Deepseek-R1-Distill-Qwen-7b.
  • max_seq_length: définit la longueur de séquence maximale pour les jetons d'entrée.
  • load_in_4bit: utilise la quantification 4 bits, réduisant considérablement l'utilisation de la mémoire.
  • Fast_inference: Cela permet à Vllm d'accélérer les temps d'inférence.
  • max_lora_rank: Le rang pour l'adaptation LORA, contrôlant la taille des matrices de bas rang.
  • gpu_memory_utilisation: ajuste la quantité de mémoire GPU utilisée par le modèle pour éviter les erreurs hors mémoire.

Résultat attendu: Le modèle sera chargé en mémoire avec des configurations optimisées, prêtes à affiner avec Lora.

Étape 3: Application de Lora pour un réglage fin efficace

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: Le rang de la matrice LORA. Un rang plus élevé peut conduire à une formation plus intelligente mais plus lente.
  • Target_Modules: Le modèle couche où LORA est appliqué (par exemple, Q_Proj pour la projection de requête).
  • lora_alpha: Le facteur de mise à l'échelle utilisé pour contrôler l'importance des couches LORA.
  • use_gradient_checkpointing: Cela réduit la consommation de mémoire en stockant uniquement les gradients intermédiaires si nécessaire.
  • random_state: assure la reproductibilité du processus de réglage fin.

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.

GRPO Fineding sur Deepseek-7b avec un peu

Étape 4: Préparation de l'ensemble de données de formation

Fine-Tuning Deepseek-7b nécessite un ensemble de données formaté de manière spécifique. Ici, nous allons charger et transformer l'ensemble de données d'un format de fichier JSON en un objet de jeu de données étreint. Voici le code:

!pip install unsloth vllm datasets
!pip install git+https://github.com/huggingface/trl.git

Explication:

  • load_and_transform_json: charge un fichier JSON et le transforme en format requis pour la formation.
  • Les données comprennent un
  • Question et Réponse pour chaque entrée, ainsi qu'un invite générée par le système .
Résultat attendu: l'ensemble de données est maintenant dans le bon format et prêt pour la formation. Vous trouverez ci-dessous un échantillon de l'ensemble de données.

GRPO Fineding sur Deepseek-7b avec un peu

Étape 5: Concevoir des fonctions de récompense pour la sortie structurée

Dans l'apprentissage du renforcement, les fonctions de récompense guident le modèle vers des sorties souhaitables. Ici, nous définissons les fonctions de récompense pour évaluer la réponse du modèle. Par exemple, l'exactitude_reward_func vérifie si la réponse extraite correspond à la réponse attendue.

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:

  • correct_reward_func: compare la réponse extraite avec la réponse attendue. S'ils correspondent, cela donne une récompense de 2,0, sinon 0,0.
  • int_reward_func: récompense le modèle de production de réponses numériques.
  • strict_format_reward_func: garantit que la sortie du modèle suit un format XML strict, le récompensant pour les sorties bien formées.
  • soft_format_reward_func: Vérifie si la sortie du modèle adhère de manière vague au format souhaité.
  • xmlcount_reward_func: évalue la façon dont la sortie suit la structure XML, avec une pénalité pour des réponses mal structurées.

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é.

Étape 6: Configuration de l'entraîneur GRPO

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:

  • grpoconfig: configure divers paramètres de formation comme le taux d'apprentissage, la taille du lot et le nombre de générations à produire.
  • grpotrainer: Cette classe est responsable du processus de formation réel. Il prend en compte le modèle, le jetons, les fonctions de récompense et les arguments de formation.

Explication des paramètres grpoconfig:

  • Learning_rate: Le taux d'apprentissage pour l'optimisation du modèle. Une valeur inférieure comme 5E-6 permet une formation stable sur de nombreuses itérations.
  • per_device_train_batch_size: Taille du lot pour chaque étape de formation. Ici, il est défini sur 1, ce qui signifie que chaque GPU traitera un exemple à la fois.
  • num_generations: Nombre de générations produites par le modèle à chaque étape de réglage fin.
  • max_prompt_length: longueur de jeton maximale pour l'invite d'entrée.
  • max_completion_length: longueur de jeton maximale pour la sortie du modèle.
  • max_steps: Le nombre d'étapes de formation à effectuer.

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.

GRPO Fineding sur Deepseek-7b avec un peu

Économie et rechargement du modèle affiné

Une fois que le modèle Deepseek-7b a été affiné en utilisant GRPO et LORA, il est important de sauvegarder le modèle sur le stockage de disque ou de cloud pour une utilisation future. Dans cette section, nous couvrirons comment enregistrer le modèle affiné et le charger à nouveau pour l'inférence. Cela garantit que vous pouvez persister vos progrès et éviter de se recycler à partir de zéro.

Sauver le modèle LORA-Fine Tuned

Une fois que le modèle a été affiné avec LORA et GRPO, vous devez l'enregistrer dans un emplacement de stockage. Il s'agit d'une étape cruciale pour vous assurer que vous pouvez recharger le modèle plus tard sans avoir besoin de se recycler. Voici comment vous pouvez enregistrer le modèle affiné, y compris les poids spécifiques de LORA, au disque:

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:

  • modèle.save_pretrainned: Cela économise à la fois les poids du modèle et les couches spécifiques de LORA (comme les matrices d'adaptation de faible rang).
  • tokenizer.save_pretrated: enregistre le tokenzer, qui comprend la logique de tokenisation comme des jetons spéciaux et le vocabulaire.
  • MODEL_SAVE_PATH: Le répertoire où vous souhaitez stocker le modèle. Cela peut être un chemin local ou un répertoire cloud (par exemple, Google Drive, S3).

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.

Chargement du modèle pour l'inférence future

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:

  • FastLanguageModel.from_pretrated: Cette fonction charge les poids du modèle enregistré et le tokenizer du chemin spécifié.
  • max_lora_rank: Le rang LORA utilisé pendant l'inférence doit correspondre à ce qui a été utilisé pendant le réglage fin pour garantir que la bonne adaptation est appliquée.
  • load_in_4bit et gpu_memory_utilisation: garantit que le modèle continue d'être économe en mémoire lorsqu'il est chargé pour l'inférence.

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.

GRPO Fineding sur Deepseek-7b avec un peu

Option avancée: enregistrer le stockage cloud

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:

  • gdown.upload: Cette fonction télécharge le modèle de votre environnement local à Google Drive.
  • boto3: SDK Python d'Amazon pour interagir avec les services AWS comme S3. Il vous permet de télécharger votre modèle directement sur un seau S3.

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.

Pièges communs et dépannage

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.

1. Surcharge de mémoire GPU

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:

  • Réduisez la taille du lot ou ajustez le paramètre PER_DEVICE_TRAIN_BATCH_SIZE dans grpoconfig pour tenir dans la mémoire de votre GPU.
  • Utiliser la vérification du gradient en définissant use_gradient_checkpointing = "unsloth" , qui stocke les activations intermédiaires pour réduire l'utilisation de la mémoire.
  • Abaissez le rang LORA si vous rencontrez des problèmes de mémoire - les rangs plus avancés exigent moins de mémoire.

2. Chargement du modèle incorrect

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:

  • Vérifiez que le rang LORA et d'autres configurations spécifiques au modèle (comme max_lora_rank et gpu_memory_utilisation ) sont correctement définies en fonction des capacités de vos GPU.
  • Assurez-vous que vllm est activé pour une inférence rapide lorsque vous travaillez avec de grands modèles pour éviter les retards inutiles.

3. Récompense Fonction Déliaresques

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:

  1. Consultez l'implémentation de fonctions de récompense comme correct_reward_func et strict_format_reward_func pour s'assurer qu'ils s'alignent avec la sortie souhaitée.
  2. Affiner les seuils de récompense et les mécanismes de notation si le modèle produit des réponses erratiques ou indésirables.

4. Problèmes de données

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.

5. Conflits de configuration de formation

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!

Conclusion

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.

Les plats clés

  • Deepseek-7b et GRPO fournissent une base puissante pour les modèles à grande échelle affineux avec une optimisation basée sur l'apprentissage en renforcement.
  • LORA optimise l'utilisation de la mémoire et permet un réglage fin efficace sur les grands modèles en appliquant des adaptations de faible rang.
  • GRPO diffère des méthodes traditionnelles comme PPO en offrant des mises à jour basées sur des politiques, conduisant à une formation plus efficace.
  • La définition de fonctions de récompense bien structurées est cruciale dans l'apprentissage du renforcement du réglage fin, guidant le modèle vers des sorties de haute qualité.
  • Le processus d'épargne et de rechargement des modèles affinés garantit la réutilisation et les performances du modèle à long terme.
  • Les améliorations futures peuvent se concentrer sur la mise à l'échelle des ensembles de données plus grands, l'expérimentation de nouvelles fonctions de récompense et l'application de GRPO aux modèles multimodaux (texte, images, audio).

Le média présenté dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur.

Les questions fréquemment posées

Q1. Quel est le rôle de GRPO dans le processus de réglage fin?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn