[中文主页] | [Docs] | [API] | [DJ-Sora] | [Großartige Liste]
Data-Juicer ist ein multimodales Datenverarbeitungssystem mit einem Stop, um Daten qualitativ hochwertiger, saftiger und mehr verdaulicher für LLMs zu gestalten.
Wir bieten einen Spielplatz mit einem verwalteten JupyterLab. Versuchen Sie es sofort in Ihrem Browser Data-Juicer! Wenn Sie Daten-Juicer für Ihre Forschung oder Entwicklung nützlich finden, zitieren Sie bitte unsere Arbeit.
Die Plattform für KI von Alibaba Cloud (PAI) hat unsere Arbeit und integrierte Daten-Juicer in seine Datenverarbeitungsprodukte zitiert. PAI ist eine KI -native große Modell- und AIGC -Engineering -Plattform, die Datensatzverwaltung, Computing -Stromverwaltung, Modell -Toolkette, Modellentwicklung, Modelltraining, Modellbereitstellung und AI -Asset -Management bietet. Informationen zur Datenverarbeitung finden Sie unter: PAI-Datenverarbeitung für große Modelle.
Data-Juicer wird aktiv aktualisiert und aufrechterhalten. Wir werden regelmäßig weitere Funktionen, Datenrezepte und Datensätze hinzufügen und hinzufügen. Wir begrüßen Sie mit uns (über Themen, PRS, Slack Channel, Dinging Group, ...), um die Co-Entwicklung von Datenmodell sowie die Forschung und Anwendungen von (multimodalen) LLMs zu fördern!
Systematisch und wiederverwendbar : Beförderung von Benutzern eine systematische Bibliothek mit 80 Kern-Ops, mehr als 20 wiederverwendbaren Konfigurationsrezepten und mehr als 20 featurenreichen Toolkits, die unabhängig von spezifischen multimodalen LLM-Datensätzen und Verarbeitung von Pipelines entwickelt wurden.
Daten-in-the-Loop & Sandbox : Unterstützung der kollaborativen Entwicklung von One-Stop-Datenmodells, die Ermöglichung einer schnellen Iteration durch das Sandbox-Labor und Bereitstellung von Funktionen wie Rückkopplungsschleifen, die auf Daten und Modell, Visualisierung und mehrdimensionaler automatischer Bewertung basieren, damit Sie Ihre Daten und Modelle besser verstehen und verbessern können.
In Bezug auf die Produktionsumgebung : Bereitstellung effizienter und paralleler Datenverarbeitungspipelines (Aliyun-Pai Ray Slurm CUDA OP Fusion), die weniger Speicher und CPU-Verwendung erfordern, optimiert mit automatischer Fehlertoleranz.
Umfassende Rezepte für die Datenverarbeitung : Angebot zehn vorgefertigte Datenverarbeitungsrezepte für Vorausbildung, Feinabstimmung, EN, ZH und weitere Szenarien. Validiert auf Referenzlama- und Llava -Modellen.
Flexibel und erweiterbar : die meisten Arten von Datenformaten (z. B. JSONL, Parquet, CSV, ...) und flexible Kombinationen von OPS ermöglichen. Fühlen Sie sich frei, Ihre eigenen OPs für die anpassbare Datenverarbeitung zu implementieren.
Benutzerfreundliches Erlebnis : Einfachheitlich ausgelegt, mit umfassenden Dokumentation, einfachen Startführern und Demo-Konfigurationen sowie intuitive Konfiguration mit einfachem Hinzufügen/Entfernen von OPs aus vorhandenen Konfigurationen.
data_juicer -Version im bearbeitbaren Modus zu installieren: cd < path_to_data_juicer >
pip install -v -e . cd < path_to_data_juicer >
pip install -v -e . # install a minimal dependencies, which support the basic functions
pip install -v -e .[tools] # install a subset of tools dependenciesDie Abhängigkeitsoptionen sind unten aufgeführt:
| Etikett | Beschreibung |
|---|---|
. oder .[mini] | Installieren Sie minimale Abhängigkeiten für grundlegende Daten-Juicer. |
.[all] | Installieren Sie alle Abhängigkeiten mit Ausnahme von Sandbox. |
.[sci] | Installieren Sie alle Abhängigkeiten für alle OPs. |
.[dist] | Installieren Sie Abhängigkeiten für die verteilte Datenverarbeitung. (Experimental) |
.[dev] | Installieren Sie Abhängigkeiten für die Entwicklung des Pakets als Mitwirkende. |
.[tools] | Installieren Sie Abhängigkeiten für dedizierte Tools wie Qualitätsklassifizierer. |
.[sandbox] | Installieren Sie alle Abhängigkeiten für Sandbox. |
data_juicer mit pip zu installieren: pip install py-data-juicerdata_juicer und zwei grundlegenden Tools (Datenverarbeitung und -analyse) zur Verfügung. Wenn Sie anpassbare und vollständige Funktionen wünschen, empfehlen wir Ihnen, data_juicer aus der Quelle zu installieren.data_juicer befolgen möchten, empfehlen wir Ihnen, bei der Quelle zu installieren.Entweder ziehen Sie unser vorgefertigtes Bild von DockerHub:
docker pull datajuicer/data-juicer: < version_tag > Oder führen Sie den folgenden Befehl aus, um das Docker-Bild mit dem neuesten data-juicer mit bereitgestellter Dockerfile zu erstellen:
docker build -t datajuicer/data-juicer: < version_tag > . Das Format von <version_tag> ist wie v0.2.0 , das dem Versions -Tag -Tag entspricht.
import data_juicer as dj
print ( dj . __version__ )Vor der Verwendung von Video-bezogenen Operatoren sollte FFMPEG über die Variable Umgebungsvariable $ Path installiert und zugänglich sein.
Sie können FFMPEG über Paketmanager (z. B. sudo APT installieren ffmpeg auf Debian/Ubuntu, Brew Install ffmpeg unter OS X) installieren oder den offiziellen FFMPEG -Link besuchen.
Überprüfen Sie, ob Ihr Umgebungsweg korrekt eingestellt wird, indem Sie den Befehl FFMPEG aus dem Terminal ausführen.
? Zurück zum Index
process_data.py Tool oder dj-process Befehlszeilen-Tool mit Ihrer Konfiguration als Argument zur Verarbeitung Ihres Datensatzes aus. # only for installation from source
python tools/process_data.py --config configs/demo/process.yaml
# use command line tool
dj-process --config configs/demo/process.yaml Hinweis: Für einige Betreiber, die Modelle oder Ressourcen von Drittanbietern beinhalten, die nicht lokal auf Ihrem Computer gespeichert sind, ist dies möglicherweise langsam für das erste Laufen, da diese OPs entsprechende Ressourcen zuerst in ein Verzeichnis herunterladen müssen. Das Standard -Download -Cache -Verzeichnis ist ~/.cache/data_juicer . Ändern Sie den Cache -Speicherort, indem Sie die Shell -Umgebungsvariable, DATA_JUICER_CACHE_HOME in ein anderes Verzeichnis einstellen, und Sie können auch DATA_JUICER_MODELS_CACHE oder DATA_JUICER_ASSETS_CACHE auf die gleiche Weise ändern:
HINWEIS: Bei Verwendung von Operatoren mit Modellen von Drittanbietern müssen die entsprechenden mem_required in der Konfigurationsdatei deklariert werden (Sie können sich auf die Einstellungen in der Datei config_all.yaml beziehen). Während der Laufzeit steuert Data-Juicer die Anzahl der Prozesse basierend auf Speicherverfügbarkeit und den Speicheranforderungen der Bedienermodelle, um eine bessere Datenverarbeitungseffizienz zu erzielen. Wenn der MEM_REQUED für einen Bediener nicht korrekt deklariert wird, kann dies möglicherweise zu einem CUDA -Problem führen.
# cache home
export DATA_JUICER_CACHE_HOME= " /path/to/another/directory "
# cache models
export DATA_JUICER_MODELS_CACHE= " /path/to/another/directory/models "
# cache assets
export DATA_JUICER_ASSETS_CACHE= " /path/to/another/directory/assets " Wir bieten verschiedenen einfachen Schnittstellen für Benutzer wie folgt.
#... init op & dataset ...
# Chain call style, support single operator or operator list
dataset = dataset . process ( op )
dataset = dataset . process ([ op1 , op2 ])
# Functional programming style for quick integration or script prototype iteration
dataset = op ( dataset )
dataset = op . run ( dataset )Wir haben jetzt die verteilte Datenverarbeitung von Multi-Maschinen basierend auf Ray implementiert. Die entsprechenden Demos können mit den folgenden Befehlen ausgeführt werden:
# Run text data processing
python tools/process_data.py --config ./demos/process_on_ray/configs/demo.yaml
# Run video data processing
python tools/process_data.py --config ./demos/process_video_on_ray/configs/demo.yamlray , z. B. ray_video_deduplicator und ray_document_deduplicator vorangestellt. Diese Betreiber verlassen sich auch auf eine Redis -Instanz. Zusätzlich zum Starten des Ray -Cluster müssen Sie Ihre Redis -Instanz im Voraus einrichten und host und port Ihrer Redis -Instanz in der Konfiguration bereitstellen.Benutzer können sich auch dafür entscheiden, Ray nicht zu verwenden, und stattdessen den Datensatz auf einen Cluster mit Slurm aufzuteilen. In diesem Fall verwenden Sie bitte den Standarddaten-Juicer ohne Strahl. Aliyun Pai-DLC unterstützt das Ray-Framework, das Slurm-Framework usw. Benutzer können direkt Ray-Jobs und Slurm-Jobs im DLC-Cluster erstellen.
analyze_data.py Tool oder dj-analyze Befehlszeilen-Tool mit Ihrer Konfiguration als Argument zur Analyse Ihres Datensatzes aus. # only for installation from source
python tools/analyze_data.py --config configs/demo/analyzer.yaml
# use command line tool
dj-analyze --config configs/demo/analyzer.yamlapp.py Tool aus, um Ihren Datensatz in Ihrem Browser zu visualisieren.streamlit run app.pyconfig_all.yaml das alle OPs und Standardargumente enthält. Sie müssen nur OPS entfernen , die Sie nicht verwenden und einige Argumente von OPs verfeinern werden.config_all.yaml , OP-Dokumente und erweiterte Aufbauhandbuch für Entwickler verweisen.python xxx.py --config configs/demo/process.yaml --language_id_score_filter.lang=enDas grundlegende Konfigurationsformat und die Definition finden Sie unten.
Das Data Sandbox Laboratory (DJ-Sandbox) bietet Benutzern die besten Verfahren für die kontinuierliche Erzeugung von Datenrezepten. Es verfügt über einen geringen Overhead, die Portabilität und die Anleitung.
Die Sandbox wird standardmäßig mit den folgenden Befehlen ausgeführt. Weitere Informationen und Details finden Sie in der Sandbox -Dokumentation.
python tools/sandbox_starter.py --config configs/demo/sandbox/sandbox.yamltools/preprocess zur Verfügung, mit denen Sie diese Daten vorverproduzieren können.data-juicer erstellen oder ziehen, können Sie die oben genannten Befehle oder Tools mit diesem Docker-Bild ausführen. # run the data processing directly
docker run --rm # remove container after the processing
--privileged
--shm-size 256g
--network host
--gpus all
--name dj # name of the container
-v < host_data_path > : < image_data_path > # mount data or config directory into the container
-v ~ /.cache/:/root/.cache/ # mount the cache directory into the container to reuse caches and models (recommended)
datajuicer/data-juicer: < version_tag > # image to run
dj-process --config /path/to/config.yaml # similar data processing commands # start the container
docker run -dit # run the container in the background
--privileged
--shm-size 256g
--network host
--gpus all
--rm
--name dj
-v < host_data_path > : < image_data_path >
-v ~ /.cache/:/root/.cache/
datajuicer/data-juicer:latest /bin/bash
# enter into this container and then you can use data-juicer in editable mode
docker exec -it < container_id > bash? Zurück zum Index
Data-Juicer wird unter Apache-Lizenz 2.0 veröffentlicht.
Wir befinden uns in einem sich schnell entwickelnden Feld und begrüßen Beiträge neuer Funktionen, Fehlerbehebungen und besseren Dokumentationen. Weitere Informationen finden Sie in Entwicklern.
Wenn Sie Fragen haben, nehmen Sie bitte unseren Diskussionsgruppen bei.
Data-Juicer wird in verschiedenen LLM-Produkten und Forschungsinitiativen verwendet, darunter Industrial LLMs aus Alibaba Clouds Tongyi wie Dianjin für die Finanzanalyse und Zhiwen für den Leseassistenten sowie die Plattform der Alibaba Cloud für AI (PAI). Wir freuen uns auf weitere Erfahrungen, Vorschläge und Diskussionen für die Zusammenarbeit!
Data-Juicer dankt und bezieht sich auf mehrere Community-Projekte, wie z. B. Harmingface-Datensätze, Bloom, Redpajama, Stapel, Alpaka-Cot, Megatron-LM, Deepspeed, Pfeil, Strahl, Strahl, LM-HART, HELM, HELM, ....
Wenn Sie unsere Arbeit für Ihre Forschung oder Entwicklung nützlich finden, zitieren Sie bitte das folgende Papier.
@inproceedings{chen2024datajuicer,
title={Data-Juicer: A One-Stop Data Processing System for Large Language Models},
author={Daoyuan Chen and Yilun Huang and Zhijian Ma and Hesen Chen and Xuchen Pan and Ce Ge and Dawei Gao and Yuexiang Xie and Zhaoyang Liu and Jinyang Gao and Yaliang Li and Bolin Ding and Jingren Zhou},
booktitle={International Conference on Management of Data},
year={2024}
}
Data-Juicer-Sandbox: Eine umfassende Suite für die gemeinsame Entwicklung multimodaler Datenmodellentwicklung
Die Synergie zwischen Daten und multimodalen Großsprachenmodellen: Eine Umfrage aus der gemeinsamen Entwicklung der Entwicklung
IMGDIFF: Kontrastive Datensynthese für Vision Großsprachenmodelle
Datenmischung effizient gemacht: Ein bivariates Skalierungsgesetz für Sprachmodell -Vorbau
? Zurück zum Index