LLM-Training-Dataset-Builder
Straffung der Erstellung von Datensatz, um ein großes Sprachmodell mit Tripletts zu trainieren: Anweisungseingänge-Output. Die Standardkonfiguration entspricht Github.com/tloen/alpaca-lora-Anforderungen.
Dieses Projekt verarbeitet Beispielaufträge in verschiedenen Formaten (XML-, JSON- und PostgreSQL-Datenbank) und generiert Fragen-Antwortenpaare basierend auf den Informationen der Bestellungen?
Der Code ist so konzipiert, dass er modular und leicht anpassbar ist und verschiedene Vorbehandlungsmethoden und Anweisungen ermöglicht.
Merkmale
- Unterstützt die Verarbeitung von XML-, JSON- und PostgreSQL -Datenbank -Eingabeformaten.
- Anpassbare Datensatzvorverarbeitung und Anweisungsgenerierung.
- Option zum Zusammenführen von Ausgabedateien in eine einzelne Datei.
- Konfigurierbare Parameter über
config.py oder Befehlszeilenargumente.
Dateien und Funktionen
main.py
Dies ist der Haupteintrittspunkt für das Programm. Es übernimmt die Argumente der Befehlszeilen, verarbeitet die Eingabedateien oder Datenbank und generiert die Ausgabedateien.
config.py
Diese Datei enthält Konfigurationsparameter, die im gesamten Projekt verwendet werden.
- Param_activate_config : Ob Sie config.py-Parameter oder Befehlszeilenargumente verwenden (True/False).
- Param_output_dir : Das Verzeichnis, in dem das Trainingssatz erstellt wird.
- Param_output_merge_file : ob fusion -Ausgabedateien (true/false) zusammengeführt werden soll.
- Param_output_merge_file_name : Der Name der fusionierten Ausgabedatei.
- Param_method : Die Verarbeitungsmethode (Werte: XMLs, XML, Jsons, JSON, Datenbank).
- Param_xml_path, param_xmls_path, param_json_path, param_jsons_path : Eingabedatei/Verzeichnispfade für XML- und JSON -Dateien.
- Param_database_host, param_database_user, param_database_dbname, param_database_dbpassword, param_database_port : postgresql -Datenbankverbindungsparameter.
config_parser.py
Diese Datei enthält Funktionen zum Verarbeiten von XML-, JSON- und PostgreSQL-Datenbankeingaben und generieren Fragen-Antwortenpaare basierend auf dem Datensatz.
- Dataset_PreTreatment (Datensatz) : Vorverarbeitet den Datensatz. Kann angepasst werden.
- generate_instructions (Dataset) : Generieren Sie Fragen-Antwortenpaare basierend auf dem Datensatz. Kann angepasst werden.
- process_xml_file (Dateiname) : Verarbeitet eine XML-Datei und generiert Fragen-Answer-Paare.
- process_json_file (Dateiname) : Verarbeitet eine JSON-Datei und generiert Fragen-Answer-Paare.
- process_database (Benutzer, Kennwort, Host, Port, Datenbank) : Abruft Daten aus einer PostgreSQL-Datenbank ab, verarbeitet sie und generiert Fragen-Antwortenpaare.
sample_orders_parser.py
Diese Datei enthält benutzerdefinierte Funktionen für Vorbehandlungsdatensätze und generieren Fragen-Antwortenpaare.
- entfernen_duplicates (items_node) : Entfernt doppelte Elemente aus der items_node basierend auf ihrer Beschreibung.
- update_sku_price (item_node, sku_dict, price_dict) : Aktualisiert die SKU und den Preis des item_node basierend auf der Beschreibung.
- apply_inflation (order_date, Preis, Menge) : Anwendet die Inflation basierend auf dem order_date auf Preis und Menge.
- calculate_total_price (powers_node) : Berechnet den Gesamtpreis aller Elemente im items_node.
- update_items_with_inflation (Elemente, order_date) : Aktualisiert die Artikel mit aufgeblasenen Preisen und Mengen basierend auf der order_date.
- generate_general_instructions (Dataset) : Generale allgemeine Anweisungen basierend auf dem Datensatz.
- generate_item_instructions (item_node) : generiert itemspezifische Anweisungen basierend auf dem item_node.
- dataSet_pretreatment_custom (Datensatz) : Benutzerdefinierte Funktion zum Vorverarbeiten des Datensatzes.
- generate_instructions_custom (Datensatz) : Benutzerdefinierte Funktion zum Generieren von Fragen-Antwortenpaaren basierend auf dem Datensatz.
Erste Schritte
- Wählen Sie eine der drei Verarbeitungsmethoden für die Implementierung:
- process_xml_file (Dateiname): Verarbeitung von XML -Dateien (bereits im Beispiel implementiert)
- process_json_file (Dateiname): Verarbeitung von JSON -Dateien (jetzt implementiert)
- process_database (Benutzer, Kennwort, IP, Datenbank, Output_dir): Verarbeitung von Datensätzen aus einer Datenbank (jetzt implementiert)
- Ändern Sie die Funktion "DataSet_Prectmentmentment), um die Daten vor dem Generieren von Anweisungen vorzubereiten.
- Ändern Sie die Funktion generate_instructions (behandelt_dataset) , um die gewünschten Anweisungen zu generieren.
- Führen Sie zum Testen des angegebenen Beispiels einen der folgenden Befehle aus:
python main.py --xmls=./input/sample-order-xml/
oder
python main.py --xml=./input/sample-order-xml/sample-file.xml
Für JSON -Dateien:
python main.py --jsons=./input/sample-order-json/
oder
python main.py --json=./input/sample-order-json/sample-file.json
Für die PostgreSQL -Datenbank:
python main.py --user= < db_user > --password= < db_password > --ip= < db_host > --database= < db_name >
Beispiel bereitgestellt
Das in diesem Programm gezeigte Beispiel zeigt einen ausgeklügelten Anwendungsfall, der einen benutzerdefinierten Parser erfordert, der auf einen bestimmten geschäftlichen Kontext zugeschnitten ist. Die Datenvorverarbeitung erfolgt in der Funktion "DataSet_Prectment_Custom", während die komplizierten Anweisungsreihe von der Funktion generate_instructions_custom generiert werden. Durch die Einhaltung dieser Schritte und die Verwendung der bereitgestellten Code -Beispiele als Referenz können Sie dieses Programm so ändern, dass sie unterschiedliche Eingabebeformate berücksichtigen und angepasste Anweisungen erstellen, die auf Ihre individuellen Anforderungen zugeschnitten sind.
Haftungsausschluss für meinen Arbeitgeber
Dies wurde über ein Wochenende zu meiner persönlichen Zeit entwickelt.
Autor
Pierre-He-Henri Ausseil LinkedIn: linkedIn.com/in/ausseil/ Github: github.com/ph-ausseil/
Über den Autor
Ich arbeite in der Datenintegration (Middleware, Datahub, API ...) und Service Management. Ich bin kein Entwickler. Ich wollte einen Proof of Concept über die Verwendung von LLM in einem Firmenstapel erstellen, damit die LLM über das Geschäftsumfeld informiert und die Entscheidungsfindung eines Unternehmens verbessern würde.