Traduzido de: Running scalable Data Science on Cloud with R & Python
Por:
Introdução
A cada dia a complexidade para fazer Data Science. Isso é impulsionado por três fatores principais:
Aumento na geração de dados – Olhe ao seu redor, quantos aparelhos gerando dados você consegue ver? O laptop no qual você pode estar lendo este artigo, o seu smartphone (e os seus aplicativos), a pulseira de fitness que você pode estar usando no pulso, o carro que você dirige (em alguns casos) – estão todos gerando dados continuamente. Agora imagine algumas coisas daqui a cinco anos – sua geladeira, seu termostato, suas roupas, a caneta que você leva no bolso da camisa, até a garrafa de água, todos terão sensores emitindo dados para que analistas e bots possam analisar.
Baixo custo de armazenamento de dados – Vamos ver. Dê um palpite: Quanto custaria o armazenamento de todas as músicas já criadas? Qual seu palpite? Meu palpite é que custaria menos de 1000 dólares!
Poder computacional barato – Confira esta configuração de um laptop lançado recentemente. Um processador Xeon com um GPU Quad Core e contendo 64 GB de RAM. Esta máquina deve sair por menos de 2000 dólares e pesar cerca de 2,5 kg. Preciso dizer mais?
Assim, ainda que estejamos gerando muitos dados (você mesmo ao ler este artigo torna-se um ‘data point’), podemos armazenar e também executar cálculos e simulações sobre esses dados a baixo custo.
Por que rodar Data Science na nuvem?
Então, por que precisaríamos rodar Data Science na nuvem? Você pode questionar que, se um laptop roda a 64 GB RAM, por que ainda iríamos precisar de uma solução na nuvem? E a resposta é um grande SIM por uma série de razões. Aqui estão algumas delas:
- Necessidade de executar soluções que permitam ganhar escala: Vamos voltar alguns anos no tempo. Em 2010, entrei numa companhia de seguros multi-nacional para criar a área de Data Science. Entre várias coisas, compramos um servidor de 16 GB de RAM. Uma vez que esta era uma configuração nova, compramos mais do que pensamos que fosse necessário nos 3 a 5 anos seguintes. O que parecia ótimo no começo não escalou quando começamos a contratar mais pessoas. Não só o número de pessoas na equipe aumentou, a quantidade de dados aumentou exponencialmente. Com um servidor físico, ficamos de mãos atadas! Ou comprávamos um outro servidor, mais poderoso ou carregávamos este ao máximo (o que também o deixaria capenga). E a última coisa que você quer é que seus analistas fiquem olhando para a tela à espera de dados sendo processados! Uma máquina na nuvem pode escalar rapidamente, sem muita trabalheira. Então você pode continuar executando seus scripts e modelos enquanto o volume de dados por detrás deles continua aumentando.
- Custo: Enquanto a escalabilidade é um benefício, o custo é outro. Digamos que você precisa trabalhar em um problema uma única vez, e precisa de uma infra-estrutura computacional superior. O problema pode ser qualquer coisa – tal como extrair dados de mídia social para um evento anual que você tenha patrocinado, mas para o qual você quer obter insights em tempo real. Você realmente não vai comprar uma máquina nova para isso. Os custos são proibitivos. Solução simples, alugue uma configuração mais parruda por algumas horas ou dias e você terá uma solução para o seu problema por uma fração do custo.
- Colaboração: E se você precisar trabalhar simultaneamente junto com vários outros analistas? Você não quer que cada um crie uma cópia dos dados e codifique exclusivamente nas suas próprias máquinas.
- Compartilhamento: E se você quiser compartilhar uma parte do código em R ou Python com sua equipe? As bibliotecas usadas podem não estar lá ou podem ser de uma versão mais antiga. Como se certificar que o código pode ser transferido para uma máquina diferente?
- Amplo ecossistema para deploy de sistemas de machine learning: Alguns serviços em nuvem como AWS e Azure fornecem um ecossistema completo para coletar dados, executar modelos e implantá-los. No caso de usar uma máquina física, você precisará configurá-la sozinho.
- Construção rápida de protótipos: Às vezes, você tem idéias enquanto está andando na rua ou quando conversa com os amigos. Nesses casos, é muito mais fácil usar os serviços da nuvem. Você consegue rapidamente construir protótipos sem se preocupar com versões e escalabilidade. Depois de provar o conceito, você pode construir uma versão de produção mais tarde.
Agora que ficou mais claro a necessidade da computação em nuvem para Data Science, vejamos algumas opções para executar R e Python.
Opções para rodar Data Science na nuvem:
Amazon Web Services (AWS)
A Amazon é o rei da computação em nuvem. Ela tem a maior participação de mercado, documentação muito boa, ambiente descomplicado no qual é possível ganhar escala rapidamente. Você pode iniciar com uma máquina com R ou rstudio como mencionado neste artigo. Se for de servidor Linux, ele já virá com Python pré-instalado. Você pode instalar as bibliotecas e os módulos adicionais que precisar.
Você pode usar o machine learning da AWS, configurar uma máquina por si mesmo ou até mesmo usar o DataScienceToolBox, que fornece todos os softwares necessários. A plataforma não só oferece os serviços, mas também alguns conjuntos de dados para brincar de Big Data.
Como é a escolha mais popular, acaba tendo um ecossistema e é mais fácil (do que outras alternativas) para encontrar os recursos. Por outro lado, a Amazon é geralmente mais cara em comparação com algumas outras opções. Além disso, o serviço de machine learning não está disponível para todos os países. Então, se você não estiver atendido, você deve selecionar um servidor baseado na América do Norte ou criar sua própria máquina virtual na nuvem.
Machine Learning Azure
Se AWS é o campeão, Azure é o desafiante. A Microsoft definitivamente redobrou seus esforços para fornecer uma interface de execução ponta a ponta de fluxos de trabalho de Data Science e de machine learning. Você pode configurar o fluxo de trabalho de machine learning com o studio deles, criar notebooks JuPyTer na nuvem ou usar diretamente as APIs de machine learning.
A Microsoft fornece um e-book gratuito e um MOOC na academia virtual para te ajudar a começar.
IBM BlueMix
Enquanto a Amazon e a Microsoft têm crescido organicamente seus serviços na nuvem, a IBM tem algumas ideias diferentes. A IBM adquiriu a BlueMix e tem comercializado os seus serviços de forma agressiva. A oferta não é tão simples como a da AWS e da Azure, mas ainda pode ser usada através da criação de notebooks na nuvem.
Também será interessante ver como a comunidade de data scientists usa as APIs fornecidas pelo Watson.
Sense.io
Se tudo o que eu escrevi acima parece muito complicado, você deve verificar o Sense. Projetos Sense podem ser implantados com um clique. Eles oferecem serviços baseados em R, Python, Spark, Julia e Impala, flexibilidade para colaboração entre equipes e análise de compartilhamento. Confira este vídeo para ter uma visão melhor da oferta:
Domino Datalabs
Domino é baseada em San Francisco e oferece um ambiente seguro com o apoio de linguagens como R, Python, Julia e Matlab. A plataforma fornece controle de versão e recursos para tornar a colaboração e compartilhamento entre equipes um processo simples.
DataJoy
DataJoy se parece com uma versão simplificada do Sense e do Domino DataLab, mas seria interessante ver como ele vai se desenvolver no futuro. Por enquanto, se você deseja executar R ou Python na nuvem, você pode olhar para DataJoy também.
PythonAnywhere
Se você está desenvolvendo uma aplicação web e precisa construir o site juntamente com a aplicação de Data Science, PythonAnywhere parece ser a opção perfeita. Como o nome sugere, a opção está disponível em Python, mas fornece uma janela única para hospedagem, construção de sites e execução de Data Science.
Desafios na execução de Data Science na nuvem:
Ao mesmo tempo em que a computação em nuvem traz benefícios, existem alguns desafios também. Eu não acho que estes desafios irão freiar a utilização da nuvem no longo prazo, mas eles podem servir de obstáculos às vezes.
- Relutância em compartilhar dados com terceiros: tenho enfrentado este desafio várias vezes. Por mais que você tente explicar a algumas pessoas sobre a segurança na nuvem, há uma relutância em compartilhar dados fora da empresa. Isto surge, por vezes, de políticas internas ou de orientação jurídica, mas às vezes as razões são irracionais também. Por exemplo, poucos bancos sentem-se confortáveis em subir seus dados na nuvem para fins de análise.
- Necessidade de fazer upload/download de grandes quantidades de dados: No caso de ter grande quantidade de dados em seu data center – fazer o upload de uma vez de esses dados pode ser um desafio enorme, se a sua infra-estrutura de internet não for robusta.
Notas finais
A computação em nuvem deve continuar ganhando espaço por conta dos benefícios que oferece, e é apenas uma questão de tempo até que alguns destes serviços se tornem o padrão (se já não forem). Espero que você ache estes serviços úteis e e que te ajudem quando você precisar deles.
Veja também: