Durante las últimas décadas del siglo XX, tanto en la industria como en la academia se han llevado a cabo numerosas aportaciones y desarrollos relacionados con el análisis de series temporales (_Time series_). Sin embargo, no es hasta estos últimos años en los que la industria se ha lanzado al análisis y cómputo masivo de este tipo de datos.
El auge del Internet de la Cosas y la necesidad de analizar y monitorizar datos en los que el tiempo no es una simple métrica más, sino el eje principal sobre el que versan otras variables es lo que ha puesto el foco de atención en el análisis de series temporales. Esta creciente demanda de cómputo debe ser acompasada por las últimas generaciones de procesadores, (_multicore y GPUs_), asà como en el desarrollo de tecnologÃas de _Big Data_ y de computación distribuida, las cuales proporcionan los medios para tratar estos grandes volúmenes de datos en tiempo real suave.
A pesar de la existencia de librerÃas que tratan time series, observamos principalmente dos limitaciones: 1) La funcionalidad que ofrecen estas librerÃas se encuentra muy fragmentada en librerÃas inconexas y 2) la mayorÃa de estas librerÃas son secuenciales, es decir, no explotan las ventajas de las nuevas arquitecturas de procesador, por lo que no son capaces de aprovechar los recursos que ofrecen los procesadores paralelos como _GPUs_ o _CPUs multicores_.
Para superar las dos limitaciones anteriores, presentamos Khiva (https://github.com/shapelets/khiva), una librerÃa open source que permite la ejecución de una larga lista de algoritmos de análisis de series temporales sobre _GPUs_. Khiva incorpora algoritmos de reducción de dimensionalidad, cálculo de distancias, normalización, regresión, regularización, extracción de caracterÃsticas, _clustering_ y búsqueda de patrones, etc. Para la implementación de todos los algoritmos hemos usado la librerÃa Arrayfire como capa de abstracción de las principales _APIs_ de _GPUs_ para cómputo, OpenCL y Nvidia CUDA. De esta forma, somos capaces de asegurar que la librerÃa Khiva se puede ejecutar en cualquier plataforma independientemente de la _GPU_ que se encuentre disponible. Además de la aceleración del tiempo de ejecución, otra de las principales ventajas que proporciona Khiva, es que la mayorÃa de los algoritmos mencionados son concatenables. Debido a que implementamos una estrategia lazy para las transferencias de memoria entre _CPU_ y _GPU_, asà solo se transfieren datos entre _CPU_ y _GPU_ si es estrictamente necesario, por lo que evitamos todas aquellas transferencias que son innecesarias.
En esta charla, nos centraremos en el análisis y búsqueda de patrones de series temporales, analizaremos en profundidad los algoritmos más avanzados y observaremos como estos algoritmos nos pueden servir para encontrar _motifs_, _discords_ y anomalÃas. Para mostrar la potencia de análisis de Khiva se usarán varios casos de uso (https://github.com/shapelets/khiva-use-cases) y validaremos como podemos extraer nuevas conclusiones de este tipo de datos.
Durante las últimas décadas del siglo XX, tanto en la industria como en la academia se han llevado a cabo numerosas aportaciones y desarrollos relacionados con el análisis de series temporales (_Time series_). Sin embargo, no es hasta estos últimos años en los que la industria se ha lanzado al análisis y cómputo masivo de este tipo de datos.
El auge del Internet de la Cosas y la necesidad de analizar y monitorizar datos en los que el tiempo no es una simple métrica más, sino el eje principal sobre el que versan otras variables es lo que ha puesto el foco de atención en el análisis de series temporales. Esta creciente demanda de cómputo debe ser acompasada por las últimas generaciones de procesadores, (_multicore y GPUs_), asà como en el desarrollo de tecnologÃas de _Big Data_ y de computación distribuida, las cuales proporcionan los medios para tratar estos grandes volúmenes de datos en tiempo real suave.
A pesar de la existencia de librerÃas que tratan time series, observamos principalmente dos limitaciones: 1) La funcionalidad que ofrecen estas librerÃas se encuentra muy fragmentada en librerÃas inconexas y 2) la mayorÃa de estas librerÃas son secuenciales, es decir, no explotan las ventajas de las nuevas arquitecturas de procesador, por lo que no son capaces de aprovechar los recursos que ofrecen los procesadores paralelos como _GPUs_ o _CPUs multicores_.
Para superar las dos limitaciones anteriores, presentamos Khiva (https://github.com/shapelets/khiva), una librerÃa open source que permite la ejecución de una larga lista de algoritmos de análisis de series temporales sobre _GPUs_. Khiva incorpora algoritmos de reducción de dimensionalidad, cálculo de distancias, normalización, regresión, regularización, extracción de caracterÃsticas, _clustering_ y búsqueda de patrones, etc. Para la implementación de todos los algoritmos hemos usado la librerÃa Arrayfire como capa de abstracción de las principales _APIs_ de _GPUs_ para cómputo, OpenCL y Nvidia CUDA. De esta forma, somos capaces de asegurar que la librerÃa Khiva se puede ejecutar en cualquier plataforma independientemente de la _GPU_ que se encuentre disponible. Además de la aceleración del tiempo de ejecución, otra de las principales ventajas que proporciona Khiva, es que la mayorÃa de los algoritmos mencionados son concatenables. Debido a que implementamos una estrategia lazy para las transferencias de memoria entre _CPU_ y _GPU_, asà solo se transfieren datos entre _CPU_ y _GPU_ si es estrictamente necesario, por lo que evitamos todas aquellas transferencias que son innecesarias.
En esta charla, nos centraremos en el análisis y búsqueda de patrones de series temporales, analizaremos en profundidad los algoritmos más avanzados y observaremos como estos algoritmos nos pueden servir para encontrar _motifs_, _discords_ y anomalÃas. Para mostrar la potencia de análisis de Khiva se usarán varios casos de uso (https://github.com/shapelets/khiva-use-cases) y validaremos como podemos extraer nuevas conclusiones de este tipo de datos.