11 mai 2020
16:00 Defesa de Mestrado Integralmente a distância
Tema
A Task-Parallel Approach for Neural Networks
Aluno
Marcos Vinícius Guimarães Martins Filho
Orientador / Docente
Guido Costa Souza de Araujo
Breve resumo
Redes Neurais e Aprendizagem Profunda têm se sobressaído em diversas áreas, que vão desde o reconhecimento de imagens e detecção de objetos à geração de música. Todo este sucesso contribuiu para pervasividade destas técnicas, com uma demanda sempre crescente para que aplicações que as utilizem sejam executadas em dispositivos tão diversos quanto smart watches e super clusters.
Considerando que a etapa de treinamento é computacionalmente mais significativa que a de inferência, é natural que o foco de pesquisas na área de otimização seja na busca por melhorias no tempo de treinamento. Não obstante, à medida que aplicações baseadas em redes neurais começaram a ser utilizadas na borda da rede, tanto o meio acadêmico quanto a indústria intensificaram a pesquisa e o desenvolvimento de técnicas que objetivam otimizar a execução da etapa de inferência, como a troca de pequenas margens de acurácia por modelos menores (como a Mobilenet, por exemplo) ou consumo reduzido de memória e eficiência computacional (quantização, por exemplo).
No entanto, uma área que continua pouco explorada é o uso de paralelismo de modelo, ou seja, a possibilidade de se executar várias operações da rede neural ao mesmo tempo, a fim de melhorar o tempo gasto na inferência. Apesar de suportada pelos principais frameworks de aprendizagem profunda, esta técnica só é utilizada durante o treinamento de modelos muito grandes, cujos parâmetros não cabem na memória de um único dispositivo e, por isso, precisam ser divididos em vários nós de um cluster (potencialmente heterogêneo). Além disso, geralmente recai sobre o desenvolver a responsabilidade de determinar como as operações paralelas do modelo serão divididas através destes nós.
Este trabalho propõe uma nova abordagem para a utilização do paralelismo de modelo durante a etapa de inferência. Sua ideia central é explorar a correspondência entre um grafo de fluxo de dados - uma abstração comum para a representação de modelos de redes neurais - e um grafo de tarefas, e utilizar o runtime de escalonamento de tarefas para permitir que as operações paralelas de uma rede neural emerjam naturalmente.
Este trabalho utiliza como base o TensorFlow XLA, um compilador de domínio específico para redes neurais que é capaz de gerar código binário altamente otimizado e customizado para uma plataforma específica a partir do modelo de uma rede neural treinada. A forma como o XLA gera esse código foi modificada para que o runtime de escalonamento de tarefas da implementação de OpenMP do Clang fosse utilizado. Dessa forma, ao executar cada operação da rede através de uma tarefa, o paralelismo presente no modelo é naturalmente traduzido pela forma como um grafo de fluxo de dados representa suas dependências na forma de tensores.
A abordagem proposta neste trabalho foi avaliada em dois modelos diferentes da família Inception de redes neurais, cujo objetivo é o reconhecimento de imagens. Speed-ups de 11.16% e 12.42% foram obtidos para as redes Inception-v3 e Inception-v4, respectivamente, o que demonstra que o paralelismo de modelo é uma estratégia promissora para a otimização do tempo de inferência de redes neurais.
Banca examinadora
Titulares:
Guido Costa Souza de Araujo | IC/UNICAMP |
Emilio de Camargo Francesquini | CMCC/UFABC |
Marcio Machado Pereira | IC/UNICAMP |
Suplentes:
Mário Lúcio Côrtes | IC/UNICAMP |
Alexandro José Baldassin | IGCE/UNESP |