Uso de GPUS para el ajuste de redes neuronales bayesianas regularizadas.
Abstract
Una de las herramientas provenientes de la inteligencia artificial que más se utiliza en la actualidad para realizar análisis de datos son las redes neuronales artificiales (RNA). Estas surgen del intento de los investigadores de emular el modelo de aprendizaje del cerebro humano. A lo largo de los años, se han ido desarrollando técnicas que ayudan a optimizar las RNA, tanto en la parte matemática como computacional, esto último, valiéndose de los avances que han llevado a obtener procesadores más veloces y además con nuevas caracterı́sticas como el multi núcleo y el multiproceso, mismas que hasta hace un par de décadas, sólo eran posibles en equipos de alto desempeño como supercomputadoras y clústers de cómputo paralelo. La llegada de dicha potencia de cálculo a los equipos destinados al usuario común ası́ como el desarrollo de tecnologı́as coadyuvantes para el cálculo de gráficos para el mercado de los video juegos (GPUs), han logrado que en la actualidad sea posible contar con una alta capacidad de paralelización en equipos tan accesibles como una computadora portatil o de escritorio. Es este último desarrollo tecnológico el que ha motivado el estudio de algoritmos de optimización que si bien, en muchos casos, ya habı́an sido paralelizados para equipos de alto rendimiento, requieren modificaciones para poder operar en los equipos que cuentan con GPUs para realizar los cálculos en paralelo. Sumado a lo anterior, se siguen explorando las capacidades de las GPUs para tratar algunos problemas de paralelización, sobre todo, cuando se trata de grandes cantidades de datos. Este trabajo se enfoca en el ajuste de una red neuronal de una sola capa oculta aplicando regularización Bayesiana y cómputo paralelo, este último se realiza mediante el lenguaje y la arquitectura CUDA para GPUs. Para poder realizar algunos cálculos se hizo uso de bibliotecas como cuBLAS y CuSolver. Finalmente, se evaluó el desempeño del programa con dos implementaciones previas del algoritmo, para cómputo secuencial (biblioteca de funciones brnn del paquete estadı́stico R) y para cómputo paralelo mediante MPI. _______________ USE OF GPUS FOR FITTING BAYESIAN REGULARIZED NEURAL NETWORKS. ABSTRACT: One of the tools from artificial intelligence that is most used today to perform data analysis is artificial neural networks (ANN). These arise from the attempt of researchers to emulate the learning model of the human brain. Over the years, techniques have been developed that help to optimize ANN, both in the mathematical and computational part, the latter, making use of the advances that have led to faster processors and also with new features such as multi core and multiprocessing, the same as until a couple of decades ago, were only possible on high-performance equipment such as supercomputers and parallel computing clusters. The arrival of this computing power to the equipment intended for the common user as well as the development of auxiliary technologies for the calculation of graphics for the video games market (GPUs), have made it possible to have a high capacity today of parallelization in equipment as accessible as a laptop or desktop computer. It is this latest technological development that has motivated the study of optimization algorithms that, although, in many cases, had already been parallelized for high-performance equipment, require modifications to be able to operate on equipment that has GPUs to perform calculations in parallel. In addition to the above, the capabilities of GPUs are still being explored to deal with some parallelization problems, especially when it comes to largedata sets. This work focuses on the fitting process of a single hidden layer neural network applying Bayesian regularization and parallel computation, the latter is done using the CUDA language and architecture for GPUs. In order to perform some calculations, libraries such as cuBLAS and CuSolver were used. Finally, the performance of the program was compared with two previous implementations of the algorithm, for sequential computation (brnn library in R language) and for parallel computation using open MPI.