Table des matières
Introduction: nécessité de fusionner l'adaptateur PEFT LORA avec modèle de base
Tentatives de fusion incorrectes et analyse de provoquer
Stratégie de fusion correcte: utilisez Merge_and_unload Méthode de la bibliothèque PEFT
1. Chargez le modèle de l'adaptateur PEFT
2. Effectuer la fusion du modèle
3. Enregistrer le modèle fusionné
Jetons
Remarque: compatibilité de la version PEFT
Résumer
Maison développement back-end Tutoriel Python Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA

Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA

Sep 19, 2025 pm 05:12 PM

Stratégie de fusion efficace de l'adaptateur PEFT LORA et du modèle de base

Ce tutoriel détaille comment fusionner efficacement l'adaptateur PEFT LORA avec le modèle de base pour générer un modèle complètement indépendant. L'article souligne qu'il est faux d'utiliser directement Transformers.Automodel pour charger l'adaptateur et fusionner manuellement les poids, et fournit le processus correct pour utiliser la méthode Merge_and_unload dans la bibliothèque PEFT. De plus, le tutoriel souligne également l'importance de gérer la segmentation des mots et discute des problèmes et des solutions de compatibilité des versions de PEFT.

Introduction: nécessité de fusionner l'adaptateur PEFT LORA avec modèle de base

Après avoir affiné les modèles de gros langues en utilisant la technologie de réglage fin efficace des paramètres (PEFT), en particulier LORA (adaptation de faible rang), nous obtenons généralement un modèle d'adaptateur léger. Ce modèle d'adaptateur ne contient qu'une petite quantité de poids modifiés lors du réglage fin, et il doit être combiné avec le modèle de base d'origine pour faire des inférences. Lors du déploiement ou du partage d'un modèle, il est une exigence commune de fusionner l'adaptateur avec le modèle de base dans un modèle complet et indépendant, ce qui simplifie le chargement et l'utilisation du modèle sans avoir besoin de gérer deux composants de modèle simultanément.

Cependant, de nombreux débutants peuvent éprouver des difficultés lorsqu'ils essaient de fusionner, comme essayer de charger un adaptateur PEFT directement en utilisant Automodel.from_pretraind à partir de la bibliothèque Transformers, ou essayer de pondérer manuellement les poids moyens du modèle moyen. Ces méthodes conduisent souvent à des erreurs car les adaptateurs PEFT ont leur structure spécifique et leurs mécanismes de chargement.

Tentatives de fusion incorrectes et analyse de provoquer

Une tentative d'erreur courante consiste à utiliser les transformateurs.automodel.from_pretraind pour charger l'adaptateur PEFT et essayer de fusionner les poids par pondération manuelle, comme indiqué ci-dessous:

 à partir de Transformers Import Automodel
# Démonstration d'erreur: Essayez de charger directement l'adaptateur PEFT # Pretrained_Model = Automodel.from_pretraind ("Tinyllama / tinyllama-1.1b-chat-v0.6")
# LORA_ADAPTER = Automodel.from_pretraind ("arcturusai / cristalline-1.1b-v23.12-tagger") # Une erreur sera signalée ici # ... La logique de fusion de poids suivante est également incorrecte ...

Lors de l'exécution de Lora_Adapter = Automodel.from_pretrainen ("arcturusai / cristalline-1.1b-v23.12-tagger"), un Oserror est généralement rencontré, ce qui invite aux fichiers de poids du modèle standard tels que Pytorch_Model.bin, TF_Model.H5 dans la path modèle. En effet, les adaptateurs PEFT ne contiennent généralement que les poids de la couche d'adaptateur, plutôt que le fichier de poids complet du modèle, et Transformers.Automodel ne peut pas reconnaître ce format. De plus, le modèle PEFT fonctionne au lieu de simplement pondérer les poids du modèle de base et du modèle de l'adaptateur, mais plutôt de modifier son comportement en injectant la couche d'adaptateur dans une couche spécifique du modèle de base. Par conséquent, la méthode de fusion manuelle des poids est également logiquement incorrecte.

Stratégie de fusion correcte: utilisez Merge_and_unload Méthode de la bibliothèque PEFT

La bibliothèque PEFT elle-même fournit un moyen officiel et efficace de fusionner les adaptateurs avec le modèle sous-jacent: Merge_and_unload (). Cette méthode intègre correctement les poids de l'adaptateur dans la couche correspondante du modèle de base et renvoie une instance de modèle de transformateurs standard.

1. Chargez le modèle de l'adaptateur PEFT

Tout d'abord, nous devons utiliser une classe dans la bibliothèque PEFT qui est spécifiquement utilisée pour charger des modèles PEFT, tels que AutopeftModelforCausAllm, pour charger l'adaptateur PEFT formé. Cette classe reconnaît et charge automatiquement l'adaptateur PEFT et sa configuration de modèle sous-jacente associée.

 à partir de PEFT IMPORT AUTOPEFTMODELFORCAUSALLM
Importer une torche

# Définissez le chemin local ou l'ID du modèle de visage étreint du modèle d'adaptateur PEFT
# Supposons que vous avez téléchargé le modèle de l'adaptateur localement, ou que vous pouvez charger Model_id = "./arcturusai/Crystalline-1.1b-v23.12-Tagger" directement à partir de la hub de visage étreint # Le chemin de l'échantillon # Chargement du Modèle Adaptateur PEFT # Remarque: Le modèle de base et l'adaptateur seront chargés au même moment (PEFT_Model = AutopeftmodalforcElorcAl.from_prom_pretrain
    Model_id,
    torch_dtype = torch.bfloat16 # Choisissez le dtype approprié en fonction de votre matériel et de votre taille de modèle
)

Imprimer (F "Type de modèle après le chargement: {type (peft_model)}")
# Sortie attendue: <class></class>

2. Effectuer la fusion du modèle

Après chargement, PEFT_MODEL est une instance PEFTMODELFORCAUSALLM. En appelant sa méthode Merge_and_unload (), la bibliothèque PEFT fusionne automatiquement les poids de l'adaptateur dans le modèle de base et renvoie une instance de modèle de transformateurs standard.

 # Interpréter fusion_model = peft_model.merge_and_unload ()

print (f "Type de modèle fusionné: {type (fusion_model)}")
# Sortie attendue: <class> (ou le type correspondant au modèle de base)</class>

À ce stade, Merged_Model est déjà un modèle complet avec tous les poids nécessaires et peut être utilisé et enregistré comme tout autre modèle Transformers.

3. Enregistrer le modèle fusionné

Le modèle fusionné peut être enregistré localement en utilisant la méthode SAVE_PRÉTRAINE de la bibliothèque Transformers pour le chargement et le déploiement ultérieur.

 # Définissez le chemin de sauvegarde Save_Directory = "./arcturusai/Crystalline-1.1b-v23.12-Tagger-fullmodel"

# Enregistrer le modèle fusionné fusionné_model.save_pretraind (Save_Directory)
print (f "Le modèle fusionné a été enregistré sur: {Save_Directory}")

Jetons

Il convient de noter que la méthode Merge_and_unload () ne traite que les poids du modèle et ne gère pas les segments de mots. Un jetons est un composant indépendant des poids du modèle, qui est responsable de la conversion du texte en une séquence de nombres que le modèle peut comprendre. Vous devez donc charger le segment de mot pour le modèle de base séparément et l'enregistrer dans le même répertoire que le modèle fusionné pour assurer l'intégrité du modèle.

 à partir de Transformers Import Autotokenzer

# Chargez le mot segmenter base_model_name = "tinyllama / tinyllama-1.1b-chat-v0.6"
tokenizer = autotokenizer.from_pretrain (base_model_name)

# Enregistrez le mot participe au même répertoire que le modèle de fusion tokenizer.save_pretrated (SAVE_DIRECTORY)
print (f "Word participe enregistré à: {Save_Directory}")

Après avoir terminé les étapes ci-dessus, le ./arcturusai/crystalline-1.1b-v23.12-bagger-fullmodel contiendra un modèle complet, directement chargé et d'utilisation (y compris les poids et les segments de mots).

Remarque: compatibilité de la version PEFT

Lorsque vous travaillez avec des modèles PEFT, vous pouvez rencontrer des problèmes de compatibilité entre les modèles formés par différentes versions de la bibliothèque PEFT. Par exemple, les versions plus récentes de PEFT peuvent introduire de nouvelles touches de configuration (telles que LOFTQ_CONFIG, Megatron_Config, Megatron_Core) dans le fichier adapter_config.json, tandis que les anciennes versions de PEFT peuvent ne pas reconnaître ces clés lors du chargement, entraînant une défaillance de charge.

Si vous rencontrez ce type de problème, une solution consiste à modifier manuellement le fichier adapter_config.json et supprimer ces touches de configuration incompatibles. Cela se produit généralement lorsque vous essayez de charger un adaptateur formé par une version plus récente à l'aide d'une ancienne version PEFT.

Exemple (en supposant que vous avez téléchargé le modèle localement et que vous devez être modifié):

  1. Téléchargez le modèle: assurez-vous que le modèle de l'adaptateur PEFT a été téléchargé sur le chemin local.
  2. Positionner adapter_config.json: trouver le fichier adapter_config.json sous le chemin du modèle.
  3. Fichier d'édition: ouvrir adapter_config.json à l'aide d'un éditeur de texte.
  4. Supprimer les touches incompatibles: trouver et supprimer des paires de valeurs de clé telles que "loftq_config": null, "megatron_config": {}, "megatron_core": {}, etc.
  5. Enregistrez le fichier: enregistrez l'adaptateur modifié_config.json.

IMPORTANT: Cette modification manuelle des fichiers de configuration doit être utilisée comme solution temporaire et uniquement si vous savez clairement quelles clés sont la source du problème. La meilleure pratique consiste à essayer de garder la version de la bibliothèque PEFT cohérente, ou de considérer la version PEFT de l'environnement de déploiement lors de la formation.

Résumer

La fusion d'un adaptateur PEFT LORA avec le modèle de base est un processus relativement simple, et la clé est d'utiliser les bons outils fournis par la bibliothèque PEFT. Chargez l'adaptateur via AutopeftModelforCausAllm, puis appelez la méthode Merge_and_unload () pour compléter efficacement le modèle de fusion. Dans le même temps, n'oubliez pas de traiter le segment de mot séparément et de l'enregistrer avec le modèle fusionné pour assurer l'intégrité et la commodité du déploiement du modèle. Lorsque vous traitez avec des modèles formés avec différentes versions de PEFT, faites attention aux problèmes de compatibilité potentiels et prenez des mesures appropriées pour les résoudre.

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment installer des packages à partir d'un fichier exigence.txt dans Python Comment installer des packages à partir d'un fichier exigence.txt dans Python Sep 18, 2025 am 04:24 AM

Exécutez pipinstall-rrequirements.txt pour installer le package de dépendance. Il est recommandé de créer et d'activer l'environnement virtuel d'abord pour éviter les conflits, s'assurer que le chemin du fichier est correct et que le PIP a été mis à jour et utiliser des options telles que --No-Deps ou --User pour ajuster le comportement d'installation si nécessaire.

Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Sep 19, 2025 pm 05:12 PM

Ce tutoriel détaille comment fusionner efficacement l'adaptateur PEFT LORA avec le modèle de base pour générer un modèle complètement indépendant. L'article souligne qu'il est faux d'utiliser directement Transformers.Automodel pour charger l'adaptateur et fusionner manuellement les poids, et fournit le processus correct pour utiliser la méthode Merge_and_unload dans la bibliothèque PEFT. De plus, le tutoriel souligne également l'importance de traiter les segments de mots et discute des problèmes et des solutions de compatibilité des versions de PEFT.

Comment tester le code Python avec Pytest Comment tester le code Python avec Pytest Sep 20, 2025 am 12:35 AM

Python est un outil de test simple et puissant dans Python. Après l'installation, les fichiers de test sont automatiquement découverts en fonction des règles de dénomination. Écrivez une fonction commençant par test_ pour les tests d'assurance, utilisez @ pytest.fixture pour créer des données de test réutilisables, vérifiez les exceptions via PyTest.Rais, prend en charge l'exécution de tests spécifiés et plusieurs options de ligne de commande et améliore l'efficacité des tests.

Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Sep 19, 2025 pm 05:57 PM

Cet article vise à explorer le problème commun de la précision de calcul insuffisante des nombres de points flottants dans Python et Numpy, et explique que sa cause profonde réside dans la limitation de représentation des nombres de points flottants 64 bits standard. Pour les scénarios informatiques qui nécessitent une précision plus élevée, l'article introduira et comparera les méthodes d'utilisation, les fonctionnalités et les scénarios applicables de bibliothèques mathématiques de haute précision telles que MPMATH, SYMPY et GMPY pour aider les lecteurs à choisir les bons outils pour résoudre les besoins de précision complexe.

Comment gérer les arguments de ligne de commande dans Python Comment gérer les arguments de ligne de commande dans Python Sep 21, 2025 am 03:49 AM

TheargParsemoduleisthereComMendwaytoHandleCommand-lineargumentsInpython, fournissantRobustParsing, Typevalidation, HelpMessages, AnderrorHling; usys.argvforsimplécasesrequiringminimalsepup.

Comment travailler avec les fichiers PDF dans Python Comment travailler avec les fichiers PDF dans Python Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPLUMBER et FPDF sont les bibliothèques de base pour Python pour traiter PDF. Utilisez le PYPDF2 pour effectuer l'extraction de texte, la fusion, la division et le chiffrement, tels que la lecture de la page via Pdfreader et l'appel extract_text () pour obtenir du contenu; PDFPLUMBER convient plus pour conserver l'extraction de texte de mise en page et la reconnaissance de la table, et prend en charge extract_tables () pour capturer avec précision les données de table; FPDF (FPDF2 recommandé) est utilisé pour générer du PDF, et les documents sont construits et sorties via add_page (), set_font () et cellule (). Lors de la fusion des PDF

Python Obtenez l'exemple de l'heure actuelle Python Obtenez l'exemple de l'heure actuelle Sep 15, 2025 am 02:32 AM

L'obtention de l'heure actuelle peut être implémentée dans Python via le module DateTime. 1. Utilisez dateTime.now () pour obtenir l'heure actuelle locale, 2. Utilisez le strftime ("% y-% m-% d% h:% m:% s") pour formater l'année de sortie, le mois, le jour, l'heure, la minute et la seconde, 3. UTCNow () et les opérations quotidiennes peuvent répondre aux besoins en combinant DateTime.now () avec des chaînes formatées.

Intégration efficace des données multi-fichiers à l'aide du didacticiel Pandas: IP, Mac et Port Association Intégration efficace des données multi-fichiers à l'aide du didacticiel Pandas: IP, Mac et Port Association Sep 21, 2025 pm 03:00 PM

Ce didacticiel montre en détail comment extraire, corréler et intégrer efficacement des données spécifiques à partir de plusieurs fichiers texte à l'aide de la bibliothèque Pandas de Python. En chargeant les données du fichier dans une dataframe et en utilisant l'opération de fusion pour effectuer des connexions internes en fonction de l'adresse IP et de l'adresse MAC, de l'implémentation finale de correspondance précise et de diffusion des informations d'association de l'IP, de l'adresse MAC et des ports correspondants à partir de fichiers provenant de différentes sources.

See all articles