A estrutura de código aberto acelerada por GPU para curadoria eficiente de dados de modelos de IA generativa ?
NeMo Curator é uma biblioteca Python projetada especificamente para preparação e curadoria rápida e escalonável de conjuntos de dados para casos de uso de IA generativa, como pré-treinamento de modelo de linguagem básica, treinamento de modelo de texto para imagem, pré-treinamento adaptativo de domínio (DAPT), ajuste fino supervisionado (SFT ) e ajuste fino com eficiência de parâmetro (PEFT). Ele acelera bastante a curadoria de dados aproveitando GPUs com Dask e RAPIDS, resultando em economia significativa de tempo. A biblioteca fornece uma interface modular e personalizável, simplificando a expansão do pipeline e acelerando a convergência do modelo por meio da preparação de tokens de alta qualidade.
NeMo Curator fornece uma coleção de módulos escalonáveis de curadoria de dados para curadoria de texto e imagem.
Todos os nossos pipelines de texto têm excelente suporte multilíngue.
Download e extração
Implementações padrão para fontes Common Crawl, Wikipedia e ArXiv
Personalize e estenda facilmente para outras fontes
Identificação de idioma
Reformatação Unicode
Filtragem Heurística
Filtragem do Classificador
texto rápido
Modelos acelerados por GPU: classificação de domínio, qualidade e segurança
Desduplicação acelerada por GPU
Deduplicação Exata
Desduplicação difusa via hash sensível à localidade MinHash
Desduplicação Semântica
Descontaminação de tarefa downstream
Redação de informações de identificação pessoal (PII)
Incorporação de criação
Filtragem do Classificador
Classificação Estética e NSFW
Desduplicação de GPU
Semântica
Esses módulos oferecem flexibilidade e permitem reordenamentos, com apenas algumas exceções. Todos os módulos são dimensionados automaticamente para vários nós para aumentar o rendimento.
Documentação
Exemplos
Tutoriais
Postagens de blog
Curadoria de conjuntos de dados de trilhões de tokens: Apresentando o NVIDIA NeMo Data Curator
Dimensione e selecione conjuntos de dados de alta qualidade para treinamento LLM com NVIDIA NeMo Curator
Curadoria de conjuntos de dados personalizados para treinamento LLM com NVIDIA NeMo Curator
Curadoria de conjuntos de dados personalizados para ajuste fino com eficiência de parâmetros LLM com NVIDIA NeMo Curator
Simplificando o processamento de dados para pré-treinamento adaptativo de domínio com NVIDIA NeMo Curator
Esta seção explica como instalar o NeMo Curator e usar a biblioteca Python, módulos Python e scripts CLI. Também inclui uma lista de tutoriais para ajudá-lo a começar imediatamente. Por fim, esta seção explica como usar o NeMo Framework Launcher como um método alternativo de interface com o NeMo Curator.
Antes de instalar o NeMo Curator, certifique-se de que os seguintes requisitos sejam atendidos:
Pitão 3.10
Ubuntu 22.04/20.04
GPU NVIDIA (opcional)
Volta™ ou superior (capacidade de computação 7.0+)
CUDA 12 (ou superior)
Você pode obter o NeMo-Curator de 3 maneiras.
PyPi
Fonte
Contêiner de estrutura NeMo
pip instalar cython pip install --extra-index-url https://pypi.nvidia.com nemo-curator[all]
clone do git https://github.com/NVIDIA/NeMo-Curator.git pip instalar cython pip install --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
A versão mais recente do NeMo Curator vem pré-instalada no NeMo Framework Container. Se quiser o commit mais recente dentro do contêiner, você pode reinstalar o NeMo Curator usando:
pip desinstalar nemo-curador rm -r /opt/NeMo-Curador clone git https://github.com/NVIDIA/NeMo-Curator.git /opt/NeMo-Curator pip install --extra-index-url https://pypi.nvidia.com "/opt/NeMo-Curator[all]"
O NeMo Curator possui um conjunto de extras que você pode usar para instalar apenas os módulos necessários para sua carga de trabalho. Esses extras estão disponíveis para todos os métodos de instalação fornecidos.
pip install nemo-curator # Instala módulos de curadoria de texto somente CPUpip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # Instala módulos de curadoria de texto CPU + GPUpip install --extra-index -url https://pypi.nvidia.com nemo-curator[image] # Instala CPU + GPU módulos de curadoria de texto e imagempip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # Instala todos os itens acima
Você também pode instalar o NeMo Curator usando o RAPIDS Nightly Builds. Para fazer isso, você pode definir a variável de ambiente RAPIDS_NIGHTLY=1
.
# instalando a partir de pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# instalando a partir de sourceRAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[cuda12x]"
Quando a variável RAPIDS_NIGHTLY
for definida como 0 (que é o padrão), ela usará a versão estável do RAPIDS.
O snippet a seguir demonstra como criar um pequeno pipeline de curadoria de dados que faz download e faz a curadoria de um pequeno subconjunto do conjunto de dados de rastreamento comum.
# Baixe seu conjunto de dadosdataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# Construa seu pipelinecuration_pipeline = Sequential([ # Corrigir unicode Modify(UnicodeReformatter()), # Descarta registros curtos ScoreFilter(WordCountFilter(min_words=80)), # Descarta registros de baixa qualidade ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # Descarta registros das métricas de avaliação para evitar vazamento do conjunto de testes. TaskDecontamination([Winogrande(), Squad(), TriviaQA()]) ])# Execute o pipeline em seu datasetcurated_dataset = curation_pipeline(dataset)
Para começar a usar o NeMo Curator, você pode seguir os tutoriais disponíveis aqui. Esses tutoriais incluem:
tinystories
que se concentra na curadoria de dados para treinar LLMs do zero.
peft-curation
que se concentra na curadoria de dados para casos de uso de ajuste fino com eficiência de parâmetros (PEFT) LLM.
distributed_data_classification
que se concentra no uso dos classificadores de qualidade e domínio para ajudar na anotação de dados.
single_node_tutorial
que demonstra um pipeline de curadoria de dados ponta a ponta para curadoria de dados da Wikipedia em tailandês.
image-curation
que explora os módulos escalonáveis de curadoria de imagens.
A seção NeMo Curator do Guia do usuário do NeMo Framework fornece informações detalhadas sobre como os módulos Python funcionam. O diretório de exemplos no repositório GitHub fornece scripts que mostram esses módulos.
NeMo Curator também oferece scripts CLI para você usar. Os scripts em nemo_curator/scripts
são mapeados de perto para os módulos Python fornecidos. Consulte o Guia do usuário do NeMo Framework para obter mais informações sobre os módulos e scripts Python.
Como método alternativo de interface com o NeMo Curator, você pode usar o NeMo Framework Launcher. O iniciador permite configurar facilmente os parâmetros e o cluster. Ele também pode gerar automaticamente os scripts em lote Slurm que envolvem os scripts CLI necessários para executar seu pipeline.
Além disso, outros métodos estão disponíveis para executar o NeMo Curator no Slurm. Por exemplo, consulte os scripts de exemplo em examples/slurm
para obter informações sobre como executar o NeMo Curator no Slurm sem o NeMo Framework Launcher.
Os módulos do NeMo Curator foram projetados principalmente para selecionar documentos de alta qualidade de instantâneos do Common Crawl de maneira escalonável. Para avaliar a qualidade dos documentos curados do Common Crawl, conduzimos uma série de experimentos de ablação. Nesses experimentos, treinamos um modelo estilo GPT de 357 milhões de parâmetros usando conjuntos de dados gerados em vários estágios de nosso pipeline de curadoria de dados, que foi implementado no NeMo Curator.
A figura a seguir mostra que o uso de diferentes módulos de curadoria de dados implementados no NeMo Curator levou a um desempenho aprimorado da tarefa downstream do modelo zero-shot.
Em termos de escalabilidade e desempenho de computação, o uso da combinação de RAPIDS e desduplicação difusa Dask nos permitiu desduplicar o conjunto de dados Red Pyjama de 1,1 trilhão de tokens em 1,8 horas com 64 GPUs NVIDIA A100 Tensor Core.
Além disso, usando os módulos baseados em CPU, a tabela a seguir mostra o tempo necessário e a redução resultante do tamanho dos dados para cada etapa de processamento Instantâneo de rastreamento comum de novembro/dezembro de 2020 usando 30 nós de CPU (com hardware semelhante ao c5.24xlarge
Amazon AWS C5 exemplo).
Conjunto de dados | Download e extração de texto | Limpeza de texto | Filtragem de qualidade | |||
---|---|---|---|---|---|---|
Tempo | Tamanho de saída | Tempo | Tamanho de saída | Tempo | Tamanho de saída | |
Rastreamento comum 2020-50 | 36 horas | 2,8TB | 1 hora | 2,8TB | 0,2 horas | 0,52TB |
Aceitamos contribuições da comunidade! Consulte CONTRIBUTING.md para o processo.