Accelerated pooling [recurso eletrônico] : devising a hardware accelerated implementation based on Im2col and Col2im = Pooling acelerado: criando uma implementação acelerada em hardware baseada em Im2col e Col2im
Caio Salvador Rohwedder
DISSERTAÇÃO
Inglês
T/UNICAMP R636a
[Pooling acelerado]
Campinas, SP : [s.n.], 2021.
1 recurso online (53 p.) : il., digital, arquivo PDF.
Orientador: Guido Costa Souza de Araújo
Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação
Resumo: Convolução é uma operação crucial para aplicações de Deep Learning. Como tal, ela tem sido o foco de muitos esforços de otimização neste domínio de aplicação. Image-to-column (Im2col) e column-to-image (Col2im) são transformações amplamente utilizadas para mapear convolução para...
Ver mais
Resumo: Convolução é uma operação crucial para aplicações de Deep Learning. Como tal, ela tem sido o foco de muitos esforços de otimização neste domínio de aplicação. Image-to-column (Im2col) e column-to-image (Col2im) são transformações amplamente utilizadas para mapear convolução para multiplicação de matrizes. Essas transformações reorganizam as entradas da convolução para evitar seu padrão de acesso não contínuo à memória, fornecendo assim um arranjo de dados mais amigável para CPUs e GPUs. Em aceleradores de inteligência artificial (IA), essas transformações permitem que a convolução seja executada em unidades multiplicadoras de matriz. Implementadas em software, no entanto, elas impõem um aumento significativo em tempo de computação que deve ser compensado pelos ganhos de eficiência dos multiplicadores de matriz. DaVinci é uma arquitetura de acelerador de IA que apresenta instruções para otimizar Im2col e Col2im, reduzindo assim a sobrecarga de execução da convolução em seu multiplicador de matriz. Outra camada central para redes neurais convolucionais que apresenta um padrão de acesso semelhante à convolução é pooling. A execução de pooling é tipicamente direcionada para unidades de computação vetorial. Contudo, implementações baseadas nas transformações Im2col e Col2im podem ser utilizadas para melhorar a sua execução. Este trabalho explora o uso das instruções Im2col e Col2im do DaVinci para acelerar camadas de pooling. A abordagem proposta usa uma unidade de computação vetorial de propósito geral e instruções projetadas principalmente para convolução. Uma avaliação experimental revela que as implementações de pooling propostas podem produzir ganhos de velocidade de até 5,8 vezes em comparação com implementações base que não usam essas instruções especializadas. Os ganhos de velocidade são obtidos a partir de uma melhoria no arranjo de dados das entradas do pooling, pois esse arranjo leva à melhor vetorização de suas instruções
Ver menos
Abstract: Convolution is an operation crucial to Deep Learning applications. As such, it has been the focus of many optimization efforts on this application domain. Image-to-column (Im2col) and column-to-image (Col2im) are data transformations extensively used to map convolution to matrix...
Ver mais
Abstract: Convolution is an operation crucial to Deep Learning applications. As such, it has been the focus of many optimization efforts on this application domain. Image-to-column (Im2col) and column-to-image (Col2im) are data transformations extensively used to map convolution to matrix multiplication. These transformations rearrange the inputs of convolution to avoid its strided memory access pattern, thus providing a friendlier data layout for CPUs and GPUs. In artificial intelligence (AI) accelerators, these transformations allow convolution to be computed in matrix-multiplier units. Implemented in software, however, they impose a significant overhead that must be compensated by the efficiency gains of matrix-multipliers. DaVinci is an AI accelerator architecture that introduces instructions to optimize Im2col and Col2im, thus lowering the overhead of executing convolution in its matrix-multiplier. Another core layer of convolutional neural networks that presents a similar memory access pattern to convolution is pooling. The execution of pooling is typically targeted to vector computational units. Nevertheless, implementations based on the Im2col and Col2im transformations can be leveraged to improve its execution. This work explores the use of Im2col and Col2im instructions of DaVinci to accelerate pooling layers. The proposed approach uses a general-purpose vector computational unit and instructions primarily designed for convolution. An experimental evaluation reveals that the proposed pooling implementations can yield up to 5.8x speedup compared to baseline implementations that do not use these specialized instructions. The speedups follow from an improved memory layout in the inputs of pooling, as this layout leads to better vectorization of its instructions
Ver menos
Requisitos do sistema: Software para leitura de arquivo em PDF
Accelerated pooling [recurso eletrônico] : devising a hardware accelerated implementation based on Im2col and Col2im = Pooling acelerado: criando uma implementação acelerada em hardware baseada em Im2col e Col2im
Caio Salvador Rohwedder
Accelerated pooling [recurso eletrônico] : devising a hardware accelerated implementation based on Im2col and Col2im = Pooling acelerado: criando uma implementação acelerada em hardware baseada em Im2col e Col2im
Caio Salvador Rohwedder