[中文主页] | [Docs] | [API] | [DJ-Sora] | [Lista incrível]
Data-Juicer é um sistema de processamento de dados multimodal único para tornar os dados de maior qualidade, mais suculentos e mais digeríveis para o LLMS.
Fornecemos um playground com um Jupyterlab gerenciado. Experimente o Juicer de dados imediatamente no seu navegador! Se você achar os dados de dados úteis para sua pesquisa ou desenvolvimento, cite gentilmente nosso trabalho.
A plataforma para a IA da Alibaba Cloud (PAI) citou nosso trabalho e integrou o Juicer de dados em seus produtos de processamento de dados. O PAI é um modelo grande e a AIGC de uma plataforma de engenharia AIGC que fornece gerenciamento de dados, computação de gerenciamento de energia, cadeia de ferramentas de modelo, desenvolvimento de modelos, treinamento de modelos, implantação de modelos e gerenciamento de ativos de IA. Para documentação sobre o processamento de dados, consulte: Processamento PAI-Data para modelos grandes.
Data-juicer está sendo atualizado e mantido ativamente. Periodicamente, aprimoraremos e adicionaremos mais recursos, receitas de dados e conjuntos de dados. Congratulamo-nos com você em se juntar a nós (via questões, PRs, Slack Channel, Dingding Group, ...), ao promover o co-desenvolvimento de modelos de dados, juntamente com a pesquisa e aplicações de LLMs (multimodais)!
Sistemático e reutilizável : Capacitar os usuários com uma biblioteca sistemática de mais de 80 OPs principais, mais de 20 receitas de configuração reutilizáveis e mais de 20 kits de ferramentas dedicados ricos em recursos, projetados para funcionar independentemente de conjuntos de dados LLM multimodais específicos e de processamento.
Dados no loop e caixa de areia : Suporte ao desenvolvimento colaborativo de modelos de dados de um topo, permitindo iteração rápida através do laboratório de sandbox e fornece recursos como loops de feedback com base em dados e modelos, visualização e avaliação automática multidimensional, para que você possa entender e melhorar melhor seus dados e modelos.
Para o ambiente de produção : fornecendo pipelines de processamento de dados eficientes e paralelos (Aliyun-Pai ray slurm cuda op fusion) que requer menor uso de memória e CPU, otimizado com tolerância automática de falhas.
Receitas abrangentes de processamento de dados : Oferecendo dezenas de receitas de processamento de dados pré-criadas para pré-treinamento, ajuste fino, en, zh e mais cenários. Validados nos modelos de referência llama e llava.
Flexível e extensível : acomodar a maioria dos tipos de formatos de dados (por exemplo, jsonl, parquet, csv, ...) e permitir combinações flexíveis de operações. Sinta -se à vontade para implementar seus próprios OPs para processamento de dados personalizáveis.
Experiência amigável : projetado para simplificar, com documentação abrangente, guias de partida fácil e configurações de demonstração e configuração intuitiva com simples adição/remoção de operações das configurações existentes.
data_juicer no modo editável: 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 dependenciesAs opções de dependência estão listadas abaixo:
| Marcação | Descrição |
|---|---|
. ou .[mini] | Instale dependências mínimas para o conjunto de dados básico. |
.[all] | Instale todas as dependências, exceto Sandbox. |
.[sci] | Instale todas as dependências para todas as OPs. |
.[dist] | Instale dependências para processamento de dados distribuídos. (Experimental) |
.[dev] | Instale dependências para o desenvolvimento do pacote como colaboradores. |
.[tools] | Instale dependências para ferramentas dedicadas, como classificadores de qualidade. |
.[sandbox] | Instale todas as dependências para a caixa de areia. |
data_juicer usando pip : pip install py-data-juicerdata_juicer e duas ferramentas básicas (processamento e análise de dados) estão disponíveis dessa maneira. Se você deseja funções personalizáveis e completas, recomendamos que você instale data_juicer na fonte.data_juicer , recomendamos que você instale a partir da fonte.Puxe nossa imagem pré-criada do DockerHub:
docker pull datajuicer/data-juicer: < version_tag > Ou execute o seguinte comando para construir a imagem do Docker, incluindo o mais recente data-juicer com o Dockerfile fornecido:
docker build -t datajuicer/data-juicer: < version_tag > . O formato de <version_tag> é como v0.2.0 , que é o mesmo que a tag de versão de liberação.
import data_juicer as dj
print ( dj . __version__ )Antes de usar operadores relacionados ao vídeo, o FFMPEG deve ser instalado e acessível através da variável de ambiente $ PATH.
Você pode instalar o FFMPEG usando os gerentes de pacotes (por exemplo, sudo apt install ffmpeg no debian/ubuntu, instalar ffmpeg no OS X) ou visitar o link oficial do FFMPEG.
Verifique se o caminho do seu ambiente está definido corretamente executando o comando FFMPEG do terminal.
? de volta ao index
process_data.py ou da ferramenta de linha de comando de dj-process com sua configuração como argumento para processar seu conjunto de dados. # 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 Note: For some operators that involve third-party models or resources which are not stored locally on your computer, it might be slow for the first running because these ops need to download corresponding resources into a directory first. O diretório de cache de download padrão é ~/.cache/data_juicer . Altere a localização do cache definindo a variável do ambiente do shell, DATA_JUICER_CACHE_HOME para outro diretório e você também pode alterar DATA_JUICER_MODELS_CACHE ou DATA_JUICER_ASSETS_CACHE da mesma maneira:
NOTA: Ao usar operadores com modelos de terceiros, é necessário declarar o mem_required correspondente no arquivo de configuração (você pode consultar as configurações no arquivo config_all.yaml ). Durante o tempo de execução, o Data-Juicer controlará o número de processos com base na disponibilidade de memória e nos requisitos de memória dos modelos do operador para obter melhor eficiência de processamento de dados. Ao executar com o ambiente CUDA, se o Memem_Required para um operador não for declarado corretamente, isso poderá levar a um CUDA fora da questão da memória.
# 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 " Fornecemos várias interfaces simples para os usuários escolherem da seguinte maneira.
#... 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 )Agora, implementamos o processamento de dados distribuído de várias máquinas com base no raio. Os demos correspondentes podem ser executados usando os seguintes 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 exemplo, ray_video_deduplicator e ray_document_deduplicator . Esses operadores também confiam em uma instância do Redis. Portanto, além de iniciar o cluster de raio, você também precisa configurar sua instância Redis com antecedência e fornecer host e port da sua instância Redis na configuração.Os usuários também podem optar por não usar o Ray e, em vez disso, dividir o conjunto de dados para ser executado em um cluster com o SLURM. Nesse caso, use o conjunto de dados padrão sem raio. Aliyun PAI-DLC suporta a estrutura de Ray, a estrutura do SLURM, etc. Os usuários podem criar diretamente trabalhos de raio e trabalhos de slurm no cluster DLC.
analyze_data.py ou dj-analyze Line com sua configuração como o argumento para analisar seu conjunto de dados. # 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 seu conjunto de dados no seu navegador.streamlit run app.pyconfig_all.yaml , que inclui todos os OPs e argumentos padrão. Você só precisa remover as operações que não usará e refinar alguns argumentos de operações.config_all.yaml , documentos OP e guia de construção avançado para desenvolvedores.python xxx.py --config configs/demo/process.yaml --language_id_score_filter.lang=enO formato e a definição básicos de configuração são mostrados abaixo.
O Data Sandbox Laboratory (DJ-SandBox) fornece aos usuários as melhores práticas para produzir contínuo receitas de dados. Possui baixa sobrecarga, portabilidade e orientação.
O Sandbox é executado usando os seguintes comandos por padrão e, para obter mais informações e detalhes, consulte a documentação do Sandbox.
python tools/sandbox_starter.py --config configs/demo/sandbox/sandbox.yamltools/preprocess para você pré -processar esses dados.data-juicer , poderá executar os comandos ou ferramentas mencionadas acima usando esta imagem do 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? de volta ao index
Data-Juicer é liberado no Apache License 2.0.
Estamos em um campo em rápido desenvolvimento e recebemos contribuições muito bem de novos recursos, correções de bugs e documentações melhores. Consulte o guia de instruções para desenvolvedores.
Se você tiver alguma dúvida, junte -se aos nossos grupos de discussão.
O Data-Juicer é usado em vários produtos LLM e iniciativas de pesquisa, incluindo LLMs industriais de Tongyi, da Alibaba Cloud, como Dianjin para análise financeira, e Zhiwen para o Reading Assistant, bem como a plataforma do Alibaba Cloud para a IA (PAI). Estamos ansiosos para mais sua experiência, sugestões e discussões para colaboração!
Data-Juicer agradece e refere-se a vários projetos comunitários, como Huggingface-Datasets, Bloom, Redpajama, Pilha, Alpaca-Cot, Megatron-LM, DeepSpeed, Arrow, Ray, Beam, LM-Harness, Helm, ....
Se você achar nosso trabalho útil para sua pesquisa ou desenvolvimento, cite o artigo a seguir.
@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: um conjunto abrangente de co-desenvolvimento de modelos de dados multimodais
A sinergia entre dados e modelos de linguagem grande multimodal: uma pesquisa da perspectiva de co-desenvolvimento
IMGDIFF: Síntese de dados contrastivos para Vision Language Models
A mistura de dados tornada eficiente: uma lei de escala bivariada para o modelo de idioma pré -treinamento
? de volta ao index