¿Machine Learning en la Nube? Google Colaboratory con GPU!

Por increíble que parezca, ahora mismo tenemos disponible una cuenta gratuita para programar nuestros modelos de Machine Learning en la nube, con Python, Jupyter Notebooks de manera remota y hasta con GPU para poder aumentar nuestro poder de procesamiento…. gratis! sí sí… esto no es un “cuento del tío” ni tiene ninguna trampa!… Descubre cómo aprovecharlo en este artículo!

Machine Learning desde el Navegador

Primero lo primero. ¿Porqué voy a querer tener mi código en la nube? Pues bien, lo normal (¿ideal?) es que tengamos un entorno de desarrollo local en nuestro propio ordenador, un entorno de pruebas en algún servidor, staging y producción. Pero… ¿qué pasa si aún no tenemos instalado el ambiente?, o tenemos conflictos con algún archivo/librería, versión de Python… ó por lo que sea no tenemos espacio en disco… ó hasta si nos va muy lento y no disponemos en -el corto plazo- de mayor procesador/ram? O hasta por simple comodidad, está siempre bien tener a mano una web online, “siempre lista” en donde ya esté prácticamente todo el software que necesitamos instalado. Y ese servicio lo da Google, entre otras opciones. Lo interesante es que Google Colab ofrece varias ventajas frente a sus competidores.

La GPU…. ¿en casa o en la nube?

¿Una GPU? ¿para que quiero eso si ya tengo como 8 núcleos? La realidad es que para el procesamiento de algoritmos de Aprendizaje Automático (y para videojuegos, ejem!) la GPU resulta mucho más potente en realizar cálculos (también en paralelo) por ejemplo las multiplicaciones matriciales… esas que HACEMOS TOooooDO el tiempo al ENTRENAR nuestros modelos!!! para hacer el descenso por gradiente ó Toooodo el rato con el Backpropagation de nuestras redes neuronales… Esto supone una mejora de hasta 10x en velocidad de procesado… Algoritmos que antes tomaban días y ahora se resuelven en horas. Un avance enorme.

Si tienes una tarjeta Nvidia con GPU ya instalada, felicidades ya tienes el poder! Si no la tienes y no vas a invertir unos cuántos dólares en comprarla, puedes tener toda(*) su potencia desde la nube!

(*)NOTA: Google se reserva el poder limitar el uso de GPU si considera que estás abusando ó utilizando en demasía ese recurso ó para fines indebidos (por ej. minería de bitcoins)

Bienvenidos a Google Colaboratory

¿Qué es Google Colab?

Google Colab es un servicio en la nube, que nos provee de una Jupyter Notebook a la que podemos acceder con un navegador web sin importar si “en casa” usamos Windows, Linux o Mac. Tiene como grandes ventajas

  • Posibilidad de activar una GPU
  • Podemos compartir el código fácilmente
  • Está basado en jupyter notebook y nos resultará un entorno ya conocido
  • Podemos crear libros en Python 2 ó en 3
  • Tiene preinstaladas las librerías comunes usadas en datascience y la posibilidad de instalar otras que necesitemos
  • Al enlazar con nuestra cuenta de Google Drive, podemos leer desde ahí archivos csv de entrada ó guardar imágenes de salida, etc.

¿Como se usa GoogleColab?

Primero que nada entramos y logueamos con nuestra cuenta de Google en Colaboratory. Ahora ya podemos:

  • Crear una nueva notebook:
    • Vamos a “Archivo -> crear nuevo cuaderno en Python 3”
  • y habilitar GPU:
    • Vamos a “Entorno de Ejecución -> Cambiar tipo de entorno de ejecución” y elegimos “Acelerador por Hardware” GPU
seleccionamos el uso de gnu en google colaboratory

Enlazar con Google Drive

Una ventaja de enlazar nuestra cuenta con Drive, es porque nos facilita poder subir o descargar archivos. Para subir un archivo seleccionamos “Archivos” del panel izquierdo y damos al botón “subir” como se muestra en la imagen:

Pero si quieres poder usar cualquier archivo, por ej. csv que tengas en tu unidad de drive, deberas ejecutar en una celda:

Te pedirá que hagas click a un enlace y escribas un código que te dará cuando autorices la app. Cuando vuelvas y hagas actualizar en el tab de archivos veras tu unidad montada y lista para usar !!

Ejecutar una jupyter notebook de Github

Vamos a abrir una Jupyter Notebook que contiene el ejercicio explicado en el artículo de Convolutional Neural Networks: Clasificar 70.000 imágenes deportivas. Para ello, en el cuadro de “Abrir cuaderno”:

  1. seleccionamos GITHUB,
  2. copiamos la dirección del repositorio, en nuestro caso https://github.com/jbagnato/machine-learning/
  3. y le damos a la lupa de buscar.
  4. Nos aparecerá el listado con los archivos del repo.
  5. Y de allí seleccionamos el cuaderno llamado Ejercicio_CNN.ipynb

Veremos que tenemos el mismo Notebook pero en Google Colab 🙂

Descargar un recurso al cuaderno

CASI TODO LISTO… pero….. aún nos queda algo antes de poder ejecutar. En este ejercicio, necesitamos tener las 70.000 imágenes en sus directorios respectivos.

Para ello, primero descargaremos el ZIP. Creamos una celda nueva y ejecutamos:

!wget https://github.com/jbagnato/machine-learning/raw/master/sportimages.zip

y veremos que aparece nuestro archivo zip en el listado (dale a “Actualizar” si hace falta)

Descomprimir un archivo en el cuaderno

Y ahora deberemos descomprimirlo, creamos una celda y ejecutamos:

!unzip -uq ‘sportimages.zip’ -d ‘.’

RECUERDA habilitar el entorno de ejecución con GPU como vimos antes. Ahora Ya podemos ejecutar todas las celdas y veremos qué rápido ejecuta la CNN con GPU, en comparación con CPU. Pasa de tardar 4 minutos a sólo 40 segundos.

Instalar otras librerías Python con Pip

Deberemos ejecutar por ejemplo: !pip install gensim

Conclusión

Hemos visto que tenemos la opción de tener nuestro ambiente de desarrollo local pero también esta alternativa de poder programar, experimentar y trabajar en la nube. Gracias a este servicio podemos tener listo el ambiente en pocos segundos y aprovechar de las ventajas que nos ofrece, sobre todo el uso de GPU que es un recurso del que no todos disponemos. Espero les haya gustado el artículo, no dejen de escribir sus comentarios, dudas y también te animo a que escribas qué temas de Machine Learning te interesa más. Hasta la próxima!

Recuerda tener instalado tu ambiente de desarrollo Local con Anaconda, aquí te explico cómo hacerlo!

Suscripción al blog

Suscribete al blog y recibe los nuevos artículos directo en tu casilla de correos!

NOTA: muchos usuarios reportaron que el email de confirmación y/o posteriores entraron en su carpeta de SPAM. Te sugiero que revises y recomiendo que agregues nuestro remitente a tus contactos.

Otros Recursos / enlaces

Otros artículos que explican el uso de Google Colab (en inglés):

6 respuesta a “¿Machine Learning en la Nube? Google Colaboratory con GPU!”

    1. Hola Oscar, gracias por comentar tu experiencia! A mi realmente me sorprende tener al servicio la GPU, Memoria y disco… todo gratuito. Saludos!

Deja un comentario