


Wie man den PEFT LORA -Adapter mit Basismodell richtig zusammenführt
Sep 17, 2025 pm 02:51 PMVerst?ndnis der Herausforderungen und der richtigen Art, PEFT -Adapter zusammenzuführen
Nach der Feinabstimmung gro?sprachige Modelle mit Parameter effizienter Feinabstimmung (PEFT) -Technologie, insbesondere LORA (Anpassung mit niedrigem Rang), besteht ein h?ufiger Voraussetzung darin, den geschulten Adapter mit dem ursprünglichen Basismodell zu verschmelzen, um ein unabh?ngiges, vollst?ndiges und direkt einsetzbares neues Modell zu bilden. Viele Anf?nger versuchen jedoch, den Adapter direkt mit dem Automodel zu laden.From_Petretrug in der Transformers -Bibliothek oder versuchen, den State_Dict beider Modelle manuell zusammenzuführen, was normalerweise zu Fehlern führt.
Warum sind traditionelle Methoden nicht machbar?
- Einschr?nkungen von Automodel.From_Petretrug: Der PEFT-Adapter ist kein vollst?ndiges Modell, es enth?lt nur eine kleine Menge an Gewichten, die w?hrend der Feinabstimmung modifiziert wurden. Transformers.automodel.From_Pretrained erwartet, eine Modelldatei (wie Pytorch_Model.bin) mit der vollst?ndigen Modellstruktur und allen Gewichten zu laden. Wenn es versucht, aus einem Verzeichnis zu laden, das nur die Adaptergewichte enth?lt, wird ein Oserror geworfen, da die erwartete Modelldatei nicht gefunden wird.
- Missverst?ndnisse manuell zusammenführendes Zustand_Dict: Das Arbeitsprinzip von PEFT besteht darin, eine niedrige Matrix in eine bestimmte Schicht des Basismodells zu injizieren, anstatt das gesamte Gewicht des Basismodells direkt zu modifizieren. Daher ist der einfach gewichtete Durchschnitt des staatlichen Datenmodells und des Adapters (z. B. 0,8 * vorab.
Das Richtige ist, die Leistung der PEFT -Bibliothek selbst zu nutzen, die uns mit speziellen Werkzeugen zum Zusammenführen von Adaptern vorbereitet hat.
Fucken Sie Lora -Adapter mithilfe der PEFT -Bibliothek zusammen
Die PEFT -Bibliothek entwirft spezielle Klassen und Methoden zum Umgang mit Adaptermodellen. Die Kernidee besteht darin, das Modell zuerst mit dem Adapter zu laden und dann seine integrierte Zusammenführungsfunktion aufzurufen.
1. Laden Sie das PEFT -Adaptermodell
Um ein PEFT -Adaptermodell zu laden, sollten wir autopeftmodelforcausAllm (oder eine andere AutopeftModelFor -Klasse für eine bestimmte Aufgabe) verwenden. Diese Klasse erkennt und l?dt das Grundmodell und das Adaptergewichte mit LORA -Konfiguration korrekt.
Hier ist ein Codebeispiel zum Laden des Adaptermodells:
von peft import autopeftmodelforcausallm Taschenlampe importieren # Angenommen, Ihr PEFT-Adaptermodell ist auf dem lokalen Pfad oder direkt aus dem umarmenden Gesichtszentrum wie "Arcturusai/Crystalline-1.1b-V23.12-Tagger" gespeichert. # Für lokale Pfade stellen Sie sicher, dass die Modellverzeichnisstruktur modell_id = "./Arcturusai/kristalline-1.1b-v23.12-tagger" ist. # Laden Sie ein Modell mit PEFT -Adapter# Wenn Ihr Basismodell kausale ist, verwenden Sie autopeftmodelcausAllm # Wenn es sich um eine andere Aufgabe handelt, w?hlen Sie bitte den entsprechenden AutopeftModelforor ... pft_model = autopeftmodelcausAllm.from_pretrated ( model_id, float16 # Es wird empfohlen, Datentypen wie Bfloat16 oder Float16 zu speichern, um Speicher zu speichern. print (f "Der Modelltyp nach dem Laden: {type (peft_model)}") # Erwartete Ausgabe: <klasse></klasse>
AutopeftmodelforcausAllm.from_Prostrated verarbeitet automatisch das Laden des Basismodells und die Anwendung von Adaptergewichten, wodurch es eine PeftModelForcausAllm -Instanz macht.
2. Führen Sie den Zusammenführungsvorgang durch
Nach dem Laden des Adaptermodells bietet das PEFTModel -Objekt eine bequeme Methode merge_and_unload (), die für die Kombination der Adaptergewichte in die entsprechende Ebene des zugrunde liegenden Modells und der Rückgabe einer reinen Transformatorenmodellinstanz verantwortlich ist.
# Ausführen merged_model = peft_model.merge_and_unload () print (f "Art des fusionierten Modells: {type (merged_model)}") # Erwartete Ausgabe Beispiel: <klasse> # Der spezifische Typ h?ngt von Ihrer Basismodellarchitektur ab</klasse>
Die Methode merge_and_unload () wird:
- Multiplizieren Sie und fügen Sie die Lora -Gewichtsmatrix (a und b) mit der ursprünglichen Gewichtsmatrix des Basismodells hinzu, um das Gewicht des Basismodells zu aktualisieren.
- Entfernen Sie PEFT-bezogene Wrapper und geben Sie eine Standard-Transformatoren zurück.
3.. Speichern Sie das fusionierte Modell
Das merged merged_model ist jetzt ein eigenst?ndiges Transformatorenmodell. Sie k?nnen es speichern, wie Sie es jedes andere Transformers -Modell tun würden:
# Definieren Sie den Save Path Save_Directory = "Arcturusai/Crystalline-1.1B-V23.12-Tagger-Fullmodel" # Speichern Sie das merged -Modell merged_model.save_pretraed (Save_Directory) print (f "Das fusionierte Modell wurde gespeichert in: {SAVE_DIRECTORY}")
Tokenizer
Es ist zu beachten, dass die Methode merge_and_unload () nur die Gewichte des Modells verarbeitet. Ein komplettes Modellpaket muss normalerweise auch den entsprechenden Tokenizer enthalten. Da Lora Fine Tuning normalerweise nicht das Wort Partizip ?ndert, müssen Sie Partizip aus der ursprünglichen Basismodellbibliothek laden und mit dem fusionierten Modell speichern.
von Transformatoren importieren Autotokenizer # Laden Sie das Wort Segmentierer Basis_Model_Tokenizer_id = "Tinyllama/Tinyllama-1.1b-chat-v0.6" tokenizer = autotokenizer.from_pretrained (Base_model_tokenizer_id) # Speichern Sie das Wort Partizip in demselben Verzeichnis wie das Merge -Modell -Tokenizer. print (f "Das Wort Partizip wurde von {Base_Model_Tokenizer_id} geladen und auf: {SARE_DIRECTORY}") gespeichert)
Nach Abschluss der oben genannten Schritte enth?lt Save_Directory ein vollst?ndiges, direkt ladbares und gebrauchtes Modell, einschlie?lich der kombinierten Modellgewichte und des entsprechenden Wortteils.
Potenzielle Probleme und Vorsichtsma?nahmen
PEFT -Version Kompatibilit?t:
Die PEFT -Bibliothek entwickelt sich st?ndig weiter und kann Konfigurationsdateikompatibilit?tsprobleme zwischen verschiedenen Versionen geben. Wenn Sie beispielsweise ein Modell mit einer ?lteren Version von PEFT trainieren und dann versuchen, eine neue Version von PEFT zu laden und zu verschmelzen, k?nnen Sie auf einen Fehler sto?en. Dies manifestiert sich normalerweise als Felder in adapter_config.json, die in neuen PEFT eingeführt werden, aber in alten Versionen nicht existieren oder umgekehrt.
L?sung: Wenn Sie auf einen Lastfehler sto?en und einige Schlüssel in adapter_config.json inkompatibel sind, k?nnen Sie versuchen, die Datei adapter_config.json manuell zu bearbeiten, um die Schlüssel zu entfernen, die das Problem verursachen. Gemeinsame Schlüssel, die m?glicherweise entfernt werden müssen, sind:
- loftq_config
- megatron_config
- megatron_core
Versuchen Sie nach dem Entfernen dieser Schlüssel erneut das Modell. Es wird empfohlen, die ursprüngliche Datei adapter_config.json zu sichern.
Best Practices:
- Versionsverwaltung: Versuchen Sie, die gleiche oder kompatible PEFT -Version beim Training und Zusammenführen von Modellen zu verwenden.
- Umweltisolation: Verwenden Sie eine virtuelle Umgebung, um Projektabh?ngigkeiten zu verwalten, um die Konsistenz von Abh?ngigkeitsversionen sicherzustellen.
- überprüfen Sie die Dokumentation: Wenn Sie Probleme sto?en, überprüfen Sie die offizielle Dokumentation der PEFT -Bibliothek, um die ?nderungen und Kompatibilit?tsanforderungen zwischen verschiedenen Versionen zu verstehen.
Zusammenfassen
Das Zusammenführen des PEFT LORA -Adapters mit dem Basismodell ist ein direkter und effizienter Prozess. Der Schlüssel besteht darin, die von der PEFT -Bibliothek bereitgestellten Methoden autopeftmodelcausAllm und merge_and_unload () zu verwenden. Durch das Vermeiden des Missverst?ndnisses der manuellen Gewichtsreorganisation und die korrekte Handhabung von Word-Segmentierung k?nnen Sie ein eigenst?ndiges Modell mit Feinabstimmungswissen problemlos erstellen und bereitstellen. Achten Sie gleichzeitig auf Probleme mit der Kompatibilit?t von PEFT -Versionen und passen Sie die Konfigurationsdateien gegebenenfalls an, um die reibungslose Ausführung des gesamten Prozesses sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie man den PEFT LORA -Adapter mit Basismodell richtig zusammenführt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

In diesem Tutorial wird beschrieben, wie der PEFT LORA -Adapter mit dem Basismodell effizient zusammengeführt werden kann, um ein v?llig unabh?ngiges Modell zu generieren. Der Artikel weist darauf hin, dass es falsch ist, Transformatoren direkt zu verwenden. Automodel zum Laden des Adapters und zum manuellen Zusammenführen der Gewichte und bietet den richtigen Prozess zur Verwendung der Methode merge_and_unload in der PEFT -Bibliothek. Darüber hinaus unterstreicht das Tutorial auch die Bedeutung des Umgangs mit Word -Segmentern und diskutiert die Kompatibilit?t und L?sungen von PEFT -Versionen.

Führen Sie Pipinstall-Rrequirements.txt aus, um das Abh?ngigkeitspaket zu installieren. Es wird empfohlen, zun?chst die virtuelle Umgebung zu erstellen und zu aktivieren, um Konflikte zu vermeiden, sicherzustellen, dass der Dateipfad korrekt ist und dass die PIP aktualisiert wurde, und Optionen wie-No-Deps oder -User, um das Installationsverhalten bei Bedarf anzupassen.

Python ist ein einfaches und leistungsstarkes Testwerkzeug in Python. Nach der Installation werden Testdateien automatisch gem?? den Namensregeln ermittelt. Schreiben Sie eine Funktion, die mit Test_ für Assertionstests beginnt, verwenden Sie @PyTest.Fixure, um wiederverwendbare Testdaten zu erstellen, die Ausnahmen über pyTest.raises zu überprüfen, unterstützt die laufenden Tests und mehrere Befehlszeilenoptionen und verbessert die Testeneffizienz.

TheArgParSemoduleiTherecommendedwaytoHandleCommand-Lineargumentesinpython, das Robustparsing, Typevalidation, Helpsages, AndersHandling berücksichtigt; usesys.argvForSimpecaseSeRequiringMinimalsetup.

Dieser Artikel zielt darauf ab, das gemeinsame Problem der unzureichenden Berechnungsgenauigkeit der schwimmenden Punktzahlen in Python und Numpy zu untersuchen, und erkl?rt, dass seine Grundursache in der Darstellungsbeschr?nkung der Standardzahlen der 64-Bit-Schwimmpunkte liegt. Für Computerszenarien, die eine h?here Genauigkeit erfordern, wird der Artikel die Nutzungsmethoden, -funktionen und anwendbaren Szenarien von mathematischen Bibliotheken mit hoher Pr?zision einführen und vergleichen

In diesem Artikel wird beschrieben, wie die Funktion merge_and_unload der PEFT-Bibliothek verwendet wird, um den LORA-Adapter effizient und genau in das grundlegende Gro?sprachmodell zu verschmelzen, wodurch ein brandneues Modell mit integriertem Feinabstimmungswissen erstellt wird. Der Artikel korrigiert gemeinsame Missverst?ndnisse über Ladeadapter und das manuelle Zusammenführen von Modellgewichten durch Transformers.Automodel und bietet vollst?ndige Code -Beispiele, darunter Modellverschmelzung, Word -Segmentiererverarbeitung und professionelle Anleitung zur L?sung potenzieller Versionskompatibilit?tsprobleme, um reibungslose Verschmelzungsprozesse zu gew?hrleisten.

PYPDF2, PDFPLUMBER und FPDF sind die Kernbibliotheken für Python, um PDF zu verarbeiten. Verwenden Sie PYPDF2, um die Textextraktion, das Zusammenführen, die Aufteilung und die Verschlüsselung durchzuführen, z. PDFPLUMBER eignet sich besser zum Aufbewahren von Layout -Textextraktion und Tabellenerkennung und unterstützt extract_tables (), um Tabellendaten genau zu erfassen. FPDF (empfohlene FPDF2) wird zum Generieren von PDF verwendet, und es werden Dokumente erstellt und über add_page (), set_font () und cell () ausgegeben. Beim Zusammenführen von PDFs kann die append () -Methode von PDFWriter mehrere Dateien integrieren

Importieren Sie@contextManagerfromContextLibanddefinaGeneratorFunctionThatyieldSexactlyonce, whercodeBeforyieldactsasenterandCodeafteryield (vorzugsweise infinal) actsas __exit __. 2.UsetheFunctionInaThstatement, wherheided ValuesieScessable
