Dask

O Dask é uma biblioteca flexível de código aberto para computação paralela e distribuída em Python.

O que é Dask?

O Dask é uma biblioteca de código aberto projetada para fornecer paralelismo ao pacote Python existente. O Dask oferece integrações com bibliotecas Python, como NumPy Arrays, Pandas DataFrames e scikit-learn para permitir a execução paralela em vários núcleos, processadores e computadores,  sem precisar aprender novas bibliotecas ou linguagens.

O Dask é composto por duas partes:

  • uma API de coleções para listas paralelas, arrays e DataFrames para dimensionar nativamente NumPy, Pandas e scikit-learn para execução em ambientes distribuídos ou maiores que a memória.  As coleções do Dask são coleções paralelas da biblioteca subjacente (por exemplo, um array do Dask consiste em arrays do Numpy) e são executadas no agendador de tarefas.
  • um agendador de tarefas para a criação de gráficos de tarefas, além de tarefas de coordenação, agendamento e monitoramento otimizadas para cargas de trabalho interativas em núcleos e máquinas de CPU.

Um agendador de tarefas para criar gráficos de tarefas.

As três coleções paralelas do Dask (chamadas DataFrames, Bags e Arrays) podem usar automaticamente os dados particionados entre RAM e disco, bem como distribuídos em vários nós em um cluster, dependendo da disponibilidade dos recursos. Para problemas paralelizáveis, mas que não se encaixam bem em abstrações de alto nível, como Dask Arrays ou DataFrames, há uma função "atrasada" que usa decoradores Python para modificar funções de modo que elas funcionem lentamente. Isso significa que a execução é atrasada, e a função e seus argumentos são colocados em um gráfico de tarefas.

O agendador de tarefas do Dask  pode ser dimensionável para clusters de mil nós, e seus algoritmos foram testados em alguns dos maiores supercomputadores do mundo. Sua interface de agendamento de tarefas pode ser personalizada para trabalhos específicos. O Dask oferece baixa sobrecarga, baixa latência e serialização mínima necessária para velocidade.

Em um cenário distribuído, um agendador coordena muitos trabalhadores e transfere a computação para o trabalhador correto, mantendo uma conversa contínua e sem bloqueio. Vários usuários podem compartilhar o mesmo sistema. Essa abordagem funciona com o sistema de arquivos Hadoop HDFS, bem como armazenamentos de objetos no cloud, como o armazenamento S3 da Amazon.

O agendador de máquina única é otimizado para uso maior que a memória e divide as tarefas em vários threads e processadores. Ele usa uma abordagem de baixa sobrecarga que consome cerca de 50 microssegundos por tarefa.

Por que o Dask?

A linguagem de programação de alto nível fácil de usar e as bibliotecas python como NumPy, Pandas e scikit-learn foram adotadas significativamente por cientistas de dados.

Desenvolvidas antes da popularização dos casos de uso de Big Data, essas bibliotecas não tinham uma solução forte para o paralelismo. O Python foi a escolha ideal para a computação de núcleo único, mas os usuários foram forçados a encontrar outras soluções para paralelismo de vários núcleos ou várias máquinas. Isso causou uma interrupção na experiência do usuário e frustração.

Essa necessidade crescente de dimensionar cargas de trabalho em Python levou ao crescimento natural do Dask nos últimos cinco anos. O Dask é uma maneira fácil de instalar e provisionar rapidamente a análise de dados em Python, que não exige que os desenvolvedores atualizem sua infraestrutura de hardware ou mudem para outra linguagem de programação. A sintaxe usada para iniciar tarefas do Dask é a mesma usada para outras operações em Python, por isso ela pode ser integrada com pouco retrabalho de código.

Ciência de dados escalável do Dask.

Também popular entre os desenvolvedores da Web, o Python tem um pacote de redes robusto que o Dask usa para criar um sistema de computação distribuída flexível e com desempenho capaz de dimensionar uma grande variedade de cargas de trabalho. A flexibilidade do Dask o ajuda a se destacar em relação a outras soluções de Big Data, como Hadoop ou Apache Spark, e seu suporte ao código nativo torna especialmente fácil trabalhar com usuários de Python e desenvolvedores de C/C++/CUDA.

O Dask foi rapidamente adotado pela comunidade de desenvolvedores Python e cresceu com a popularidade de Numpy e Pandas, que fornecem extensões valiosas para Python para lidar com cálculos matemáticos e análises especiais.

O Dask é muito melhor do que o Pandas e funciona especialmente bem em tarefas que são facilmente paralelizadas, como a classificação de dados em milhares de planilhas. O acelerador pode carregar centenas de DataFrames do Pandas na memória e coordená-los com uma única abstração.

Hoje, o Dask é gerenciado por uma comunidade de desenvolvedores que abrange dezenas de instituições e projetos PyData, como Pandas, Jupyter e Scikit-Learn. A integração do Dask com essas ferramentas populares levou à rápida adoção, com cerca de 20% de adoção entre os desenvolvedores que precisam de ferramentas de Big Data Pythonic.

Integrações do Dask com essas ferramentas populares.

Por que o Dask é Melhor com GPUs

A CPU é composta por apenas alguns núcleos com muita memória de cache que podem lidar com alguns threads de software por vez. Por outro lado, uma GPU é composta por centenas de núcleos que podem lidar com milhares de threads simultaneamente.

As GPUs oferecem a tecnologia da computação paralela, antes tão pouco conhecida.

Dask + NVIDIA: Impulsionando Análises Aceleradas Acessíveis

A NVIDIA entende o poder que as GPUs oferecem para a análise de dados. É por isso que a NVIDIA tem se esforçado para capacitar profissionais de ciência de dados, machine learning e inteligência artificial para aproveitar ao máximo seus dados. Vendo a potência e a acessibilidade do Dask, a NVIDIA começou a usá-lo no projeto RAPIDS com o objetivo de dimensionar horizontalmente cargas de trabalho de análise de dados aceleradas para várias GPUs e sistemas baseados em GPU.

Machine learning e deep learning em GPUs.

Devido à interface Python acessível e à versatilidade além da ciência de dados, o Dask cresceu em outros projetos em toda a NVIDIA, tornando-se uma escolha natural em novas aplicações que vão desde a análise do JSON até o gerenciamento de workflows de deep learning de ponta a ponta. Veja alguns dos muitos projetos e colaborações em andamento da NVIDIA usando o Dask:

RAPIDS

O RAPIDS é um conjunto de APIs e bibliotecas de software de código aberto para executar pipelines de ciência de dados inteiramente em GPUs, geralmente reduzindo o tempo de treinamento de dias para minutos. Desenvolvido com base no NVIDIA® CUDA-X AI™, o RAPIDS une anos de desenvolvimento em gráficos, machine learning, computação de alto desempenho (HPC - High-Performance Computing) e muito mais.

NVIDIA RAPIDS, ciência de dados acelerada por GPU de ponta a ponta

Embora o CUDA-X seja incrivelmente poderoso, a maioria dos profissionais de análise de dados prefere experimentar, construir e treinar modelos com um conjunto de ferramentas Python, como NumPy, Pandas e Scikit-learn mencionados anteriormente. O Dask é um componente fundamental do ecossistema do RAPIDS, tornando ainda mais fácil para os profissionais de dados aproveitar a computação acelerada por uma experiência de usuário confortável baseada em Python.

NVTabular

O NVTabular é uma biblioteca de recursos e pré-processamento projetada para manipular de forma rápida e fácil terabytes de conjuntos de dados tabulares. Desenvolvido com base na biblioteca Dask-cuDF, ele fornece uma camada de abstração de alto nível, simplificando a criação de operações de ETL de alto desempenho em grande escala. O NVTabular é capaz de dimensionar para milhares de GPUs aproveitando o RAPIDS e o Dask, eliminando o gargalo de espera para que os processos de ETL sejam concluídos.

cuStreamz

Internamente na NVIDIA, estamos usando o Dask para alimentar partes de nossos produtos e operações de negócios. Usando o Streamz, o Dask e o RAPIDS, criamos o cuStreamz, uma plataforma acelerada de dados de transmissão usando Python 100% nativo. Com o cuStreamz, podemos conduzir análises em tempo real para algumas das nossas aplicações mais exigentes, como o GeForce NOW, o NVIDIA GPU Cloud e o NVIDIA Drive SIM. Embora seja um projeto novo, já vimos reduções impressionantes no custo total de propriedade em relação a outras plataformas de dados de streaming usando o cuStreamz habilitado para Dask.

Casos de Uso do Dask

A capacidade do Dask de processar centenas de terabytes de dados com eficiência torna-o uma ferramenta poderosa para adicionar paralelismo ao processamento de ML, permitir a execução mais rápida de análises grandes de conjuntos de dados multidimensionais e acelerar e dimensionar pipelines ou workflows de ciência de dados. Assim, ele pode ser usado em diversos casos de uso em HPC, serviços financeiros, cibersegurança e varejo. O Dask, por exemplo, trabalha com workflows Numpy para possibilitar a análise multidimensional de dados nas geociências, imagens de satélite, genômica, aplicações biomédicas e algoritmos de machine learning.

Com os DataFrames Pandas, o Dask pode habilitar aplicações em análise de séries temporais, inteligência empresarial e preparação de dados. O Dask-ML, que é uma biblioteca para machine learning distribuída e paralela, pode ser usado com o Scikit-Learn e o XGBoost para criar treinamentos e previsões dimensionáveis em modelos e conjuntos de dados grandes. Os desenvolvedores podem usar workflows padrão do Dask para preparar e configurar dados e, em seguida, entregar os dados ao XGBoost ou Tensorflow.

Dask + RAPIDS: Possibilitando a Inovação nas Empresas

Muitas empresas estão adotando o Dask e o RAPIDS para dimensionar algumas de suas operações mais importantes. Alguns dos maiores parceiros da NVIDIA, líderes de seus setores, estão usando o Dask e o RAPIDS para impulsionar sua análise de dados. Veja alguns exemplos interessantes recentes:

Capital One

Com a missão de "mudar o setor bancário de modo definitivo", a Capital One investiu pesado na análise de dados de grande escala para fornecer melhores produtos e serviços aos seus clientes e melhorar a eficiência operacional em toda a empresa. Com uma grande comunidade de cientistas de dados amigáveis ao Python, a Capital One usa o Dask e o RAPIDS para dimensionar e acelerar cargas de trabalho tradicionalmente difíceis de paralelizar em Python e diminuir significativamente a curva de aprendizado para análise de Big Data.

National Energy Research Scientific Computing Center

Dedicado a fornecer recursos computacionais e expertise para pesquisas científicas básicas, o NERSC é líder mundial em aceleração de descobertas científicas por computação. Parte dessa missão é tornar a supercomputação acessível aos pesquisadores para alimentar a exploração científica. Com o Dask e o RAPIDS, a incrível potência do seu mais atual supercomputador "Perlmutter" se torna facilmente acessível por pesquisadores e cientistas com experiência limitada em supercomputação. Ao usar o Dask para criar uma interface familiar, eles colocaram o poder da supercomputação nas mãos de cientistas impulsionando possíveis avanços em diferentes campos.

Laboratório Nacional de Oak Ridge

Em meio a uma pandemia global, o Laboratório Nacional de Oak Ridge está desafiando os limites da inovação ao construir um "laboratório virtual" para a descoberta de medicamentos na luta contra a COVID-19. Usando Dask, RAPIDS, BlazingSQL e GPUs NVIDIA, os pesquisadores podem usar a potência do supercomputador Summit de seus notebooks para testar habilidades de compostos de moléculas pequenas para se ligarem à protease principal SARS-CoV-2. Com um conjunto de ferramentas tão flexível, os engenheiros conseguiram colocar esse workflow personalizado em funcionamento em menos de duas semanas e ver resultados de consultas em menos de um segundo.

Walmart Labs

Gigante no varejo, o Walmart usa grandes conjuntos de dados para atender melhor seus clientes, prever as necessidades dos produtos e melhorar a eficiência interna. Contando com a análise de dados em larga escala para cumprir esses objetivos, o Walmart Labs recorreu ao Dask, XGBoost e RAPIDS para reduzir os tempos de treinamento em 100 vezes, permitindo iterações de modelos rápidas e melhorias de precisão para promover seus negócios. Com o Dask, eles abrem o poder das GPUs NVIDIA aos cientistas de dados para resolver seus problemas mais difíceis.

Dask nas Empresas: Um Mercado em Crescimento

Com o sucesso cada vez maior nas grandes instituições, mais empresas estão suprindo a necessidade de produtos e serviços Dask na empresa. Veja algumas empresas que estão atendendo a essas necessidades, sinalizando o início de um mercado em desenvolvimento:

Anaconda

Como uma grande parte do ecossistema da SciPy, o Dask começou na Anaconda Inc, onde ganhou força e amadureceu em uma comunidade maior de código aberto. À medida que a comunidade crescia e as empresas começavam a adotar o Dask, a Anaconda começou a fornecer serviços de consultoria, treinamento e suporte de código aberto para facilitar o uso empresarial. Uma grande proponente do software de código aberto, a Anaconda também emprega muitos sistemas de manutenção do Dask, oferecendo uma compreensão aprofundada do software para clientes empresariais.

Coiled

Fundada pelos administradores do Dask, como o líder do projeto do Dask e ex-funcionário da NVIDIA Matthew Rocklin, a Coiled oferece uma solução gerenciada do Dask para facilitar o uso em ambientes corporativos e no cloud, além de suporte empresarial para ajudar a otimizar a análise em Python dentro das instituições. Seu produto de implantação gerenciado publicamente hospedado fornece uma maneira robusta, mas intuitiva de usar o Dask e o RAPIDS atualmente.

Quansight

Dedicado a ajudar as empresas a gerar valor a partir de seus dados, o Quansight oferece uma variedade de serviços para impulsionar a análise de dados em todos os setores. Assim como a Anaconda, o Quansight oferece serviços de consultoria e treinamento para empresas que usam o Dask. Integrado aos ecossistemas PyData e NumFOCUS, o Quansight também oferece suporte para empresas que precisam de melhorias ou correções de bugs em software de código aberto.

Saturn Cloud

O Saturn Cloud é uma plataforma de ciência de dados e machine learning flexível o suficiente para qualquer equipe. Dimensione seu Python com o Dask gerenciado, colabore no cloud em análises e treinamento de modelos e implemente seu código. Todos usando os mesmos padrões que você está acostumado, mas com a escala do cloud. A plataforma está disponível gratuitamente e em níveis corporativos.

Por que o Dask é Importante para Equipes de Ciência de Dados

Tudo gira em torno da aceleração e da eficiência. Os desenvolvedores que trabalham em algoritmos interativos querem execução rápida para que possam mexer com entradas e variáveis. Desktops e notebooks com memória limitada podem não ter a potência necessária para executar grandes conjuntos de dados. O Dask tem uma funcionalidade pronta que torna o processamento mais eficiente mesmo em uma única CPU. Quando aplicada a um cluster, a execução de uma operação em várias CPUs e GPUs geralmente pode ser feita com um único comando que reduz o tempo de processamento em 90%. O Dask pode habilitar os grandes conjuntos de dados de treinamento que são típicos de machine learning para execução em ambientes que, de outra forma, não seriam capazes de oferecer suporte.

Com uma estrutura de baixo código, um modelo de execução de baixa sobrecarga e fácil integração com workflows de Python, Pandas e Numpy, o Dask está se tornando rapidamente parte do kit de ferramentas de todos os desenvolvedores em Python.

Próximas Etapas