La conquista de las GPU

¿Qué es un Brand Discovery ?

2017 ha sido el año en que la gente se ha preguntado: ¿qué más usos puedo darle a una GPU? Ricardo Guerrero, Data Scientist and Machine Learning Engineer en BEEVA Labs, nos lo explica en este artículo.

Es algo conocido que el origen de las GPU son los videojuegos. Aquellos que nos hemos tirado incontables horas delante del PC con el Max Payne o el Warcraft III tenemos claro que sin una GPU potente que pudiera mover los gráficos que generaban nuestros videojuegos favoritos no íbamos a ser capaces de hacer nada.

No obstante, en los últimos tiempos estos dispositivos están teniendo muchas otras aplicaciones y aunque los videojuegos siguen siendo uno de los factores principales en el mercado de las GPU, han surgido otros campos muy importantes y que están siendo disruptivos en el sector como, por ejemplo, la Inteligencia Artificial (IA) o el Deep Learning.

Ni la IA ni el Deep Learning son algo que haya aparecido recientemente, pues estamos hablando de conceptos que ya tienen unas cuantas décadas. Lo que es rompedor son los nuevos usos que le estamos dando ahora a esas tecnologías ya conocidas.

En 2012 encontramos la semilla de esta revolución: los investigadores Alex Krizhevsky y Geoffrey Hinton marcaron un hito con su solución basada en redes neuronales entrenadas en GPU. A partir de entonces, el uso de GPU y de distintos modelos de redes neuronales ha alcanzado una popularidad que a día de hoy a nadie deja indiferente.

El potencial de las GPU en las empresas

Si mi empresa no es ni Google ni Facebook, ¿para que sirve en mi día a día una GPU?

Olvidemos la idea de clasificar millones de imágenes o de traducción de idiomas en tiempo real: muchas compañías afrontan retos más cotidianos, como son los sistemas de recomendación para vender productos o los análisis de series temporales para detectar posibles necesidades futuras o posibles anomalías, lo que permitirá responder mejor y más rápido a posibles eventualidades.

La forma de afrontar estos retos no está siempre cerrada: es necesario probar diversas hipótesis, hablar con gente de negocio para validarlas y, posteriormente, entrenar los modelos. Dependiendo del problema funcionarán mejor unos modelos u otros y deberán hacerse bastantes ajustes y volver a entrenarlos.

En este proceso no es raro que el entrenamiento de esos modelos tenga una duración de 2 horas, o incluso 7, por ejemplo, según la complejidad del problema. Esto supone un bloqueo, porque hay que esperar a que la máquina acabe de hacer sus cálculos para poder continuar con el proyecto. Pues bien, una GPU permite reducir esos tiempos de inactividad en algunos casos hasta un factor de 10.

No siempre es fácil justificar ante un responsable el desembolso de los 600, 800 o incluso 5.000 euros que pueden llegar a costar algunas GPU. En este sentido, el cloud computing es una de las apuestas clave.

En BEEVA, llevamos un tiempo explorando este campo y encontramos en el mercado del cloud computing máquinas virtuales con GPU prácticamente desde 20 céntimos de dólar, lo que hace este enfoque muy interesante para empezar con GPU de forma Lean: evaluando cómo se comporta esta tecnología con nuestro caso de uso específico.

¿Cómo empiezo a usar GPU?: soluciones en el mercado actual

En el sector de las bases de datos hay varias empresas tratando de hacerse un hueco, como son MapD, Kinetica o Graphistry. Desde el departamento de Research Lab en BEEVA hemos estado analizando distintas soluciones y una de nuestras conclusiones es que hay mucho potencial esperando a ser liberado. No obstante, es importante destacar que las GPU no son una bala de plata y no resuelven mejor todos los problemas. Pero si coincide que el caso de uso es el mismo al que están enfocadas estas herramientas se conseguirá una mejora en rendimiento bastante notable.

Desde el punto de vista del Machine Learning y especialmente el Deep Learning, el campo está mucho más asentado y existen soluciones muy robustas como Caffe2 y PyTorch (soluciones por las que apuesta Facebook Research), otras con más comunidad como Tensorflow de Google y distintos servicios cloud que dan soporte a estos desarrollos, bien sea con instancias con GPU, bien sea creando imágenes virtuales con todas las herramientas ya instaladas y configuradas. Incluso existen PaaS específicos de Deep Learning como puede ser Floydhub, que no deja de añadir funcionalidad día tras día para hacer que testear tus ideas sea algo tremendamente rápido y sencillo a un precio asequible.

Lo mejor es que para empezar a hacer pruebas nos deshagamos de las barreras de entrada y empecemos de una forma Lean: con una máquina en la nube y con una prueba de concepto para validar la tecnología. Es la mejor manera, y la más barata, de comenzar a sacarle partido a las GPU. A partir de ahí, las posibilidades son prácticamente infinitas.