Using software optimization techniques and exploiting hardware capabilities to speed-up BLSTM neural network on CPUs
dc.contributor.advisor | Silva, Bruno Castro da | pt_BR |
dc.contributor.author | Silva, Rennê Silva da | pt_BR |
dc.date.accessioned | 2017-09-30T02:31:00Z | pt_BR |
dc.date.issued | 2017 | pt_BR |
dc.identifier.uri | http://hdl.handle.net/10183/169057 | pt_BR |
dc.description.abstract | Many current applications benefit from using neural networks to solve machine learning problems, since they often outperform other conventional approaches both in terms of accuracy and robustness. However, training and deploying high accuracy networks sometimes requires using complex neural networks with many weights. This has a direct impact on the time needed to train and run such networks since these procedures involve intensive computations and many memory accesses. Such high processing costs may be a challenging burden even to modern computational platforms such as multi-cores and vector units. Although GPUs can be used in order to improve runtime, they are not always the best option—small networks, for instance, may not benefit from GPUs, and GPUs may not always be available in simpler devices. This graduation work introduces and demonstrates the efficacy of many software optimization techniques that allow for neural networks to fully benefit from the capabilities of CPUs without compromising their accuracy. We evaluate the proposed optimization techniques using a Bidirectional Long Short-Term Memory (BLSTM) neural network to solve an Optical Character Recognition (OCR) problem. Different architectures (Intel and ARM CPUs), memory access patterns, parallelization schemes, linear algebra high-performance libraries, numerical representations, lookup tables and vectorization (SSE, AVX and NEON) were taken into account to specify optimization strategies that allow for improvements in the runtime of the network. Finally, we present performance comparisons between different implementations of a BLSTM, both in terms of runtime and energy consumption, and show that the implemented optimizations improve runtime by a factor of 9 (when compared to an optimized floating-point baseline) while undergoing negligible loss of accuracy. | en |
dc.description.abstract | Muitas aplicações atuais se beneficiam ao usar redes neurais para solucionar problemas de aprendizado de máquina, visto que elas frequentemente superam outras abordagens convencionais tanto em termos de acurácia e robustez dos resultados. Contudo, algumas vezes, treinar e executar redes com alta acurácia requer o uso de redes neurais complexas com muitos pesos. Isto tem um impacto direto no tempo necessário para treinar e executar uma rede neural, visto que estes procedimentos envolvem computação intensa e muitos acessos à memória. Tais altos custos de processamento podem ser uma carga computacional desafiadora até mesmo para plataformas computacionais modernas tais como as que possuem vários núcleos e unidades vetoriais. Apesar de GPUs poderem ser usadas a fim de melhorar tempo de execução, elas nem sempre são a melhor opção—redes pequenas, por exemplo, podem não se beneficiar do uso de GPUs além de nem sempre elas estarem disponíveis em dispositivos mais simples. Este trabalho de graduação introduz e demonstra a eficácia de várias técnicas de otimização de software que permitem que redes neurais se beneficiem totalmente das capacidades de CPUs sem comprometer sua acurácia. Nós avaliamos as técnicas de otimização propostas ao usar uma rede neural BLSTM para resolver um problema de Reconhecimento Ótico de Caracteres Arquiteturas diferentes (CPUs Intel e ARM), padrões de acesso a memória, esquemas de paralelização, bibliotecas de alta performance para álgebra linear, representações numéricas, lookup tables e vetorização (SSE, AVX e NEON) foram levadas em consideração neste trabalho para especificar estratégias que permitem melhorias no tempo de execução da rede. Finalmente, nós apresentamos uma comparação entre diferentes implementações de uma BLSTM tanto em termos de tempo de execução quanto de consumo de energia e mostramos que as otimizações implementadas melhoram o tempo de execução por um fator de 9 com perda insignificante de acurácia. | pt_BR |
dc.format.mimetype | application/pdf | |
dc.language.iso | eng | pt_BR |
dc.rights | Open Access | en |
dc.subject | Recurrent neural networks | en |
dc.subject | Microeletrônica | pt_BR |
dc.subject | Redes neurais | pt_BR |
dc.subject | BLSTM | en |
dc.subject | Software optimization techniques | en |
dc.subject | Improving runtime | en |
dc.subject | Energy consumption reduction | en |
dc.subject | Parallel and high-performance computing | en |
dc.subject | SSE, AVX, NEON intrinsics | en |
dc.title | Using software optimization techniques and exploiting hardware capabilities to speed-up BLSTM neural network on CPUs | pt_BR |
dc.title.alternative | Usando técnicas de otimização de software e explorando capacidades de hardware para acelerar redes neurais BLSTM em CPUs | pt_BR |
dc.type | Trabalho de conclusão de graduação | pt_BR |
dc.contributor.advisor-co | Rybalkin, Vladimir | pt_BR |
dc.identifier.nrb | 001048369 | pt_BR |
dc.degree.grantor | Universidade Federal do Rio Grande do Sul | pt_BR |
dc.degree.department | Instituto de Informática | pt_BR |
dc.degree.local | Porto Alegre, BR-RS | pt_BR |
dc.degree.date | 2017 | pt_BR |
dc.degree.graduation | Engenharia de Computação | pt_BR |
dc.degree.level | graduação | pt_BR |
Este item está licenciado na Creative Commons License
-
TCC Engenharias (5855)