[中文主页] | [Docs] | [API] | [DJ-SORA] | [Liste géniale]
Data-Juicer est un système de traitement des données multimodal à guichet unique pour créer des données de qualité supérieure, plus juteuses et plus digestibles pour les LLM.
Nous fournissons un terrain de jeu avec un jupyterlab géré. Essayez tout de suite Data-Juicer dans votre navigateur! Si vous trouvez des data-jusicer utiles pour vos recherches ou développement, veuillez citer notre travail.
La plate-forme pour l'IA d'Alibaba Cloud (PAI) a cité nos travaux et intégré de jus de données dans ses produits de traitement des données. PAI est un grand modèle natif de l'IA et une plate-forme d'ingénierie AIGC qui fournit une gestion des ensembles de données, une gestion de l'alimentation informatique, une chaîne d'outils de modèle, un développement de modèles, une formation sur modèle, un déploiement de modèle et une gestion des actifs de l'IA. Pour la documentation sur le traitement des données, veuillez vous référer à: Traitement des données PAI pour les grands modèles.
Data-Juicer est activement mis à jour et maintenu. Nous améliorerons périodiquement et ajouterons plus de fonctionnalités, de recettes de données et d'ensembles de données. Nous vous invitons à vous joindre à nous (via les problèmes, PRS, Slack Channel, Dingding Group, ...), dans la promotion du co-développement du modèle de données ainsi que des recherches et des applications de LLM (multimodaux)!
Systematique et réutilisable : autonomiser les utilisateurs avec une bibliothèque systématique de 80+ Core OPS, plus de 20 recettes de configuration réutilisables et plus de 20 boîtes d'outils dédiées riches en fonctionnalités, conçues pour fonctionner indépendamment des ensembles de données LLM multimodaux spécifiques et des pipelines de traitement.
Données dans la boucle et bac à sable : prendre en charge le développement collaboratif de modèle de données à guichet unique, permettant une itération rapide via le laboratoire de sandbox et fournissant des fonctionnalités telles que des boucles de rétroaction basées sur les données et le modèle, la visualisation et l'évaluation automatique multidimensionnelle, afin que vous puissiez mieux comprendre et améliorer vos données et vos modèles.
Vers l'environnement de production : fournir des pipelines de traitement des données efficaces et parallèles (Aliyun-Pai Ray Slurm CUDA OP Fusion) nécessitant moins de mémoire et d'utilisation du processeur, optimisée avec une tolération de défaut automatique.
Recettes complètes de traitement des données : offrant des dizaines de recettes de traitement de données prédéfinies pour les scénarios pré-formation, affinés, EN, ZH et plus de scénarios. Validé sur les modèles de référence LLAMA et LLAVA.
Flexible et extensible : s'adapter à la plupart des types de formats de données (par exemple, JSONL, Parquet, CSV, ...) et permettant des combinaisons flexibles d'OPS. N'hésitez pas à implémenter vos propres opérations pour le traitement des données personnalisables.
Expérience conviviale : conçue pour la simplicité, avec une documentation complète, des guides de démarrage faciles et des configurations de démonstration, et une configuration intuitive avec un simple ajout / supprimer des opérations des configurations existantes.
data_juicer en mode modifiable: 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 dependenciesLes options de dépendance sont répertoriées ci-dessous:
| Étiqueter | Description |
|---|---|
. ou .[mini] | Installez des dépendances minimales pour les données de base de base. |
.[all] | Installez toutes les dépendances sauf bac à sable. |
.[sci] | Installez toutes les dépendances pour tous les OP. |
.[dist] | Installez les dépendances pour le traitement des données distribuées. (Expérimental) |
.[dev] | Installez les dépendances pour développer le package en tant que contributeurs. |
.[tools] | Installez les dépendances pour les outils dédiés, tels que les classificateurs de qualité. |
.[sandbox] | Installez toutes les dépendances pour Sandbox. |
data_juicer publiés à l'aide de pip : pip install py-data-juicerdata_juicer et deux outils de base (traitement et analyse des données) sont disponibles de cette manière. Si vous souhaitez des fonctions personnalisables et complètes, nous vous recommandons d'installer data_juicer à partir de la source.data_juicer , nous vous recommandons d'installer à partir de Source.Tirez notre image prédéfinie de DockerHub:
docker pull datajuicer/data-juicer: < version_tag > ou exécutez la commande suivante pour construire l'image docker, y compris le dernier data-juicer avec dockerfile fourni:
docker build -t datajuicer/data-juicer: < version_tag > . Le format de <version_tag> est comme v0.2.0 , qui est le même que la balise de version de version.
import data_juicer as dj
print ( dj . __version__ )Avant d'utiliser des opérateurs liés à la vidéo, FFMPEG doit être installé et accessible via la variable d'environnement $ Path.
Vous pouvez installer FFMPEG à l'aide des gestionnaires de packages (par exemple, SUDO APT Installer FFMPEG sur Debian / Ubuntu, Brew Installer FFMPEG sur OS X) ou visiter le lien FFMPEG officiel.
Vérifiez si votre chemin d'environnement est défini correctement en exécutant la commande ffmpeg à partir du terminal.
? Retour à l'index
process_data.py ou de la ligne de commande dj-process avec votre configuration comme argument pour traiter votre ensemble de données. # 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 Remarque: Pour certains opérateurs qui impliquent des modèles ou des ressources tiers qui ne sont pas stockés localement sur votre ordinateur, il peut être lent pour la première course, car ces OPS doivent d'abord télécharger des ressources correspondantes dans un répertoire. Le répertoire de cache de téléchargement par défaut est ~/.cache/data_juicer . Modifiez l'emplacement du cache en définissant la variable d'environnement Shell, DATA_JUICER_CACHE_HOME dans un autre répertoire, et vous pouvez également modifier DATA_JUICER_MODELS_CACHE ou DATA_JUICER_ASSETS_CACHE de la même manière:
Remarque: Lorsque vous utilisez des opérateurs avec des modèles tiers, il est nécessaire de déclarer le mem_required correspondant dans le fichier de configuration (vous pouvez vous référer aux paramètres du fichier config_all.yaml ). Pendant l'exécution, Data-Juicer contrôlera le nombre de processus basés sur la disponibilité de la mémoire et les exigences de mémoire des modèles d'opérateur pour obtenir une meilleure efficacité de traitement des données. Lors de l'exécution avec un environnement CUDA, si le MEM_RÉQUIRED pour un opérateur n'est pas déclaré correctement, il pourrait potentiellement conduire à un problème de mémoire CUDA.
# 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 " Nous fournissons diverses interfaces simples parmi lesquelles les utilisateurs peuvent choisir comme suit.
#... 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 )Nous avons maintenant implémenté le traitement de données distribué multi-machines basé sur Ray. Les démos correspondantes peuvent être exécutées en utilisant les commandes suivantes:
# 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 , par exemple ray_video_deduplicator et ray_document_deduplicator . Ces opérateurs s'appuient également sur une instance Redis. Ainsi, en plus de démarrer le cluster de rayons, vous devez également configurer votre instance redis à l'avance et fournir host et port de votre instance redis en configuration.Les utilisateurs peuvent également choisir de ne pas utiliser Ray et de diviser l'ensemble de données pour s'exécuter sur un cluster avec Slurm. Dans ce cas, veuillez utiliser le jus de données par défaut sans rayon. Aliyun PAI-DLC prend en charge le cadre Ray Framework, Slurm, etc. Les utilisateurs peuvent créer directement des travaux Ray et des travaux Slurm sur le cluster DLC.
analyze_data.py ou l'outil de ligne de commande dj-analyze avec votre configuration comme argument pour analyser votre ensemble de données. # 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 pour visualiser votre ensemble de données dans votre navigateur.streamlit run app.pyconfig_all.yaml qui inclut tous les opérations et les arguments par défaut. Il vous suffit de supprimer les OP que vous n'utiliserez pas et affinez certains arguments de OPS.config_all.yaml , les documents OP et le guide de construction avancé pour les développeurs.python xxx.py --config configs/demo/process.yaml --language_id_score_filter.lang=enLe format et la définition de configuration de base sont illustrés ci-dessous.
Le Data Sandbox Laboratory (DJ-Sandbox) fournit aux utilisateurs les meilleures pratiques pour produire en continu des recettes de données. Il comprend des frais généraux, une portabilité et des conseils faibles.
Le bac à sable est exécuté en utilisant les commandes suivantes par défaut, et pour plus d'informations et de détails, veuillez vous référer à la documentation de bac à sable.
python tools/sandbox_starter.py --config configs/demo/sandbox/sandbox.yamltools/preprocess pour que vous prépariez ces données.data-juicer , vous pouvez exécuter les commandes ou les outils mentionnés ci-dessus à l'aide de cette image Docker. # 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? Retour à l'index
Data-Juicer est publié sous Apache Licence 2.0.
Nous sommes dans un domaine en développement rapide et nous sommes bien accueillis des contributions de nouvelles fonctionnalités, des corrections de bogues et de meilleures documentations. Veuillez vous référer au guide de la manière des développeurs.
Si vous avez des questions, veuillez rejoindre nos groupes de discussion.
Data-Juicer est utilisé dans divers produits LLM et initiatives de recherche, y compris les LLM industriels de Tongyi d'Alibaba Cloud, tels que Dianjin pour l'analyse financière, et Zhiwen pour l'assistant de lecture, ainsi que la plate-forme d'Alibaba Cloud pour l'IA (PAI). Nous attendons avec impatience davantage de votre expérience, suggestions et discussions pour la collaboration!
Data-Juicer merci et se réfère à plusieurs projets communautaires, tels que les liaisons de datase, Bloom, Redpajama, Pile, Alpaca-Cot, Megatron-LM, Deeppeed, Arrow, Ray, Beam, LM-Harness, Helm, ....
Si vous trouvez notre travail utile pour votre recherche ou votre développement, veuillez citer le document suivant.
@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: une suite complète pour le co-développement multimodal du modèle de modèle de données
La synergie entre les données et les modèles multimodaux de grande langue: une enquête du point de vue du co-développement
IMGDIFF: Synthèse des données contrastives pour les modèles de vision de la vision
Mélange de données rendu efficace: une loi de mise à l'échelle bivariée pour le modèle de langue pré-formation
? Retour à l'index