Resumen:
|
[ES] La adopción de las redes neuronales en prácticamente todos los ámbitos científicos está propiciando su uso en una amplia variedad de dispositivos. Estos dispositivos pueden ser de muy diversa naturaleza: desde grandes ...[+]
[ES] La adopción de las redes neuronales en prácticamente todos los ámbitos científicos está propiciando su uso en una amplia variedad de dispositivos. Estos dispositivos pueden ser de muy diversa naturaleza: desde grandes y complejos servidores de cómputo, hasta procesadores de bajo consumo como los integrados en los teléfonos móviles. Sin embargo, ya sean de un tipo u otro, casi todos incluyen un acelerador gráfico o GPU que puede ser utilizado para cómputo de propósito general.
Generar núcleos computacionales optimizados para cada acelerador de forma manual requiere de un enorme esfuerzo por parte de los desarrolladores, de hecho, en la práctica, esto se lleva a cabo solamente para algunos modelos. El objetivo del presente trabajo es automatizar la generación de código optimizado para cualquier tipo de GPU mediante una herramienta conocida como Apache TVM. Esta herramienta permite especificar la operación a optimizar a un alto nivel y, a través de una serie de modificaciones intermedias por parte del framework, generar el código optimizado.
En este trabajo se desarrolla código para optimizar la operación de multiplicación de matrices, la cual es ampliamente utilizada en la mayoría de los campos científicos, incluyendo las redes neuronales.
Una vez generado el código con TVM, se lleva a cabo un estudio de prestaciones, comparando su rendimiento con el de la librería de altas prestaciones NVIDIA cuBLAS y el de otra utilidad de TVM llamada Auto-Tuning (AutoScheduler), que permite automatizar el proceso de desarrollo a partir de una descripción del cómputo.
Los resultados muestran que el código desarrollado obtiene un rendimiento similar al obtenido por cuBLAS, y supera el generado por AutoScheduler en multiplicaciones de matrices de dimensiones grandes.
Al aplicar esta comparativa a un caso de estudio real, la red neuronal ResNet50-v1.5, donde el escenario de aplicación cambia a matrices muy rectangulares, ha sido posible vencer a cuBLAS en algunas de las capas que corresponden a los productos de matrices más rectangulares y al AutoScheduler en la mayoría de las capas.
[-]
[EN] The adoption of neural networks in virtually all scientific fields is leading to their use in a wide variety of devices. These devices can range from large, complex computational servers to low-power processors such ...[+]
[EN] The adoption of neural networks in virtually all scientific fields is leading to their use in a wide variety of devices. These devices can range from large, complex computational servers to low-power processors such as those embedded in mobile phones. However, whether they are of one type or another, almost all include a graphics accelerator or GPU that can be used for general-purpose computing.
Generating optimized computational cores for each accelerator manually requires enormous effort on the part of developers; in fact, in practice, this is only done for some models. The aim of the present project is to automate the generation of optimized code for any type of GPU using a tool known as Apache TVM. This tool allows to specify the operation to be optimized at a high level and, through a series of intermediate modifications by the framework, to generate the optimized code.
In this project, code is developed to optimize the matrix multiplication operation, which is widely used in most scientific fields, including neural networks.
Once the TVM code is generated, a performance study is carried out, comparing its performance with that of the NVIDIA cuBLAS high-performance library and that of another TVM utility called Auto-Tuning (AutoScheduler), which allows automating the development process from a description of the computation.
The results show that the developed code obtains a performance similar to that obtained by cuBLAS, and outperforms that generated by AutoScheduler in multiplications of high-dimensional matrices.
By applying this comparison to a real case study, the ResNet50-v1.5 neural network, where the application scenario changes to very rectangular matrices, it has been possible to beat cuBLAS in some of the layers corresponding to the products of more rectangular matrices and AutoScheduler in most of the layers.
[-]
|