Convolution tensor slicing optimization for multicore NPUs [recurso eletrônico] = Otimização do particionamento de tensores para convolução em NPUs multicore
Rafael Cardoso Fernandes Sousa
TESE
Inglês
T/UNICAMP So85c
[Otimização do particionamento de tensores para convolução em NPUs multicore]
Campinas, SP : [s.n.], 2023.
1 recurso online (105 p.) : il., digital, arquivo PDF.
Orientadores: Guido Costa Souza de Araújo, Marcio Machado Pereira
Tese (doutorado) - Universidade Estadual de Campinas, Instituto de Computação
Resumo: Embora a geração de código para modelos de Redes Neurais Convolucionais (CNNs) tenha sido extensivamente estudada, a realização de divisão eficiente de dados e paralelização para Unidades de Processamento Neural (NPUs) multicore e com memórias internas restritas ainda é um problema...
Ver mais
Resumo: Embora a geração de código para modelos de Redes Neurais Convolucionais (CNNs) tenha sido extensivamente estudada, a realização de divisão eficiente de dados e paralelização para Unidades de Processamento Neural (NPUs) multicore e com memórias internas restritas ainda é um problema desafiador. Dado o tamanho dos tensores de entrada/saída das convoluções e o pequeno espaço das memórias internas das NPUs, minimizar as transações de memória ao mesmo tempo em que se maximiza o paralelismo e a utilização das unidades de multiplicação e acumulação (MAC) são fundamentais para qualquer solução eficaz. Esta tese propõe um passo de otimização no compilador TensorFlow XLA/LLVM para NPUs multicore, chamado Otimização de Divisão de Tensores (TSO), que: (a) maximiza o paralelismo das convoluções e o reuso de memória entre os núcleos das NPUs, (b) maximiza a reutilização de dados em cada núcleo NPU, selecionando a estratégia de agendamento apropriada que minimiza as transferências de dados entre as memórias no chip e a DRAM, e (c) reduz as transferências de dados entre a memória DRAM do hospedeiro (host) e as memórias internas da NPU ao empregar um modelo baseado em rajadas (bursts) de memória DRAM ao avaliar cada solução no espaço de busca, resultando na seleção daquela que oferece o melhor desempenho. Para avaliar a abordagem proposta, foram realizados experimentos usando o Processador Neuromórfico (NMP), uma NPU multicore contendo 32 núcleos RISC-V estendidos com novas instruções de CNN. Os resultados experimentais mostram que o TSO é capaz de identificar a melhor divisão de tensores que minimiza o tempo de execução para um conjunto de modelos de CNN. Acelerações de até 21,7% são observadas ao comparar a técnica baseada em rajada do TSO com uma abordagem de fatiamento de dados sem rajada. Entre as 236 convoluções avaliadas de 6 modelos CNN, o TSO com o modelo de rajadas supera a técnica sem rajadas em 73% delas, alcançando acelerações de até 3,69x. Grande parte da melhoria provém do fato de que o TSO com a técnica baseada em rajada habilitada otimiza o tempo de carga em até 24% e o tempo de armazenamento em até 79% quando comparado à abordagem sem rajadas na execução completa de todo o modelo CNN. Além disso, o TSO com a técnica baseada em rajada foi também comparado a uma abordagem existente que aplica um modelo de custo baseado em um modelo teórico chamado roofline [Motamedi et al., 2016], usado para estimar o desempenho das convoluções. Como resultado, o TSO supera todos os modelos CNN, com acelerações de até 29,2%. Para 84% das convoluções, o TSO alcança acelerações de até 5,19x. O algoritmo também foi adaptado para o framework de Aprendizado de Máquina Glow para validar a generalidade da abordagem TSO. O desempenho dos modelos foi medido tanto nos compiladores Glow quanto TensorFlow XLA/LLVM, revelando resultados similares
Ver menos
Abstract: Although code generation for Convolution Neural Network (CNN) models has been extensively studied, performing efficient data slicing and parallelization for highly-constrained Multicore Neural Processor Units (NPUs) is still a challenging problem. Given the size of convolutions'...
Ver mais
Abstract: Although code generation for Convolution Neural Network (CNN) models has been extensively studied, performing efficient data slicing and parallelization for highly-constrained Multicore Neural Processor Units (NPUs) is still a challenging problem. Given the size of convolutions' input/output tensors and the small footprint of NPU on-chip memories, minimizing memory transactions while maximizing parallelism and MAC utilization are central to any effective solution. This thesis proposes a TensorFlow XLA/LLVM compiler optimization pass for Multicore NPUs, called Tensor Slicing Optimization (TSO), which: (a) maximizes convolution parallelism and memory usage across NPU cores, (b) maximizes data reuse on each NPU core by selecting the appropriate scheduling strategy that minimizes data transfers between the on-chip memories and DRAM, and (c) reduces data transfers between the host DRAM memory and the NPU on-chip memories by employing a DRAM memory burst modeling when evaluating every solution in the search space, which results in the selection of the one that provides the highest performance. To evaluate the proposed approach, experiments were performed using the NeuroMorphic Processor (NMP), a multicore NPU containing 32 RISC-V cores extended with novel CNN instructions. Experimental results show that TSO is capable of identifying the best tensor slicing that minimizes execution time for a set of CNN models. Speedups of up to 21.7% result when comparing the TSO burst-based technique to a no-burst data slicing approach. Among the 236 evaluated convolutions from 6 different CNN models, TSO with the burst-modeling outperforms the no-burst approach in 73% of them, achieving speedups of up to 3.69x. Most of the improvement comes from the fact that TSO with the burst-based technique enabled optimizes the load time by up to 24% and the store time by up to 79% when compared to the no-burst approach in end-to-end execution of a CNN model. Furthermore, TSO with the burst-based technique was compared against an existing approach that applies a cost model based on a theoretical roofline model [Motamedi et al., 2016] to estimate the convolution performance, which resulted in TSO outperforming all CNN models with speedups of up to 29.2%. In this comparison, TSO shows improvements in 84% of the convolutions, achieving speedups of up to 5.19x. The TSO algorithm was also ported to the Glow Machine Learning framework to validate the generality of the TSO approach. The performance of the models was measured on both Glow and TensorFlow XLA/LLVM compilers, revealing similar results.
Ver menos
Araújo, Guido Costa Souza de, 1962-
Orientador
Pereira, Márcio Machado, 1959-
Coorientador
Castro, Márcio Bastos
Avaliador
Lejbman, Alfredo Goldman Vel
Avaliador
Yviquel, Hervé Cédric, 1986-
Avaliador
Wanner, Lucas Francisco, 1981-
Avaliador
Convolution tensor slicing optimization for multicore NPUs [recurso eletrônico] = Otimização do particionamento de tensores para convolução em NPUs multicore
Rafael Cardoso Fernandes Sousa
Convolution tensor slicing optimization for multicore NPUs [recurso eletrônico] = Otimização do particionamento de tensores para convolução em NPUs multicore
Rafael Cardoso Fernandes Sousa