Autores:
(1) Sasun Hambardzumyan, Activeloop, Mountain View, CA, EUA;
(2) Abhinav Tuli, Activeloop, Mountain View, CA, EUA;
(3) Levon Ghukasyan, Activeloop, Mountain View, CA, EUA;
(4) Fariz Rahman, Activeloop, Mountain View, CA, EUA;.
(5) Hrant Topchyan, Activeloop, Mountain View, CA, EUA;
(6) David Isayan, Activeloop, Mountain View, CA, EUA;
(7) Mark McQuade, Activeloop, Mountain View, CA, EUA;
(8) Mikayel Harutyunyan, Activeloop, Mountain View, CA, EUA;
(9) Tatevik Hakobyan, Activeloop, Mountain View, CA, EUA;
(10) Ivo Stranic, Activeloop, Mountain View, CA, EUA;
(11) Davit Buniatyan, Activeloop, Mountain View, CA, EUA.
Os data lakes tradicionais fornecem infraestrutura de dados crítica para cargas de trabalho analíticas, permitindo viagens no tempo, executando consultas SQL, ingerindo dados com transações ACID e visualizando conjuntos de dados em escala de petabytes no armazenamento em nuvem. Eles permitem que as organizações destruam silos de dados, desbloqueiem a tomada de decisões baseada em dados, melhorem a eficiência operacional e reduzam custos. No entanto, à medida que aumenta o uso da aprendizagem profunda, os data lakes tradicionais não são bem projetados para aplicações como processamento de linguagem natural (PNL), processamento de áudio, visão computacional e aplicações que envolvem conjuntos de dados não tabulares. Este artigo apresenta Deep Lake, um lakehouse de código aberto para aplicações de aprendizagem profunda desenvolvidas no Activeloop[1][2]. Deep Lake mantém os benefícios de um data lake vanilla com uma diferença fundamental: ele armazena dados complexos, como imagens, vídeos, anotações, bem como dados tabulares, na forma de tensores e transmite rapidamente os dados pela rede para (um ) Tensor Query Language, (b) mecanismo de visualização no navegador ou (c) estruturas de aprendizado profundo sem sacrificar a utilização da GPU. Os conjuntos de dados armazenados em Deep Lake podem ser acessados em PyTorch [58], TensorFlow [25], JAX [31] e integrados com várias ferramentas MLOps.
PALAVRAS-CHAVE - Deep Lake, Deep Learning, Data Lake, Lakehouse, Cloud Computing, Sistemas Distribuídos
Um data lake é um repositório central que permite às organizações armazenar dados estruturados, não estruturados e semiestruturados em um só lugar. Os data lakes fornecem uma maneira melhor de gerenciar, governar e analisar dados. Além disso, eles fornecem uma maneira de quebrar silos de dados e obter insights que antes estavam ocultos em fontes de dados diferentes. Os data lakes de primeira geração tradicionalmente coletavam dados em sistemas de armazenamento distribuído, como HDFS [71] ou AWS S3 [1]. Coletas desorganizadas de dados transformaram os data lakes em "pântanos de dados", que deram origem aos data lakes de segunda geração liderados por Delta, Iceberg e Hudi [27, 15, 10]. Eles operam estritamente sobre formatos estruturados padronizados, como Parquet, ORC, Avro [79, 6, 20] e fornecem recursos como viagem no tempo, transações ACID e evolução de esquema. Os data lakes integram-se diretamente com mecanismos de consulta como Presto, Athena,
Hive e Photon [70, 12, 76, 66] para executar consultas analíticas. Além disso, eles se conectam a estruturas como Hadoop, Spark e Airflow [14, 82, 9] para manutenção de pipeline ETL. Por sua vez, a integração entre data lakes e motores de consulta com separação clara de computação e armazenamento resultou no surgimento de sistemas como Lakehouse [28] que servem como uma alternativa aos data warehouses, incluindo Snowflake, BigQuery, Redshift e Clickhouse [33, 4, 40, 2].
Na última década, o aprendizado profundo ultrapassou as técnicas tradicionais de aprendizado de máquina envolvendo dados não estruturados e complexos, como texto, imagens, vídeos e áudio [44, 47, 38, 83, 51, 30, 63, 56]. Os sistemas de aprendizagem profunda não apenas superaram as técnicas tradicionais, mas também alcançaram uma precisão sobre-humana em aplicações como detecção de câncer a partir de imagens de raios X, reconstrução anatômica de células neurais humanas, jogos, direção de carros, desdobramento de proteínas e geração de imagens. 61, 48, 72, 42, 77]. Grandes modelos de linguagem com arquiteturas baseadas em transformadores alcançaram resultados de última geração em tarefas de tradução, raciocínio, resumo e conclusão de texto [78, 36, 81, 32]. Grandes redes multimodais incorporam dados não estruturados em vetores para pesquisa intermodal [29, 60]. Além disso, eles são usados para gerar imagens fotorrealistas a partir de texto [62, 65].
Embora um dos principais contribuintes para o sucesso dos modelos de aprendizagem profunda tenha sido a disponibilidade de grandes conjuntos de dados, como CoCo (imagens de 330 mil), ImageNet (imagens de 1,2 milhões), Oscar (corpus de texto multilíngue) e LAION (imagens de 400 milhões e 5B) [49, 34, 74, 68], não possui um modelo de infraestrutura de dados bem estabelecido, semelhante às cargas de trabalho analíticas tradicionais, para suportar tal escala. Por outro lado, o Modern Data Stack (MDS) carece dos recursos necessários para implantar soluções baseadas em aprendizagem profunda de alto desempenho, então as organizações optam por desenvolver sistemas internos.
Neste artigo, apresentamos o Deep Lake, um lakehouse especializado em cargas de trabalho de aprendizagem profunda. Deep Lake mantém os principais benefícios de um
data lake tradicional com uma distinção notável: ele armazena dados complexos, como imagens, vídeos, anotações e dados tabulares, como tensores e transmite rapidamente os dados para estruturas de aprendizado profundo pela rede sem sacrificar a utilização da GPU. Além disso, fornece interoperabilidade nativa entre estruturas de aprendizagem profunda, como PyTorch, TensorFlow e JAX [58, 25, 31].
As principais contribuições técnicas deste artigo incluem:
• Formato de armazenamento tensor que armazena arrays de formato dinâmico no armazenamento de objetos;
• Streaming Dataloader que programa busca, descompactação e transformações definidas pelo usuário, otimizando o rendimento da transferência de dados para GPUs para aprendizado profundo;
• Tensor Query Language executando operações semelhantes a SQL sobre dados de array multidimensionais;
• Mecanismo de visualização no navegador que transmite dados do armazenamento de objetos e os renderiza no navegador usando WebGL.
O restante deste artigo se desenvolve da seguinte forma. Começamos considerando os desafios atuais no aprendizado profundo em dados não estruturados. A seguir, apresentamos o Tensor Storage Format (TSF) com seus principais conceitos. Além disso, discutimos os recursos e aplicações do Deep Lake dentro do ciclo de ML. A seguir, fornecemos experimentos de desempenho e discutimos os resultados. Por fim, revisamos trabalhos relacionados, listamos possíveis limitações e concluímos.
Este artigo está disponível no arxiv sob licença CC 4.0.
[1] Código fonte disponível: https://github.com/activeloopai/deeplake
[2] Documentação disponível em https://docs.deeplake.ai