Google Collaboratory Overview

John Theo
johntheology
Published in
4 min readMar 22, 2018

Nessa postagem quero falar sobre essa nova funcionalidade do Google principalmente focado aos pesquisadores, mas antes preciso situar quem está chegando no navio agora. Se você já conhece sobre Jupyter, Eve e outras ferramentas de computação interativa, pode pular essa primeira sessão.

Um apanhado do que vinha sendo usado

Quem trabalha com pesquisa(principalmente na área de computação) sabe como às vezes é custoso o processo de absorção de conhecimento:

  1. Leitura do paper/tese
  2. Identificação se os resultados são reproduzíveis, com repositório de código aberto e bem documentado
  3. Execução do projeto e fácil manipulação para testes

A partir dessa necessidade, ferramentas de computação interativa surgiram de modo focar no ser humano e não no computador. Ferramentas com Jupyter e Eve, permite uma mescla de documentação e código, tornando assim a leitura de um projeto mais interativa.

No jupyter, por exemplo, cria-se documentos chamados notebooks que são essas entidades de código interativas. São arquivos no formato .ipynb(referente a iPython Notebook) que são carregados em um servidor local ou na nuvem para que você possa codificar e até mesmo interagir com eles.

Cada notebook é composto por células(cells) que basicamente podem ser código ou texto.

Quando texto, ela é formatada utilizando a linguagem Markdown.
Quando código, ela pode receber HTML, comandos shell e as próprias diretivas da linguagem que se está utilizando no Kernel do notebook. Kernel é o interpretador escolhido para o notebook. Não entrarei em detalhes para não estender demais esse post.

Exemplo de integração de texto com código. É fácil perceber que isso poderia ser usado para um paper ou mesmo um relátorio
Exemplo de interatividade que pode-se obter dentro de um notebook utilizando widgets fornecidos pelo Jupyter.
Outro exemplo de interatividade com o cálculo de tempo de execução

Existem diversas de outras funcionalidades como exportar para uma página web(HTML), gerar um pdf, gerar apresentação de slides, criar uma prova ou um teste para ser respondido, etc. Pretendo explicar isso em um outro post focado nessas funcionalidades.

Nem tudo são flores…

Atualmente compartilhar Notebooks Jupyter não é uma tarefa tão simples.

Decidi no meu mestrado utilizar Python para as implementações e o vislumbre com o Jupyter foi inegável. Porém ao comentar com alguns professores, esses desconheciam o que eu estava falando, outros faziam cara feia e ainda perguntavam: "Mas por que Python"?

Sendo assim, para os professores que mostravam interesse eu tinha as seguintes opções:

  1. Passar um tutorial de como instalar o Jupyter e abrir os notebooks.
  2. Criar uma EC2 na Amazon e subir uma instância do Jupyter lá e passar o link para eles usarem o notebook.
  3. Usar o BinderHub, que era uma espécie de instancia Docker com Jupyter que lia a partir de um repositorio GitHub. Mas essa alternativa se mostrou falha uma vez que não funcionava sempre(problemas com servidor deles, mas agora eles tem um passo a passo para montar num servidor cloud próprio). Esse projeto é derivado/irmão do JupyterHub
  4. Para aqueles que só queriam ver as anotações e o código(sem necessidade de rodar o mesmo) eu passava o link do repositório GitHub, que na versão web provê uma visualização de notebooks!(muito útil). Ou exportava em pdf e enviava.

Logo, se o professor ou a pessoa que eu compartilhasse o notebook quisesse rodar os snippets de código, precisaria de um trabalho de configuração de um cliente Jupyter de um dos lados. O que não era nada prático.

Se a pessoa quisesse comentar ou sugerir alguma modificação, iria fazer isso via email e eu atuaria na correção. O que é nada produtivo.

Google Collaboratory

Eis que o Google, adota para si um projeto dos idos de 2014 chamado CoLaboratory. A princípio o uso do então criado Google Collaboratory era apenas interno para os pesquisadores do Google Brain, mas no segundo semestre de 2017 eles "abrem o coração" e disponibilizam a ferramenta para a comunidade.

Uma máquina virtual com GPU disponível para processamento.

É isso mesmo que você leu. O Google disponibiliza para qualquer um que tenha uma conta Google(acesso ao google drive) uma GPU Tesla K80 para usar Keras, Tensorflow e PyTorch(que já vem pré-instalado).

Isso vem dar um novo ar para o estudo e pesquisa em Aprendizado de Máquina pois qualquer um pode testar modelos que dependem de capacidade computacional de GPU.

Mais ainda, seu modelo/pesquisa/projeto pode ser compartilhado facilmente com qualquer um e essa pessoa pode comentar o seu código(notebook), tornando assim a experiência de pesquisa mais colaborativa.

Para criar o seu primeiro projeto com Google Collaboratory, basta acessar https://colab.research.google.com e pronto! Lá você encontra alguns exemplos básicos de como utilizar o notebook, acessar GPU, acessar arquivos do Google Drive, etc.

Abaixo coloco as vantagens e desvantagens(que não são bem desvantagens) sobre o Google Collaboratory.

Futuramente irei escrever um tutorial com as principais funcionalidades do Google Collaboratory e como você pode usá-lo no dia-a-dia.

Espero que tenha sido proveitosa essa postagem. Fico aberto a sugestões e dicas.

--

--

John Theo
johntheology

Engenheiro da Computação, musico, esposo, pai. Buscando acertar os detalhes da vida com muita arte.