![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Eu já escrevi sobre o
O data lake moderno, às vezes chamado de data lakehouse, é metade data lake e metade data warehouse baseado em Open Table Format Specification (OTF). Ambos são construídos em armazenamento de objetos moderno.
Ao mesmo tempo, pensamos profundamente sobre como as organizações podem construir uma infraestrutura de dados de IA que possa dar suporte a todas as suas necessidades de IA/ML — não apenas ao armazenamento bruto de seus conjuntos de treinamento, conjuntos de validação e conjuntos de teste. Em outras palavras, ela deve conter a computação necessária para treinar grandes modelos de linguagem, ferramentas MLOps, treinamento distribuído e muito mais. Como resultado dessa linha de pensamento, elaboramos outro artigo sobre como usar o data lake moderno
Fonte:
Ambos os artigos não mencionam fornecedores ou ferramentas específicas. Agora, quero discutir fornecedores e ferramentas necessárias para construir o data lake moderno. Nesta lista top 10, cada entrada é uma capacidade necessária para dar suporte à IA generativa.
Os data lakes corporativos são construídos em armazenamento de objetos. Não o seu armazenamento de objetos antigo, baseado em dispositivos, que atendia a casos de uso de arquivamento baratos e profundos, mas armazenamentos de objetos modernos, de alto desempenho, definidos por software e nativos do Kubernetes, os pilares da pilha GenAI moderna. Eles estão disponíveis como um serviço (AWS, GCP, Azure) ou no local ou híbridos/ambos, como MinIO. Esses data lakes precisam dar suporte a cargas de trabalho de streaming, devem ter criptografia e codificação de eliminação altamente eficientes, precisam armazenar metadados atomicamente com o objeto e dar suporte a tecnologias como computação Lambda. Considerando que essas alternativas modernas são nativas da nuvem, elas se integrarão a toda a pilha de outras tecnologias nativas da nuvem — de firewalls a observabilidade e gerenciamento de usuários e acesso — imediatamente.
O armazenamento de objetos também é a solução de armazenamento subjacente para um data warehouse baseado em OTP. Usar o armazenamento de objetos para um data warehouse pode parecer estranho, mas um data warehouse construído dessa forma representa a próxima geração de data warehouses. Isso é possível graças às especificações OTF criadas pela Netflix, Uber e Databricks, que tornam fácil empregar o armazenamento de objetos em um data warehouse.
Os OTFs — Apache Iceberg, Apache Hudi e Delta Lake — foram escritos porque não havia produtos no mercado que pudessem lidar com as necessidades de dados dos criadores. Essencialmente, o que todos eles fazem (de maneiras diferentes) é definir um data warehouse que pode ser construído sobre o armazenamento de objetos. O armazenamento de objetos fornece a combinação de capacidade escalável e alto desempenho que outras soluções de armazenamento não podem. Como essas são especificações modernas, elas têm recursos avançados que os data warehouses antigos não têm, como evolução de partição, evolução de esquema e ramificação de cópia zero.
Dois parceiros da MinIO que podem executar seu data warehouse baseado em OTF sobre a MinIO são Dremio e Starburst.
MLOps é para machine learning o que DevOps é para desenvolvimento de software tradicional. Ambos são um conjunto de práticas e princípios que visam melhorar a colaboração entre equipes de engenharia (Dev ou ML) e equipes de operações de TI (Ops). O objetivo é simplificar o ciclo de vida do desenvolvimento usando automação, do planejamento e desenvolvimento à implantação e operações. Um dos principais benefícios dessas abordagens é a melhoria contínua.
As técnicas e recursos do MLOps estão em constante evolução. Você quer uma ferramenta que seja apoiada por um grande player, garantindo que a ferramenta esteja em constante desenvolvimento e melhoria e oferecerá suporte de longo prazo. Cada uma dessas ferramentas usa MinIO sob o capô para armazenar artefatos usados durante o ciclo de vida de um modelo.
Sua estrutura de aprendizado de máquina é a biblioteca (geralmente para Python) que você usa para criar seus modelos e escrever o código que os treina. Essas bibliotecas são ricas em recursos, pois fornecem uma coleção de diferentes funções de perda, otimizadores, ferramentas de transformação de dados e camadas pré-construídas para redes neurais. O recurso mais importante que essas duas bibliotecas fornecem é um tensor. Tensores são matrizes multidimensionais que podem ser movidas para a GPU. Eles também têm diferenciação automática, que é usada durante o treinamento do modelo.
As duas estruturas de aprendizado de máquina mais populares hoje são PyTorch (do Facebook) e Tensorflow (do Google).
O treinamento de modelo distribuído é o processo de treinar simultaneamente modelos de machine learning em vários dispositivos computacionais ou nós. Essa abordagem acelera o processo de treinamento, particularmente quando grandes conjuntos de dados são necessários para treinar modelos complexos.
No treinamento de modelo distribuído, o conjunto de dados é dividido em subconjuntos menores, e cada subconjunto é processado por diferentes nós em paralelo. Esses nós podem ser máquinas individuais dentro de um cluster, processos individuais ou pods individuais dentro de um cluster Kubernetes. Eles podem ter acesso a GPUs. Cada nó processa independentemente seu subconjunto de dados e atualiza os parâmetros do modelo de acordo. As cinco bibliotecas abaixo isolam os desenvolvedores da maior parte da complexidade do treinamento distribuído. Você pode executá-los localmente se não tiver um cluster, mas precisará de um cluster para ver uma redução notável no tempo de treinamento.
Um hub de modelos não faz realmente parte da arquitetura de referência de data lake moderna, mas estou incluindo-o de qualquer maneira porque é importante para começar rapidamente com IA generativa. O Hugging Face se tornou o lugar para ir para grandes modelos de linguagem. O Hugging Face hospeda um hub de modelos onde os engenheiros podem baixar modelos pré-treinados e compartilhar modelos que eles mesmos criam. O Hugging Face também é o autor das bibliotecas Transformers e Datasets, que trabalham com grandes modelos de linguagem (LLMs) e os dados usados para treiná-los e ajustá-los.
Existem outros hubs de modelos. Todos os principais fornecedores de nuvem têm alguma maneira de carregar e compartilhar modelos, mas o Hugging Face, com sua coleção de modelos e bibliotecas, se tornou o líder nesse espaço.
Uma estrutura de aplicativo ajuda a incorporar um LLM em um aplicativo. Usar um LLM é diferente de usar uma API padrão. Muito trabalho deve ser feito para transformar uma solicitação do usuário em algo que o LLM possa entender e processar. Por exemplo, se você criar um aplicativo de bate-papo e quiser usar o Retrieval Augmented Generation (RAG), precisará tokenizar a solicitação, transformar os tokens em um vetor, integrar com um banco de dados de vetores (descrito abaixo), criar um prompt e, em seguida, chamar seu LLM. Uma estrutura de aplicativo para IA generativa permitirá que você encadeie essas ações. A estrutura de aplicativo mais amplamente usada hoje é o LangChain. Ele tem integrações com outras tecnologias, por exemplo, a biblioteca Hugging Face Transformer e a biblioteca Unstructured para processamento de documentos. Ele é rico em recursos e pode ser um pouco complicado de usar, então, listadas abaixo estão algumas alternativas para aqueles que não têm requisitos complexos e querem algo mais simples do que o LangChain.
A maioria das organizações não tem um único repositório com documentos limpos e precisos. Em vez disso, os documentos são espalhados pela organização em vários portais de equipe em muitos formatos. O primeiro passo ao se preparar para IA generativa é construir um pipeline que pegue apenas documentos que foram aprovados para uso com IA generativa e os coloque em seu banco de dados vetorial. Esta pode ser potencialmente a tarefa mais difícil de uma solução de IA generativa para grandes organizações globais.
Um pipeline de documentos deve converter os documentos em texto, dividir o documento em partes e executar o texto dividido em partes por meio de um modelo de incorporação para que sua representação vetorial possa ser salva em um banco de dados vetorial. Felizmente, algumas bibliotecas de código aberto podem fazer isso para muitos dos formatos comuns de documentos. Algumas bibliotecas estão listadas abaixo. Essas bibliotecas podem ser usadas com o LangChain para construir um pipeline completo de processamento de documentos.
Bancos de dados vetoriais facilitam a busca semântica. Entender como isso é feito requer muito conhecimento matemático e é complicado. No entanto, a busca semântica é conceitualmente fácil de entender. Digamos que você queira encontrar todos os documentos que discutam qualquer coisa relacionada à “inteligência artificial”. Para fazer isso em um banco de dados convencional, você precisaria procurar por todas as abreviações, sinônimos e termos relacionados possíveis de “inteligência artificial”. Sua consulta seria algo como isto:
SELECT snippet FROM MyCorpusTable WHERE (text like '%artificial intelligence%' OR text like '%ai%' OR text like '%machine learning%' OR text like '%ml%' OR ... and on and on ...
Não só essa busca manual de similaridade é árdua e propensa a erros, mas a busca em si é muito lenta. Um banco de dados vetorial pode receber uma solicitação como a abaixo e executar a consulta mais rapidamente e com maior precisão. A capacidade de executar consultas semânticas de forma rápida e precisa é importante se você deseja usar o Retrieval Augmented Generation.
{ Get { MyCorpusTable(nearText: {concepts: ["artificial intelligence"]}) {snippet} } }
Quatro bancos de dados de vetores populares estão listados abaixo.
É sempre uma boa ideia ter ferramentas que permitam que você controle seus dados e os visualize de diferentes maneiras. As bibliotecas Python listadas abaixo fornecem recursos de manipulação e visualização de dados. Elas podem parecer ferramentas que você só precisa para IA tradicional, mas também são úteis com IA generativa. Por exemplo, se você estiver fazendo análise de sentimentos ou detecção de emoções, então você deve verificar seus conjuntos de treinamento, validação e teste para ter certeza de que tem uma distribuição adequada em todas as suas classes.
Aí está: 10 capacidades que podem ser encontradas na arquitetura de referência de data lake moderna, juntamente com produtos e bibliotecas de fornecedores concretos para cada capacidade. Abaixo está uma tabela resumindo essas ferramentas.