O que é o Data Prep Kit?

Mão de uma pessoa apontando com uma caneta para um monitor que exibe um dashboard

Autores

Jobit Varughese

Technical Content Writer

IBM

Shalisha Witherspoon

Software Engineer

IBM Research

O que é o Data Prep Kit?

Um conjunto confiável de dados provenientes de fontes de qualidade é necessário para a produção de sistemas de inteligência artificial (IA) eficientes e para as aplicações de grandes modelos de linguagem (LLM). A preparação de dados inclui limpeza, transformação e processos sofisticados para organizar dados não estruturados brutos em um conjunto de dados utilizável. Esse processo é difícil, pois problemas de qualidade podem ficar ocultos e se tornar aparentes no final do ciclo de vida do desenvolvimento de software, levando a esforços desafiadores de depuração e atrasos no tempo geral do projeto. Dados de qualidade são essenciais para construir aplicações de LLM e IA responsáveis, pois dados mal preparados podem levar a saídas com viés ou inseguras. Existe também o risco de uma violação de privacidade se informações de identificação pessoal (IIP) forem incluídas nos dados do modelo sem o devido reconhecimento de suas ramificações. Além disso, a má preparação de dados pode levar ao desperdício de tempo e recursos. A base para o desenvolvimento de uma IA generativa (IA gen) responsável é preparar adequadamente os dados para criar um produto de forma eficiente.

Para fornecer aos desenvolvedores e especialistas em ciência de dados as ferramentas para lidar com os desafios da preparação de dados, a IBM desenvolveu o data prep kit (DPK) de código aberto. O DPK é um toolkit adequado para os profissionais prepararem arquivos de dados para aplicações baseadas em IA e fluxos de trabalho de LLM. Para atingir esse objetivo, o DPK fornece vários sistemas de "transforms" modulares em um ambiente Python. O usuário pode empregar os "transforms" como classes isoladas ou combiná-los em um pipeline de dados para limpar, transformar e organizar dados a partir de uma fonte de dados. O DPK foi desenvolvido para oferecer escalabilidade e utiliza conjuntos de dados colunares, como arquivos Parquet, e tempos de execução escaláveis, como Ray e Spark. Essa capacidade permite que a preparação de dados seja realizada em uma única máquina ou em um grande cluster, tornando o processamento de dados mais rápido. O DPK foi usado com sucesso para preparar dados para os modelos IBM® Granite, demonstrando sua eficácia em casos de uso do mundo real.

Principais características e arquitetura do DPK

O DPK é criado com três componentes arquitetônicos principais:

Acesso a dados, transformação e tempo de execução.

Acesso a dados: esse componente permite uma maneira uniforme de ler e gravar dados de vários locais de armazenamento (por exemplo, sistemas de arquivos locais, armazenamento compatível com S3). Ele oferece suporte a checkpoints, de modo que, se uma tarefa precisar ser reiniciada, apenas os arquivos que ainda não foram concluídos serão processados, economizando tempo e recursos.

Transformação: esse módulo oferece funções específicas que serão aplicadas aos dados, incluindo conversão de dados, deduplicação e detecção de informações de identificação pessoal (PII). O DPK possui uma biblioteca de transforms para desenvolvimento, oferecida como um pacote de transforms prontos. O framework também permite que um colaborador (não muito familiarizado com um framework de computação distribuída – Ray ou Spark) crie e desenvolva seus próprios transforms personalizados. Cada transform funciona como uma unidade de trabalho autônoma e configurável, pode ser combinada em fluxos de trabalho e fornece preparação de dados em escala de LLM.

Tempo de execução: o tempo de execução é o ambiente de execução específico para o trabalho de atribuição e monitoramento do transform. O DPK pode ser executado em vários tempos de execução, incluindo Python puro (com multiprocessamento), Ray e Spark. Essa capacidade oferece ao usuário a flexibilidade de escalar a preparação de dados de um único notebook para um grande cluster com milhares de nós. O tempo de execução gerencia a atribuição de trabalho aos trabalhadores. Os tempos de execução também permitem que transforms usem funções específicas, como classes compartilhadas ou armazenamentos de objetos. A arquitetura geral de tempo de execução é composta por um inicializador de transform (o ponto de entrada), um orquestrador de transform (o componente que executa o fluxo de trabalho e cria trabalhadores) e processadores de arquivos (o componente que processa cada arquivo individual). O orquestrador usará o tempo de execução para estabelecer componentes compartilhados e o acesso a dados que permitirá que ele encontre arquivos para trabalhar. Cada processador de arquivos vai ler, processar e, em seguida, gravar os resultados e metadados usando chamadas de interface de programação de aplicativos (APIs).

Automação e escalabilidade

As capacidades de automação e escalabilidade do DPK são inovadoras, capazes de acomodar vários tempos de execução como Local, Ray e Spark.

Com suas novas funcionalidades, o DPK se destaca de projetos consolidados de preparação de dados como BigCode, DataTrove e Dolma. Um grande diferencial é o número de casos de uso compatível (pré-treinamento, ajuste fino e geração aumentada de recuperação (RAG), além da dimensão dos dados que pode suportar. Ao contrário de outros toolkits compatíveis com uma única modalidade de dados, o DPK é compatível com dados de linguagem natural e dados de código. O DPK é extensível, o que significa que é fácil adicionar qualquer quantidade de módulos escaláveis.

Para automação, o DPK possui uma interface de linha de comando (CLI) e opção no-code usando Kubeflow Pipelines (KFP), uma plataforma para implementar fluxo de trabalho de aprendizado de máquina (ML) escalável no Kubernetes. Essa função amplia a audiência e permite uma aplicabilidade mais ampla a cientistas de dados e desenvolvedores de aplicações de IA.

As funcionalidades da integração do KFP são:

Escalabilidade: o KFP permite escalar grandes conjuntos de dados e fluxos de trabalho de alta complexidade devido ao Kubernetes, que é uma plataforma de computação escalável sob demanda.

Modularidade: cada fluxo de trabalho é dividido em componentes reutilizáveis, o que implementa prontamente fluxos de trabalho complexos e depuração adicional.

Reprodutibilidade: o histórico de cada execução é rastreado, o que permite a reprodução dos experimentos.

Visualização: há uma interface para monitorar as execuções do pipeline, visualizar os resultados e solucionar problemas.

A escalabilidade do DPK é comprovada por estudos experimentais. Por exemplo, o toolkit adota uma redução proporcional no tempo de execução para transforms à medida que a escala dos nós de processamento aumenta. A escalabilidade é uniforme em toda a carga de trabalho, desde a anotação de dados simples até a execução de tarefas mais complexas, como a identificação de idiomas, que acarreta custos computacionais adicionais.

Gerenciando o pré-processamento de dados para treinamento de IA com DPK

À medida que os recursos dos sistemas de IA melhoram, tornando-se mais integrados nos processos de tomada de decisão, a necessidade de estabelecer uma governança que permita uma IA ética, segura e em conformidade com as normas se torna urgente. No entanto, é importante destacar que a governança não começa com os modelos; tudo começa com os dados.

O que torna o DPK especialmente valioso é como ele contribui diretamente para os objetivos da governança de IA:

Segurança: os "transforms" do DPK, identificam e removem conteúdo tóxico ou prejudicial com a detecção de HAP (ódio, abuso e linguagem obscena).

Imparcialidade: os "transforms" do DPK removem o viés por meio da deduplicação e filtragem de dados irrelevantes ou de baixa qualidade.

Conformidade: os "transforms" do DPK deduzem e redigem informações pessoais em conformidade com regulamentos relacionados à privacidade, como o Regulamento Geral de Proteção de Dados (RGPD) e a Lei de portabilidade e responsabilidade de planos de saúde (HIPAA).

Transparência: os "transforms" do DPK adicionam hashes de documentos e pontuações de qualidade para aumentar a rastreabilidade e a auditabilidade.

Seja qual for a sua área de atuação (saúde, finanças, governo ou qualquer domínio em que a confiança seja fundamental), a DPK ajuda a criar sistemas de IA com base em dados responsáveis.

Caso de uso do mundo real: resumo de documentos jurídicos

Cenário: um órgão governamental está criando um LLM específico para ajudar a resumir documentos jurídicos. O conjunto de dados contém registros públicos, arquivos legais e documentos de políticas extraídos de várias fontes.

Desafios de governança:

  • Algumas fontes não são verificadas ou têm viés político.

  • O conjunto de dados inclui vários idiomas.

  • Possível linguagem tóxica.

  • IIP, como nomes e endereços, devem ser removidas.

  • Documentos duplicados e textos padronizados são comuns.

  • A qualidade dos documentos varia significativamente.

Solução: ao implementar uma estratégia de governança que utiliza DPK, o órgão pode garantir que o conjunto de dados seja:

  • De origem ética

  • Em conformidade com a privacidade

  • Alta qualidade e diversidade

  • Preparado para um treinamento de LLM responsável

Receita para um pipeline de governança

Se você precisar remediar os desafios apresentados no caso de uso anterior ou qualquer cenário estabelecido para mitigar o risco para a qualidade, segurança e conformidade dos dados, você precisa de um pipeline que fundamentalmente imponha políticas de governança. O DPK torna esse fluxo de trabalho possível ao fornecer uma série de transforms modulares que podem ser encadeados para limpar, filtrar e enriquecer o conjunto de dados.

Esta tabela destaca um pipeline de governança simples de seis etapas que atende aos principais requisitos da governança de IA. Cada etapa tem um risco associado ou um problema de qualidade para garantir que o conjunto de dados final seja obtido de forma ética, esteja em conformidade com a privacidade e esteja pronto para o desenvolvimento de IA responsável.

Pipeline de governança de IA

Para construir seu próprio pipeline de governança:

  1. Clone o repositório: https://github.com/data-prep-kit/data-prep-kit

  2. Instale os transforms: pip install 'data-prep-toolkit-transforms[all]'

  3. Configure seu pipeline usando KFP ou Python com dpk_transform_chain.

  4. Execute o pipeline usando CLI ou integre-o à sua plataforma de dados usando Ray ou Spark.

Transforms disponíveis do DPK

O DPK contém uma variedade de transforms pré-criados, categorizados de acordo com diferentes requisitos de preparação de dados.

Transforms de ingestão de dados: esses transforms convertem dados de um ou mais formatos em um formato padronizado. Por exemplo, arquivos de código compactados para Parquet, HTML/PDF para Parquet.

Transforms universais (código e linguagem): esses transforms podem ser usadas para dados de código e dados de linguagem natural. Por exemplo, a deduplicação exata e a deduplicação aproximada removem registros duplicados e redimensionam os arquivos para que tenham o tamanho adequado.

Transforms apenas de linguagem: esses transforms são para dados de linguagem natural. Elas incluem identificação de idioma, que identifica o idioma do texto, e o anotador ou redator de PII, que identifica e remove informações de identificação pessoal.

Transforms somente de código: são destinadas a dados que contêm apenas código. Elas incluem anotação de linguagem de programação, anotação de qualidade de código e limpeza de cabeçalhos, para identificar informações de licença e direitos autorais. O framework também contém transforms para aplicações RAG, como fragmentação de documentos e um codificador de texto que cria vetores de embedding para texto. Essas transforms são um aspecto fundamental da preparação dos dados que serão usados em um banco de dados de vetores. 

O DPK é essencial para qualquer pessoa que crie aplicações de IA, especialmente LLM. Esse toolkit é um framework limpo, escalável e padronizado que simplifica o processo complexo e, por vezes, trabalhoso de preparação de dados. Com um conjunto completo de "transforms" modulares, para apoiar desenvolvedores e cientistas de dados, é possível limpar, estruturar dados brutos e incorporar aspectos importantes da governança de IA aos seus fluxos de trabalho de dados. Isso permite que eles tenham certeza da qualidade e confiabilidade dos dados fundamentais usados para treinamento e responsabilidade em torno de estratégias de ética e privacidade. O DPK, em última análise, melhora os sistemas de IA, garantindo responsabilidade e confiabilidade para os desenvolvedores, possibilitando a inovação de modelos ao mesmo tempo em que está firmemente ancorado em um banco de dados robusto.