Ciência de dados alimentada por GPU (NÃO Deep Learning) com RAPIDS

Nó Fonte: 997659

Ciência de dados alimentada por GPU (NÃO Deep Learning) com RAPIDS

Como utilizar o poder de sua GPU para ciência de dados regular e aprendizado de máquina, mesmo se você não fizer muito trabalho de aprendizado profundo.



Imagem de cabeçalho
Fonte da imagemP (Imagem grátis)

Você está procurando por “ciência de dados movida a GPU”?

 
 
Imagine-se um cientista de dados, um analista de negócios ou um pesquisador acadêmico em Física / Economia / Neurociências ...

Você faz muito organização de dados, limpeza, testes estatísticos, visualizações em uma base regular. Você também mexe muito com modelos lineares encaixar dados e, ocasionalmente, aventurar-se em Floresta Aleatória. Você também gosta agrupamento grandes conjuntos de dados. Parece familiar o suficiente?

No entanto, dada a natureza dos conjuntos de dados com os quais você trabalha (principalmente tabulares e estruturados), você não se aventura muito no aprendizado profundo. Você prefere colocar todos os recursos de hardware de que dispõe nas coisas que realmente faz no dia a dia, do que gastar em algum modelo sofisticado de aprendizado profundo. De novo, familiarizado?

Você ouve sobre o incrível poder e a habilidade de computação extremamente rápida de Sistemas GPU como os da NVidia para todos os tipos de aplicações industriais e científicas.

E você continua pensando - “O que há para mim? Como posso tirar proveito dessas peças poderosas de semicondutor em meu fluxo de trabalho específico? "

Você está pesquisando ciência de dados movida a GPU.

Uma das melhores (e mais rápidas) opções para avaliar esta abordagem é usar a combinação de Nuvem de Saturno + RÁPIDOSDeixe-me explicar em detalhes ...

As GPUs no folclore AI / ML têm sido principalmente para o aprendizado profundo

 
 
Embora o uso de GPUs e computação distribuída seja amplamente discutido nos círculos acadêmicos e de negócios para as principais tarefas de AI / ML (por exemplo, executar um Rede neural de 1000 camadas de profundidade para classificação de imagem ou BERT de bilhões de parâmetros modelo de síntese de voz), eles encontraram menos cobertura quando se trata de sua utilidade para tarefas regulares de ciência de dados e engenharia de dados.

Não obstante, tarefas relacionadas a dados são o precursor essencial para qualquer carga de trabalho de ML em um pipeline de IA e muitas vezes constituem a maior parte do tempo e esforço intelectual gasto por um cientista de dados ou mesmo um engenheiro de ML. Recentemente, o famoso pioneiro da IA
Andrew Ng falou sobre passando de uma abordagem centrada em modelo para uma abordagem centrada em dados para IA desenvolvimento de ferramentas. Isso significa gastar muito mais tempo com os dados brutos e pré-processá-los antes que uma carga de trabalho de IA real seja executada em seu pipeline.

Portanto, a questão importante é: Podemos aproveitar o poder da GPU e da computação distribuída para trabalhos regulares de processamento de dados?



Fonte da imagem: O autor criou uma colagem de imagens gratuitas (P)

 

Embora o uso de GPUs e computação distribuída seja amplamente discutido nos círculos acadêmicos e empresariais para as principais tarefas de AI / ML, eles encontraram menos cobertura em sua utilidade para tarefas regulares de ciência de dados e engenharia de dados.

O fantástico ecossistema RAPIDS

 
 
Conjunto RAPIDS de bibliotecas de software e APIs dar a você - um cientista de dados regular (e não necessariamente um praticante de aprendizado profundo) - a opção e flexibilidade para executar ciência de dados de ponta a ponta e pipelines analíticos inteiramente em GPUs.

Este projeto de código aberto foi incubado pela Nvidia através da construção de ferramentas para aproveitar as vantagens dos primitivos CUDA. Ele se concentra especificamente em expor o paralelismo da GPU e os recursos de velocidade de memória de alta largura de banda por meio da linguagem Python compatível com a ciência de dados.

Preparação de dados comuns e tarefas de wrangling são altamente valorizados no ecossistema RAPIDS. Também empresta uma quantidade significativa de suporte para implantação de vários nós, multi-GPU e processamento distribuído. Sempre que possível, ele se integra com outras bibliotecas que tornam fora da memória (isto é, o tamanho do conjunto de dados maior do que a RAM de um computador individual) o processamento de dados é fácil e acessível para cientistas de dados individuais.



Fonte da imagem: Colagem criada pelo autor

 

Os três componentes mais proeminentes (e Pythônicos) - que são de interesse particular para cientistas de dados comuns - são,

  • Copo: Uma biblioteca de array com CUDA que se parece com o Numpy, enquanto usa várias bibliotecas CUDA, por exemplo, cuBLAS, cuDNN, cuRand, cuSolver, cuSPARSE, cuFFT e NCCL para aproveitar ao máximo a arquitetura GPU subjacente.
  • CuDF: Esta é uma biblioteca GPU DataFrame para carregar, agregar, unir, filtrar e manipular dados com um API do tipo pandas. Engenheiros e cientistas de dados podem usá-lo para acelerar facilmente seus fluxos de tarefas usando GPUs poderosas, sem nunca aprender os detalhes básicos da programação CUDA.
  • CuML: Esta biblioteca permite que cientistas de dados, analistas e pesquisadores executem algoritmos de ML tradicionais / clássicos e tarefas de processamento associadas, aproveitando totalmente o poder de uma GPU. Naturalmente, isso é usado principalmente com conjuntos de dados tabulares. Pense no Scikit-learn e no que ele poderia fazer com todas aquelas centenas de Cuda e Tensor Cores em sua placa de GPU! Por sinal, na maioria dos casos, a API Python da cuML corresponde à do Scikit-learn. Além disso, tenta oferecer suporte multi-GPU e multi-nó-GPU by integrando-se graciosamente com Painel, sempre que possível, para aproveitar as vantagens do verdadeiro processamento distribuído / computação em cluster.


Podemos aproveitar o poder da GPU e da computação distribuída para trabalhos regulares de processamento de dados e aprendizado de máquina com dados estruturados?

É diferente de usar o Apache Spark?

 
 
Você pode perguntar como esse processamento de dados com GPU é diferente do que usar o Apache Spark. Na verdade, existem algumas diferenças sutis e, apenas recentemente, com o Spark 3.0, as GPUs são um recurso comum para cargas de trabalho do Spark.

Acelerando o Apache Spark 3.0 com GPUs e RAPIDS | NVIDIA Developer Blog
 

Não temos tempo ou espaço para discutir as diferenças exclusivas dessa abordagem de ciência de dados baseada em GPU em relação às tarefas de Big Data que são particularmente adequadas para o Apache Spark. Mas pergunte a si mesmo essas perguntas e você provavelmente entenderá a diferença sutil,

"Como um cientista de dados que modela transações econômicas e gerenciamento de portfólio, quero resolver um sistema linear de equações com 100,000 variáveis. Devo usar uma biblioteca de álgebra linear pura ou Apache Spark? "

"Como parte de um pipeline de compressão de imagem, quero usar Decomposição de valor singular em uma grande matriz de milhões de entradas. O Apache Spark é uma boa escolha para isso? "

O tamanho do grande problema nem sempre significa ecossistema Apache Spark ou Hadoop. Big Computation não é equivalente a Big Data. Como um cientista de dados completo, você precisa saber ambos para lidar com todos os tipos de problemas.

RAPIDS concentra-se especificamente em expondo paralelismo de GPU e recursos de velocidade de memória de alta largura de banda por meio de APIs Python.

O que estamos mostrando neste artigo?

 
 

Exemplos nítidos de CuPy e CuML apenas

 
Portanto, neste artigo, iremos apenas demonstrar exemplos nítidos de CuPy e CuML,

  • como eles se comparam (em velocidade) com as funções / estimadores Numpy e Scikit-learn correspondentes
  • como os dados / tamanho do problema são importantes nesta comparação de velocidade.

Exemplos de CuDF em um artigo posterior

 
Embora os exemplos de engenharia de dados semelhantes ao processamento de dados do Pandas sejam de grande interesse para muitos cientistas de dados, cobriremos os exemplos de CuDF em um artigo posterior.

Qual é a minha plataforma de hardware baseada em GPU?

 
Estou usando um Nuvem de Saturno Instância de GPU Tesla T4, pois leva literalmente 5 minutos de trabalho para girar um recursos de computação completos e carregados (com bibliotecas DS e AI) na nuvem por todo o meu trabalho de ciência de dados com o serviço deles. Contanto que eu não exceda 10 horas de uso do Jupyter Notebook por mês, é grátis! Se você quiser ler mais sobre o serviço deles,

Lançado o Saturn Cloud Hosted: GPU Data Science para todos!

A computação GPU é o futuro da ciência de dados. Pacotes como RAPIDS, TensorFlow e PyTorch permitem a velocidade da luz…

Além de ter o GPU Tesla T4, é uma máquina Intel (R) Xeon (R) Platinum 4CL de 8259 núcleos a 2.50 GHz com 16 GB de RAM e disco permanente de 10 GB. Portanto, esta é uma configuração bastante normal do ponto de vista da configuração do hardware (disco rígido limitado por causa da camada gratuita), ou seja, qualquer cientista de dados pode ter esse tipo de hardware em sua posse. O único fator de diferenciação é a presença da GPU e a configuração de todas as bibliotecas CUDA e Python de maneira adequada para que o pacote RAPIDS funcione sem problemas.


O tamanho do grande problema nem sempre significa ecossistema Apache Spark ou Hadoop. Big Computation não é equivalente a Big Data. Como um cientista de dados completo, você precisa saber ambos para lidar com todos os tipos de problemas.

Resolvendo um sistema linear de equações

 
Criamos sistemas lineares de equações de vários tamanhos e usamos o Numpy (e CuPy) linalg.solverotina para resolver isso com o seguinte código,



E, o código muda por uma única letra (em várias invocações) para a implementação CuPy!



Observe também como podemos criar matrizes CuPy a partir de matrizes Numpy como argumentos.

O resultado é dramático. O CuPy começa devagar ou em um ritmo semelhante ao do Numpy, mas supera-o diretamente para grandes tamanhos de problema (número de equações).



Decomposição de valor singular

 
Em seguida, abordamos o problema da decomposição de valores singulares usando uma matriz quadrada gerada aleatoriamente (extraída de uma distribuição normal) de tamanhos variados. Não repetimos o bloco de código aqui, mas apenas mostramos o resultado por questões de brevidade.



É significativo notar que o algoritmo CuPy não mostra desempenho nitidamente superior ao do algoritmo Numpy nesta classe de problema. Talvez, isso seja algo a ser levado pelos desenvolvedores do CuPy para melhorar.

Voltando ao básico: inversão de matriz

 
Por fim, voltamos ao básico e consideramos o problema fundamental da inversão da matriz (usada em quase todos os algoritmos de aprendizado de máquina). O resultado novamente mostra um ganho de desempenho fortemente favorável pelo algoritmo CuPy em relação ao pacote Numpy.



Lidando com um problema de agrupamento K-means

 
A seguir, consideramos um problema de aprendizado não supervisionado de agrupamento usando o algoritmo k-means muito familiar. Aqui, estamos comparando uma função CuML com um estimador equivalente do pacote Scikit-learn.

Apenas para referência, aqui está a comparação de API entre esses dois estimadores.



Fonte da imagemScikit-learn e Site CuML (Projetos de código aberto)

 

Aqui está o resultado para um conjunto de dados com 10 recursos / dimensões.



E aqui está o resultado de outro experimento com um conjunto de dados de 100 recursos.



Claramente, tanto o tamanho da amostra (número de linhas) quanto a dimensionalidade (número de colunas) importaram em como a aceleração baseada em GPU teve um desempenho superior.

Problema de regressão linear muito familiar

 
Quem pode ignorar um problema de regressão linear para comparação de velocidade ao lidar com conjuntos de dados tabulares? Seguindo a cadência de antes, variamos o tamanho do problema - desta vez, tanto o número de amostras quanto as dimensões simultaneamente - e comparamos o desempenho do CuML LinearRegression estimador àquele obtido do estábulo Scikit-learn.

O eixo X na figura a seguir representa o tamanho do problema - de 1,000 amostras / 50 recursos a 20,000 amostras / 1000 recursos.

Novamente, o estimador CuML tem um desempenho muito melhor conforme a complexidade do problema (tamanho da amostra e dimensionalidade) aumenta.



Resumo

 
 
Nós nos concentramos em dois dos componentes mais fundamentais do framework RAPIDS, que visa trazer o poder da GPU para as tarefas diárias de análise de dados e aprendizado de máquina, mesmo quando o cientista de dados não realiza nenhuma tarefa de aprendizado profundo.



Fonte da imagem: Feito pelo autor com imagens Pixabay gratuitas (Link-1Link-2Link-3)

 

Nós usamos um Nuvem de Saturno Instância baseada em Tesla T4 para configuração fácil, grátis e rápida e mostrou alguns recursos das bibliotecas CuPy e CuML e comparações de desempenho de algoritmos amplamente usados.

  • Nem todos os algoritmos das bibliotecas RAPIDS são muito superiores, mas a maioria é.
  • Em geral, o ganho de desempenho aumenta rapidamente conforme a complexidade do problema (tamanho da amostra e dimensionalidade) aumenta
  • Se você tiver uma GPU, sempre experimente o RAPIDS, compare e teste se você está obtendo algum desempenho e torne-o um burro de carga confiável de seu pipeline de ciência de dados.
  • A alteração do código é mínima, quase inexistente para a troca.

Deixe o poder da GPU impulsionar seu fluxo de trabalho de análise e ciência de dados.

Você pode verificar o do autor GitHub repositórios para código, idéias e recursos em aprendizado de máquina e ciência de dados. Se você é, como eu, apaixonado por IA / aprendizado de máquina / ciência de dados, sinta-se à vontade para me adicione no LinkedIn or Siga me no twitter.

Graças a Mel.

 
Óptimo estado. Original. Republicado com permissão.

Relacionado:

Fonte: https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

Carimbo de hora:

Mais de KDnuggetsGenericName