05 jul 2021
14:30 Defesa de Mestrado Integralmente a distância
Tema
Pooling Acelerado: Criando uma Implementação Acelerada em Hardware Baseada em Im2col e Col2im
Aluno
Caio Salvador Rohwedder
Orientador / Docente
Guido Costa Souza de Araújo
Breve 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.
Banca examinadora
Titulares:
Guido Costa Souza de Araújo IC/UNICAMP
Sandra Eliza Fontes de Avila IC/UNICAMP
Bruno de Carvalho Albertini EPUSP
Suplentes:
Hervé Cédric Yviquel IC/UNICAMP
Nahri Balesdent Moreano FACOM/UFMS