Heutzutage decken generative KI-Modelle eine Vielzahl von Aufgaben ab, von der Textzusammenfassung über Fragen und Antworten bis hin zur Bild- und Videogenerierung. Um die Qualität der Ausgabe zu verbessern, werden Ansätze wie n-short learning, Prompt Engineering, Retrieval Augmented Generation (RAG) und Fine Tuning verwendet. Durch die Feinabstimmung können Sie diese generativen KI-Modelle anpassen, um eine verbesserte Leistung bei Ihren domänenspezifischen Aufgaben zu erzielen.
Mit Amazon SageMaker können Sie jetzt einen SageMaker-Trainingsjob ausführen, indem Sie einfach Ihren Python-Code mit @remote decorator annotieren. Der SageMaker Python SDK übersetzt automatisch Ihre vorhandene Arbeitsbereichsumgebung und alle damit verbundenen Datenverarbeitungscodes und Datensätze in einen SageMaker-Schulungsauftrag, der auf der Schulungsplattform ausgeführt wird. Dies hat den Vorteil, dass der Code natürlicher und objektorientierter geschrieben wird und dennoch SageMaker-Funktionen genutzt werden, um Trainingsjobs mit minimalen Änderungen auf einem Remote-Cluster auszuführen.
In diesem Beitrag zeigen wir, wie man a verfeinert Falcon-7B Foundation Models (FM) mit @remote decorator von SageMaker Python SDK. Es nutzt auch Parametereffiziente Feinabstimmung von Hugging Face (PEFT)-Bibliothek und Quantisierungstechniken durch Bits und Bytes zur Unterstützung der Feinabstimmung. Der in diesem Blog vorgestellte Code kann auch zur Feinabstimmung anderer FMs verwendet werden, z Lama-2 13b.
Es kann schwierig sein, die Darstellungen dieses Modells mit voller Präzision einzeln oder sogar bei mehreren in den Speicher zu passen Grafikprozessoren (GPUs) – oder benötigen möglicherweise sogar eine größere Instanz. Um dieses Modell ohne steigende Kosten zu verfeinern, verwenden wir daher die sogenannte Technik Quantisierte LLMs mit Low-Rank-Adaptern (QLoRA). QLoRA ist ein effizienter Feinabstimmungsansatz, der die Speichernutzung von LLMs reduziert und gleichzeitig eine sehr gute Leistung beibehält.
Vorteile der Verwendung von @remote decorator
Bevor wir fortfahren, wollen wir verstehen, wie Remote Decorator die Entwicklerproduktivität bei der Arbeit mit SageMaker verbessert:
- @remote decorator löst einen Trainingsjob direkt mit nativem Python-Code aus, ohne den expliziten Aufruf von SageMaker-Schätzern und SageMaker-Eingabekanälen
- Niedrige Eintrittsbarriere für Entwickler, die Modelle auf SageMaker schulen.
- Kein Wechsel nötig Integrierte Entwicklungsumgebungen (IDEs). Schreiben Sie weiterhin Code in der IDE Ihrer Wahl und rufen Sie SageMaker-Schulungsjobs auf.
- Sie müssen sich nicht mit Containern auskennen. Stellen Sie weiterhin Abhängigkeiten in a bereit
Anforderungen.txt
und stellen Sie diese dem Remote-Dekorateur zur Verfügung.
Voraussetzungen
Es ist ein AWS-Konto mit einer AWS Identity and Access Management (AWS IAM)-Rolle erforderlich, das über Berechtigungen zum Verwalten von Ressourcen verfügt, die als Teil der Lösung erstellt wurden. Einzelheiten finden Sie unter Erstellen eines AWS-Kontos.
In diesem Beitrag verwenden wir Amazon SageMaker Studio mit dem Datenwissenschaft 3.0
Bild und a ml.t3.medium
Schnellstartinstanz. Sie können jedoch jede beliebige integrierte Entwicklungsumgebung (IDE) Ihrer Wahl verwenden. Sie müssen lediglich Ihre AWS Command Line Interface (AWS CLI)-Anmeldeinformationen korrekt einrichten. Weitere Informationen finden Sie unter Konfigurieren der AWS CLI.
Zur Feinabstimmung dient der Falcon-7B, ein ml.g5,12xgroß
In diesem Beitrag wird die Instanz verwendet. Bitte stellen Sie sicher, dass im AWS-Konto ausreichend Kapazität für diese Instanz vorhanden ist.
Sie müssen dies klonen Github-Repository für die Replikation der in diesem Beitrag gezeigten Lösung.
Lösungsüberblick
- Installieren Sie die Voraussetzungen für die Feinabstimmung des Falcon-7B-Modells
- Richten Sie Remote-Decorator-Konfigurationen ein
- Verarbeiten Sie den Datensatz mit den FAQs zu AWS-Services vor
- Optimieren Sie Falcon-7B in den FAQs zu AWS-Services
- Testen Sie die Feinabstimmungsmodelle anhand von Beispielfragen zu AWS-Services
1. Installieren Sie die Voraussetzungen für die Feinabstimmung des Falcon-7B-Modells
Starten Sie das Notebook falcon-7b-qlora-remote-decorator_qa.ipynb in SageMaker Studio durch Auswahl von IMagier als Datenwissenschaft
Und Kernel als Python 3
. Installieren Sie alle erforderlichen Bibliotheken, die im aufgeführt sind Anforderungen.txt
. Einige der Bibliotheken müssen auf der Notebook-Instanz selbst installiert werden. Führen Sie andere Vorgänge aus, die für die Datensatzverarbeitung und das Auslösen eines SageMaker-Trainingsauftrags erforderlich sind.
2. Richten Sie Remote-Decorator-Konfigurationen ein
Erstellen Sie eine Konfigurationsdatei, in der alle Konfigurationen im Zusammenhang mit dem Amazon SageMaker-Schulungsjob angegeben sind. Diese Datei wird vom @remote decorator gelesen, während der Trainingsjob ausgeführt wird. Diese Datei enthält Einstellungen wie Abhängigkeiten, Trainingsbild, Instanz und die Ausführungsrolle, die für den Trainingsjob verwendet werden soll. Eine detaillierte Referenz aller von der Konfigurationsdatei unterstützten Einstellungen finden Sie hier Konfigurieren und Verwenden von Standardeinstellungen mit dem SageMaker Python SDK.
Es ist nicht zwingend erforderlich, das zu verwenden config.yaml
Datei, um mit dem @remote Decorator arbeiten zu können. Dies ist lediglich eine sauberere Möglichkeit, dem @remote-Dekorator alle Konfigurationen bereitzustellen. Dadurch bleiben SageMaker- und AWS-bezogene Parameter außerhalb des Codes und es entsteht ein einmaliger Aufwand für die Einrichtung der Konfigurationsdatei, die von allen Teammitgliedern verwendet wird. Alle Konfigurationen könnten auch direkt in den Decorator-Argumenten bereitgestellt werden, aber das verringert auf lange Sicht die Lesbarkeit und Wartbarkeit von Änderungen. Außerdem kann die Konfigurationsdatei von einem Administrator erstellt und für alle Benutzer in einer Umgebung freigegeben werden.
Verarbeiten Sie den Datensatz mit den FAQs zu AWS-Services vor
Der nächste Schritt besteht darin, den Datensatz zu laden und vorzuverarbeiten, um ihn für den Trainingsauftrag vorzubereiten. Schauen wir uns zunächst den Datensatz an:
Es zeigt FAQ für einen der AWS-Dienste. Zusätzlich zu QLoRA, Bitsanbyte
wird zur Konvertierung in 4-Bit-Präzision verwendet, um eingefrorenes LLM auf 4-Bit zu quantisieren und anzuhängen LoRA Adapter drauf.
Erstellen Sie eine Eingabeaufforderungsvorlage, um jedes FAQ-Beispiel in ein Eingabeaufforderungsformat zu konvertieren:
Der nächste Schritt besteht darin, die Eingaben (Text) in Token-IDs umzuwandeln. Dies geschieht durch a Hugging Face Transformers Tokenizer.
Nutzen Sie jetzt einfach die prompt_template
Funktion zum Konvertieren aller FAQ in das Eingabeaufforderungsformat und zum Einrichten von Trainings- und Testdatensätzen.
4. Feinabstimmung von Falcon-7B in den FAQs zu AWS-Diensten
Jetzt können Sie das Trainingsskript vorbereiten und die Trainingsfunktion definieren train_fn
und setzen Sie @remote decorator auf die Funktion.
Die Trainingsfunktion führt Folgendes aus:
- tokenisiert und segmentiert den Datensatz
- aufstellen
BitsAndBytesConfig
, der angibt, dass das Modell in 4-Bit geladen werden soll, während der Berechnung jedoch in konvertiert werden sollbfloat16
. - Laden Sie das Modell
- Finden Sie Zielmodule und aktualisieren Sie die erforderlichen Matrizen mithilfe der Utility-Methode
find_all_linear_names
- Erstellen LoRA Konfigurationen, die die Rangfolge der Aktualisierungsmatrizen festlegen (
S
), Vergößerungsfaktor, Verkleinerungsfaktor (lora_alpha
), die Module zum Anwenden der LoRA-Update-Matrizen (target_modules
), Ausfallwahrscheinlichkeit für Lora-Schichten(lora_dropout
),task_type
, usw. - Beginnen Sie mit der Schulung und Bewertung
Und rufe das an train_fn()
Der Optimierungsjob würde auf dem Amazon SageMaker-Trainingscluster ausgeführt. Warten Sie, bis der Tuning-Auftrag abgeschlossen ist.
5. Testen Sie die Feinabstimmungsmodelle anhand von Beispielfragen zu AWS-Services
Jetzt ist es an der Zeit, einige Tests am Modell durchzuführen. Laden wir zunächst das Modell:
Laden Sie nun eine Beispielfrage aus dem Trainingsdatensatz, um die ursprüngliche Antwort zu sehen, und stellen Sie dann dieselbe Frage aus dem optimierten Modell, um die Antwort im Vergleich zu sehen.
Hier ist ein Beispiel für eine Frage aus dem Trainingssatz und die Originalantwort:
Nun wird die gleiche Frage an das getunte Falcon-7B-Modell gestellt:
Damit ist die Implementierung der Feinabstimmung von Falcon-7B im FAQ-Datensatz für AWS-Dienste mithilfe des @remote decorator aus dem Amazon SageMaker Python SDK abgeschlossen.
Aufräumen
Führen Sie die folgenden Schritte aus, um Ihre Ressourcen zu bereinigen:
- Fahren Sie die Amazon SageMaker Studio-Instanzen herunter, um zusätzliche Kosten zu vermeiden.
- Bereinigen Sie Ihr Amazon Elastic File System (Amazon EFS)-Verzeichnis, indem Sie das Hugging Face-Cache-Verzeichnis löschen:
Abschluss
In diesem Beitrag haben wir Ihnen gezeigt, wie Sie die Funktionen des @remote decorators effektiv zur Feinabstimmung des Falcon-7B-Modells mithilfe von QLoRA und Hugging Face PEFT nutzen können bitsandbtyes
ohne wesentliche Änderungen im Trainingsnotizbuch vorzunehmen und Amazon SageMaker-Funktionen zu nutzen, um Trainingsjobs auf einem Remote-Cluster auszuführen.
Der gesamte in diesem Beitrag gezeigte Code zur Feinabstimmung von Falcon-7B ist im verfügbar GitHub-Repository. Das Repository enthält auch ein Notizbuch, das die Feinabstimmung von Llama-13B zeigt.
Als nächsten Schritt empfehlen wir Ihnen, sich die @remote decorator-Funktionalität anzusehen und Python SDK-API und verwenden Sie es in der Umgebung und IDE Ihrer Wahl. Weitere Beispiele finden Sie im Amazon-Sagemaker-Beispiele Repository, damit Sie schnell loslegen können. Sie können sich auch die folgenden Beiträge ansehen:
Über die Autoren
Bruno Pistone ist ein KI/ML-Spezialist für Lösungsarchitekten für AWS mit Sitz in Mailand. Er arbeitet mit großen Kunden zusammen und hilft ihnen dabei, ihre technischen Anforderungen genau zu verstehen und KI- und maschinelle Lernlösungen zu entwickeln, die die AWS Cloud und den Amazon Machine Learning-Stack optimal nutzen. Zu seinen Fachkenntnissen gehören: End-to-End-Maschinelles Lernen, Industrialisierung des Maschinellen Lernens und Generative KI. Er genießt es, Zeit mit seinen Freunden zu verbringen, neue Orte zu erkunden und zu neuen Zielen zu reisen.
Vikesh Pandey ist ein auf maschinelles Lernen spezialisierter Lösungsarchitekt bei AWS und unterstützt Kunden aus der Finanzbranche beim Entwerfen und Erstellen von Lösungen für generative KI und ML. Außerhalb der Arbeit probiert Vikesh gerne verschiedene Küchen aus und betreibt Sport im Freien.
Hinterlasse eine Antwort