[中文主页] | [Docs] | [API] | [DJ-SORA] | [Lista impresionante]
Data-Juicer es un sistema de procesamiento de datos multimodal único para que los datos de mayor calidad, más jugoso y más digestible para LLMS.
Proporcionamos un patio de recreo con un Jupyterlab administrado. ¡Pruebe Data-Juicer de inmediato en su navegador! Si encuentra que el Juicer de datos es útil para su investigación o desarrollo, por favor cita nuestro trabajo.
La plataforma para la IA de Alibaba Cloud (PAI) ha citado nuestro trabajo e integrado Juicer de datos en sus productos de procesamiento de datos. PAI es un modelo grande nativo de IA y una plataforma de ingeniería AIGC que proporciona administración de conjuntos de datos, gestión de energía informática, cadena de herramientas modelo, desarrollo de modelos, capacitación de modelos, implementación de modelos y gestión de activos de IA. Para la documentación sobre el procesamiento de datos, consulte: Procesamiento de datos PAI para modelos grandes.
Data-Juicer se está actualizando y manteniendo activamente. Periódicamente mejoraremos y agregaremos más funciones, recetas de datos y conjuntos de datos. ¡Le damos la bienvenida a unirse a nosotros (a través de temas, PRS, Slack Channel, Dingding Group, ...), para promover la co-desarrollo del modelo de datos junto con la investigación y las aplicaciones de LLM (multimodal)!
Sistemático y reutilizable : capacitar a los usuarios con una biblioteca sistemática de más de 80 OPS de más de 80, más de 20 recetas de configuración reutilizables y más de 20 kits de herramientas dedicados ricos en características, diseñados para funcionar independientemente de conjuntos de datos LLM multimodales específicos y tuberías de procesamiento.
Data-in-the-loop & sandbox : admitiendo el desarrollo colaborativo de modelos de datos únicos, permitiendo la iteración rápida a través del laboratorio Sandbox y proporcionar características como bucles de retroalimentación basados en datos y modelo, visualización y evaluación automática multidimensional, para que pueda comprender mejor y mejorar sus datos y modelos.
Hacia el entorno de producción : proporcionando tuberías de procesamiento de datos eficientes y paralelas (Aliyun-Pai Ray Slurm Cuda Op Fusion) que requiere menos uso de memoria y CPU, optimizado con tolerancia automática de fallas.
Recetas integrales de procesamiento de datos : ofreciendo decenas de recetas de procesamiento de datos previas a la construcción para la capacitación previa, ajuste, EN, ZH y más escenarios. Validado en reference Llama y modelos Llava.
Flexible y extensible : acomodar la mayoría de los tipos de formatos de datos (por ejemplo, JSONL, Parquet, CSV, ...) y permitiendo combinaciones flexibles de OPS. Siéntase libre de implementar sus propias operaciones para el procesamiento de datos personalizable.
Experiencia fácil de usar : diseñada para la simplicidad, con documentación integral, guías de inicio fáciles y configuraciones de demostración, y configuración intuitiva con simples operaciones de suma/eliminación de las configuraciones existentes.
data_juicer en modo editable: 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 dependenciesLas opciones de dependencia se enumeran a continuación:
| Etiqueta | Descripción |
|---|---|
. o .[mini] | Instale dependencias mínimas para el Juicer de datos básicos. |
.[all] | Instale todas las dependencias excepto Sandbox. |
.[sci] | Instale todas las dependencias para todas las operaciones. |
.[dist] | Instalar dependencias para el procesamiento de datos distribuidos. (Experimental) |
.[dev] | Instale dependencias para desarrollar el paquete como contribuyentes. |
.[tools] | Instale dependencias para herramientas dedicadas, como clasificadores de calidad. |
.[sandbox] | Instale todas las dependencias para Sandbox. |
data_juicer lanzado usando pip : pip install py-data-juicerdata_juicer y dos herramientas básicas (procesamiento de datos y análisis) están disponibles de esta manera. Si desea funciones personalizables y completas, le recomendamos que instale data_juicer desde la fuente.data_juicer , le recomendamos que instale desde la fuente.O tire de nuestra imagen preconstruida de Dockerhub:
docker pull datajuicer/data-juicer: < version_tag > O ejecute el siguiente comando para construir la imagen de Docker, incluido el último data-juicer con DockerFile proporcionado:
docker build -t datajuicer/data-juicer: < version_tag > . El formato de <version_tag> es como v0.2.0 , que es el mismo que la etiqueta de versión de lanzamiento.
import data_juicer as dj
print ( dj . __version__ )Antes de usar operadores relacionados con el video, FFMPEG debe ser instalado y accesible a través de la variable de entorno de ruta $.
Puede instalar FFMPEG usando los administradores de paquetes (por ejemplo, sudo apt install ffmpeg en Debian/Ubuntu, Brew Instalar FFMPEG en OS X) o visite el enlace oficial de FFMPEG.
Compruebe si su ruta de entorno se establece correctamente ejecutando el comando ffmpeg desde el terminal.
? Volver al índice
process_data.py o la herramienta de línea de comandos dj-process con su configuración como argumento para procesar su conjunto de datos. # 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 Nota: Para algunos operadores que involucran modelos o recursos de terceros que no se almacenan localmente en su computadora, podría ser lento para la primera ejecución porque estos OPS deben descargar primero los recursos correspondientes en un directorio. El directorio de caché de descarga predeterminado es ~/.cache/data_juicer . Cambie la ubicación de la memoria caché configurando la variable de entorno de shell, DATA_JUICER_CACHE_HOME a otro directorio, y también puede cambiar DATA_JUICER_MODELS_CACHE o DATA_JUICER_ASSETS_CACHE de la misma manera:
Nota: Cuando se usa operadores con modelos de terceros, es necesario declarar el mem_required correspondiente en el archivo de configuración (puede consultar la configuración en el archivo config_all.yaml ). Durante el tiempo de ejecución, Data-Juicer controlará la cantidad de procesos basados en la disponibilidad de memoria y los requisitos de memoria de los modelos de operadores para lograr una mejor eficiencia de procesamiento de datos. Cuando se ejecuta con el entorno CUDA, si el MEM_REQUIRADO para un operador no se declara correctamente, podría conducir a un problema fuera de la memoria 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 " Proporcionamos varias interfaces simples para que los usuarios elijan de la siguiente manera.
#... 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 )Ahora hemos implementado el procesamiento de datos distribuidos con múltiples máquinas basado en Ray. Las demostraciones correspondientes se pueden ejecutar utilizando los siguientes comandos:
# 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 , por ejemplo, ray_video_deduplicator y ray_document_deduplicator . Esos operadores también confían en una instancia de Redis. Por lo tanto, además de iniciar el clúster Ray, también debe configurar su instancia de Redis con anticipación y proporcionar host y port de su instancia de Redis en la configuración.Los usuarios también pueden optar por no usar Ray y, en su lugar, dividir el conjunto de datos para ejecutarse en un clúster con Slurm. En este caso, utilice el Juicer de datos predeterminado sin Ray. Aliyun PAI-DLC admite el marco de rayos, el marco Slurm, etc. Los usuarios pueden crear directamente trabajos de rayos y trabajos de slurm en el clúster DLC.
analyze_data.py o la herramienta de línea de comandos dj-analyze con su configuración como argumento para analizar su conjunto de datos. # 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 para visualizar su conjunto de datos en su navegador.streamlit run app.pyconfig_all.yaml que incluye todas las operaciones y argumentos predeterminados. Solo necesita eliminar OPS que no usará y refinar algunos argumentos de OPS.config_all.yaml , documentos OP y guía de acumulación avanzada para desarrolladores.python xxx.py --config configs/demo/process.yaml --language_id_score_filter.lang=enEl formato de configuración básico y la definición se muestran a continuación.
Data Sandbox Laboratory (DJ-Sandbox) proporciona a los usuarios las mejores prácticas para producir continuamente recetas de datos. Cuenta con bajo gasto, portabilidad y orientación.
El sandbox se ejecuta utilizando los siguientes comandos de forma predeterminada, y para obtener más información y detalles, consulte la documentación de Sandbox.
python tools/sandbox_starter.py --config configs/demo/sandbox/sandbox.yamltools/preprocess para que usted preprocese estos datos.data-juicer , puede ejecutar los comandos o herramientas mencionadas anteriormente utilizando esta imagen 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? Volver al índice
Data-Juicer se libera bajo la licencia APACHE 2.0.
Estamos en un campo de rápido desarrollo y las contribuciones de gran bienvenida de nuevas características, correcciones de errores y mejores documentos. Consulte la guía de cómo hacer desarrolladores.
Si tiene alguna pregunta, únase a nuestros grupos de discusión.
Data-Juicer se utiliza en varios productos de LLM e iniciativas de investigación, incluidas las LLM industriales de Tongyi de Alibaba Cloud, como Dianjin para el análisis financiero, y Zhiwen para el asistente de lectura, así como la plataforma de Alibaba Cloud para AI (PAI). ¡Esperamos más de su experiencia, sugerencias y discusiones para la colaboración!
Data-Juicer gracias y se refiere a varios proyectos comunitarios, como Huggingface-Datasets, Bloom, Redpajama, Pila, Alpaca-Cot, Megatron-LM, Deepeed, Arrow, Ray, Beam, LM-Harness, Helm, ....
Si encuentra útil nuestro trabajo para su investigación o desarrollo, por favor cita el siguiente documento.
@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: un conjunto integral para el co-desarrollo multimodal del modelo de datos de datos
La sinergia entre los datos y los modelos de lenguaje grande multimodal: una encuesta desde la perspectiva de desarrollo conjunto
IMGDIFF: síntesis de datos de contrastes para modelos de lenguaje grande de visión
La mezcla de datos se hizo eficiente: una ley de escala bivariada para el modelo de lenguaje previamente
? Volver al índice