Defesa de Mestrado de Alex Silva Torres

Título do Trabalho
NNC – Um compilador de Rede Neural flexível
Candidato(a)
Alex Silva Torres
Nível
Mestrado
Data
Add to Calender 2019-09-26 00:00:00 2019-09-26 00:00:00 Defesa de Mestrado de Alex Silva Torres NNC – Um compilador de Rede Neural flexível Sala 85 do IC 2 INSTITUTO DE COMPUTAÇÃO mauroesc@ic.unicamp.br America/Sao_Paulo public
Horário
14:30
Local
Sala 85 do IC 2
Orientador(a)
Guido Costa Souza de Araújo
Banca Examinadora

Condição

* Titulares

Unidade/Instituição

Orientador/Presidente

Guido Costa Souza de Araújo

IC/UNICAMP

Externo à Unidade

Roberto de Alencar Lotufo

FEEC/UNICAMP

Interno à Unidade

Marcio Machado Pereira

IC/UNICAMP

Condição

* Suplentes

Unidade/Instituição

Interno à Unidade

Sandro Rigo

IC/UNICAMP

Externo à Unidade

Alexandro José Baldassin

IGCE/UNESP

 

Resumo

Com o crescimento de áreas como computação de borda, existe uma crescente necessidade
de trazer redes neurais para uma grande diversidade de hardwares diferentes. Para isso
são necessários softwares para realizar a inferencia de redes neurais já treinadas nesses
dispositivos. Hoje as soluções existentes são engines que interpretam modelos e executam
operação a operação. No entanto essas engines são projetadas para hardwares especificos
e suas arquiteturas tornam dificil adicionar novos backends e frontends. Para prover uma
maior flexibilidade para suportar diferentes hardwares, esse trabalho propõe o NNC, uma
compilador para redes neurais flexível, cuja arquitetura foi projetada com acoplamento
fraco, para permitir adicionar suporte para diferentes hardwares de uma maneira mais
flexível. Com essa abordagem o NNC é capaz de gerar código para GPUs com maior
poder de processamento como ARM Mali, quanto para microcontroladores com menor
poder de processamento.
O NNC é divido em três camadas principais: o frontend, a camada de otimização e
analise, e o backend. O frontend permite escrever parsers para diversos tipos de modelos.
A camada de otimização e análise permite executar passos para melhorar a perfomance de
execução da rede neural, bem como a realização de analises como por exemplo, determi-
nar a memoria necessária para execução do modelo. Ao final, o backend gera código para
diversas arquiteturas a partir do grafo computacional. Com uma arquitetura que utiliza
uma abordagem de acoplamente fraco é possível escrever novos backends e conecta-los fa-
cilmente. O NNC possui backends para NNAPI, ARMNN, além de possuir uma biblioteca
de kernels próprios utilzando Vulkan. Vulkan é uma tecnologia que permite acesso mul-
tiplataforma a GPUs modernas usadas em uma grande variedade de dispositivos, como
telefones celulares e plataformas embarcadas.
Mesmo com o NNC estando ainda em sua versão inicial, foi possível com essa abor-
dagem conseguir resultados de desempenho semelhantes a várias outras engines para exe-
cução de inferencia de redes neurais, tendo a vantagem de já suportar uma quantidade
maior de hardware que as demais engines.