Allgemeine Einführung
GraphGen ist ein Open-Source-Framework, das von OpenScienceLab, einem KI-Labor in Shanghai, entwickelt wurde und auf GitHub gehostet wird. Es konzentriert sich auf die Optimierung der überwachten Feinabstimmung von Large Language Models (LLMs), indem es die Erzeugung synthetischer Daten durch Wissensgraphen anleitet. Es konstruiert feinkörnige Wissensgraphen aus Quelltext, identifiziert blinde Flecken im Modellwissen mit Hilfe von ECE-Metriken (Expected Calibration Error) und priorisiert die Generierung von Q&A-Paaren, die auf hochwertiges Long-Tail-Wissen abzielen. GraphGen unterstützt Multi-Hop-Neighbourhood Sampling, um komplexe relationale Informationen zu erfassen, und generiert diversifizierte Daten durch Style Control. Das Projekt steht unter der Apache 2.0-Lizenz und der Code ist offen für akademische Forschung und kommerzielle Entwicklung. Benutzer können den Generierungsprozess flexibel über die Befehlszeile oder die Gradio-Schnittstelle konfigurieren, und die generierten Daten können direkt für das Modelltraining verwendet werden.
Funktionsliste
- Aufbau feinkörniger Wissensgraphen: Extrahieren von Entitäten und Beziehungen aus Text zur Erstellung strukturierter Wissensgraphen.
- Identifizierung von blinden Flecken des Wissens: Auffinden von Wissensschwächen in Sprachmodellen auf der Grundlage von ECE-Metriken (Expected Calibration Error).
- Generieren Sie hochwertige Q&A-Paare: Priorisieren Sie die Generierung von Q&A-Daten für Long-Tail-Wissen, um die Modellleistung zu verbessern.
- Multi-hop neighbourhood sampling: Erfassung von Beziehungen auf mehreren Ebenen in Wissensgraphen zur Verbesserung der Datenkomplexität.
- Style Control Generation: Unterstützung verschiedener Q&A-Stile, wie z.B. kurz oder ausführlich, zur Anpassung an unterschiedliche Szenarien.
- Individuelle Konfiguration: Anpassung von Datentypen, Eingabedateien und Ausgabepfaden über YAML-Dateien.
- Gradio Interface Support: Bietet eine visuelle Schnittstelle zur Vereinfachung der Datengenerierung.
- Modellkompatibilität: Unterstützt mehrere Sprachmodelle (z.B. Qwen, OpenAI) für die Datenerzeugung und das Training.
Hilfe verwenden
Einbauverfahren
GraphGen ist ein Python-Projekt, das die Installation von PyPI oder die Ausführung aus dem Quellcode unterstützt. Hier sind die detaillierten Installationsschritte:
Installieren aus PyPI
- GraphGen installieren
Stellen Sie sicher, dass die Python-Version 3.8 oder höher ist, indem Sie den folgenden Befehl ausführen:pip install graphg
- Umgebungsvariablen konfigurieren
GraphGen erfordert einen Aufruf einer Sprachmodellierungs-API (wie Qwen oder OpenAI). Setzen Sie Umgebungsvariablen im Terminal:export SYNTHESIZER_MODEL="your_synthesizer_model_name" export SYNTHESIZER_BASE_URL="your_base_url" export SYNTHESIZER_API_KEY="your_api_key" export TRAINEE_MODEL="your_trainee_model_name" export TRAINEE_BASE_URL="your_base_url" export TRAINEE_API_KEY="your_api_key"
SYNTHESIZER_MODEL
Modelle für die Erstellung von Wissensgraphen und Daten.TRAINEE_MODEL
Modelle, die für die Ausbildung verwendet werden.
- Starten Sie das Kommandozeilentool
Führen Sie den folgenden Befehl aus, um Daten zu generieren:graphg --output_dir cache
Installation von der Quelle aus
- Klon-Lager
Klonen Sie das GraphGen-Repository lokal:git clone https://github.com/open-sciencelab/GraphGen.git cd GraphGen
- Erstellen einer virtuellen Umgebung
Erstellen und aktivieren Sie eine virtuelle Umgebung:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- Installation von Abhängigkeiten
Installieren Sie die Projektabhängigkeiten:pip install -r requirements.txt
Stellen Sie sicher, dass PyTorch (empfohlen 1.13.1 oder höher) und zugehörige Bibliotheken (z. B. LiteLLM, DSPy) installiert sind. Wenn Sie eine GPU verwenden, installieren Sie eine CUDA-kompatible Version:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
- Umgebungsvariablen konfigurieren
Kopieren Sie die Beispiel-Umgebungsdatei und bearbeiten Sie sie:cp .env.example .env
existieren
.env
Datei, um modellbezogene Informationen festzulegen:SYNTHESIZER_MODEL=your_synthesizer_model_name SYNTHESIZER_BASE_URL=your_base_url SYNTHESIZER_API_KEY=your_api_key TRAINEE_MODEL=your_trainee_model_name TRAINEE_BASE_URL=your_base_url TRAINEE_API_KEY=your_api_key
- Vorbereiten der Dateneingabe
GraphGen benötigt Eingabetext im JSONL-Format. Die Beispieldaten befinden sich in der Dateiresources/examples/raw_demo.jsonl
. Die Benutzer können benutzerdefinierte Daten vorbereiten, um eine einheitliche Formatierung zu gewährleisten.
Verwendung
GraphGen unterstützt sowohl die Befehlszeile als auch die Gradio-Schnittstelle. Hier sind die detaillierten Schritte:
Befehlszeilenbetrieb
- Ändern Sie die Konfigurationsdatei
Compilerconfigs/graphgen_config.yaml
Datei, um die Parameter für die Datenerzeugung festzulegen:data_type: "raw" input_file: "resources/examples/raw_demo.jsonl" output_dir: "cache" ece_threshold: 0.1 sampling_hops: 2 style: "detailed"
data_type
: Eingangsdatentyp (z.B.raw
).input_file
: Geben Sie den Dateipfad ein.output_dir
: Ausgabeverzeichnis.ece_threshold
ECE-Schwellenwerte für die Erkennung blinder Flecken.sampling_hops
Multi-hop sampling depth.style
Q&A Generierungsstile (z.B.detailed
vielleichtconcise
).
- Führen Sie das generierte Skript aus
Führen Sie den folgenden Befehl aus, um Daten zu generieren:bash scripts/generate.sh
oder führen Sie einfach ein Python-Skript aus:
python -m graphg --config configs/graphgen_config.yaml
- Generierte Ergebnisse anzeigen
Die erzeugten Q&A-Paare werden in der Dateicache/data/graphgen
Verzeichnis im Format einer JSONL-Datei:ls cache/data/graphgen
Gradio Interface Betrieb
- Starten der Gradio-Schnittstelle
Führen Sie den folgenden Befehl aus, um die Visualisierungsoberfläche zu starten:python webui/app.py
Der Browser öffnet die Gradio-Oberfläche, die den Prozess der Datengenerierung anzeigt.
- Arbeitsablauf
- Lädt eine JSONL-formatierte Eingabedatei in die Schnittstelle hoch.
- Konfigurieren Sie die Generierungsparameter (z. B. ECE-Schwellenwert, Probentiefe, Generierungsstil).
- Klicken Sie auf die Schaltfläche "Generieren" und das System verarbeitet die Eingaben und gibt die Q&A-Paare aus.
- Laden Sie die generierte JSONL-Datei herunter.
Featured Function Bedienung
- Konstruktion von WissensgraphenGraphGen extrahiert automatisch Entitäten und Beziehungen aus dem Eingabetext, erzeugt einen Wissensgraphen und speichert ihn im JSON-Format. Ein manuelles Eingreifen ist nicht erforderlich.
- Wissen über die Erkennung des toten WinkelsVorhersage von Verzerrungen durch das ECE-Metrik-Analysemodell und Erstellung gezielter Q&A-Paare. Anpassung
ece_threshold
Strenge Blindscreening-Kontrollen. - Mehrstufige NachbarschaftsprobenahmeQ&A: Erfassen von mehrstufigen Beziehungen in Wissensgraphen, um komplexe Q&A-Paare zu erzeugen. Einrichtung
sampling_hops
Steuert die Abtasttiefe. - Erzeugung von StilkontrollenMehrere Q&A-Stile werden für unterschiedliche Szenarien unterstützt. Benutzer können
style
Mit dem Parameter wird der Stil ausgewählt.
Ausbildungsmodelle
Die erzeugten Daten können für die überwachte Feinabstimmung (SFT) verwendet werden. Importieren Sie die Ausgabedatei in ein Framework, das SFT unterstützt (z. B. XTuner):
xtuner train --data cache/data/graphgen/output.jsonl --model qwen-7b
caveat
- Stellen Sie sicher, dass der API-Schlüssel und die Netzwerkverbindung stabil sind und dass der Generierungsprozess ein externes Modell aufruft.
- Die Eingabedaten sollten im JSONL-Format vorliegen, siehe
raw_demo.jsonl
. - GPU-Geräte werden für die Erzeugung großer Datenmengen empfohlen, um die Leistung zu optimieren.
- Überprüfen Sie die Versionen der Abhängigkeiten, um Konflikte zu vermeiden. Falls erforderlich aktualisieren
requirements.txt
.
Ergänzende Ressourcen
- OpenXLab AnwendungszentrumBenutzer können auf die Informationen über das OpenXLab Erleben Sie GraphGen.
- Offizielle FAQ: siehe die GitHub FAQ Gemeinsame Probleme lösen.
- technische Analyse: Mit freundlicher Genehmigung von DeepWiki Analyse der SystemarchitekturIn diesem Abschnitt wird der Arbeitsablauf von GraphGen im Detail beschrieben.
Anwendungsszenario
- akademische Forschung
Forscher können GraphGen verwenden, um Q&A-Daten für spezielle Bereiche zu erzeugen. Die Generierung von Trainingsdaten für ein chemisches oder medizinisches Domänenmodell verbessert beispielsweise die Wissensabdeckung des Modells. - KI-Optimierung für Unternehmen
Unternehmen können GraphGen nutzen, um benutzerdefinierte Q&A-Paare für den Kundenservice oder Empfehlungssysteme zu generieren und die Reaktionsfähigkeit ihrer Dialogmodelle zu optimieren. - Entwicklung von Bildungsplattformen
Entwickler können verschiedene Lehr- und Q&A-Daten generieren, um intelligente Bildungswerkzeuge zur Unterstützung des personalisierten Lernens zu entwickeln.
QA
- Welche Modelle werden von GraphGen unterstützt?
GraphGen unterstützt OpenAI, Qwen, Ollama und andere Modelle über LiteLLM. Modell-API-Schlüssel und Adressen sind erforderlich. - Wie bereite ich die Eingabedaten vor?
Die Eingabedaten sollten im JSONL-Format vorliegen, wobei jede Zeile Textinhalte enthält. Referenzresources/examples/raw_demo.jsonl
. - Wie lange dauert es, Daten zu generieren?
Kleine Datenmengen (100 Einträge) können einige Minuten, große Datenmengen Stunden dauern, abhängig von der Menge der Eingaben und der Leistung der Hardware. - Wie funktioniert die Gradio-Schnittstelle?
in Bewegung seinpython webui/app.py
Die Daten werden generiert, indem die Eingabedatei über den Browser hochgeladen und die Parameter konfiguriert werden.