Buscar

Analise de Desempenho e Paralelizacao de Algoritmos para Redes Neurais Profundas

Prévia do material em texto

Análise de Desempenho e Paralelização de Algoritmos para
Redes Neurais Profundas
Carlos A. T. Aguni , Alex E. Kawahira , Daniel Cordeiro
1Escola de Artes Ciências e Humanidades
Universidade de São Paulo
{carlos.aguni,alex.kawahira,daniel.cordeiro}@usp.br
Abstract. This paper analyzes the performance of a parallel implementation
for the training process of the Back-propagation Algorithm in Deep Neural Net-
work. Our testbed is an SMP machine with an Intel R© Xeon Phi Coprocessor
(Many Cores architecture). We study its suitability for optimizing a machine
learning process, whereas this kind of accelerator card is becoming more af-
fordable and popular among high performance enthusiasts and researchers.
Resumo. Este artigo analisa o desempenho do algoritmo de Retropropagação
em Redes Neurais Artificiais Profundas implementado de forma paralelizada
em uma máquina SMP com uma placa aceleradora Intel R© Xeon Phi (arqui-
tetura Many Cores), propondo o estudo e a adequabilidade de seu uso para
a otimização de processos de aprendizado de máquina, pois placas acelera-
doras estão cada vez mais baratas e mais populares entre os praticantes de
computação de alto desempenho.
1. Introdução
O progresso da ciência da computação inspira cientistas e desenvolvedores do mundo in-
teiro a investigar novos métodos para responder a seguinte pergunta: como fazer com que
computadores “aprendam” sozinhos, ou seja, adquiram conhecimento e sejam capazes
de inferir novos conhecimentos a partir de novas informações? Mesmo o computador
sendo uma máquina capaz apenas de executar sequências de instruções pré-elaboradas,
há métodos cada vez mais sofisticados para fazer com que isso seja possı́vel. Mas antes
de falar sobre métodos e algoritmos precisamos primeiro definir o que significa o pro-
cesso de “aprendizagem” para uma máquina. Em 1959, o pioneiro nas áreas de jogos de
computadores, inteligência artificial e aprendizado de máquina Arthur Lee Samuel definiu
aprendizado de máquina como uma área que proporciona aos computadores a habilidade
de aprender sem serem explicitamente programados.
Um dos métodos mais promissores de aprendizado de máquina é o uso de Redes
Neurais Artificiais (RNA) que englobam a classe da Inteligência Artificial dedicada a re-
plicar de forma simplificada o modo que funciona um cérebro biológico [Gershenson 2003].
Logo, a abstração da anatomia em um modelo computacional consistiria em entradas (si-
napses) que seriam multiplicadas por pesos (intensidade do sinal) gerando uma saı́da. O
processo de aprendizagem seria, então, refletida no ajuste desses pesos.
O processo de treinamento de uma RNA consiste em “treinar” a rede com entradas
e ajustar os pesos a partir do resultado obtido. Logo, o problema reside quando há a
intenção de se testar a rede em conjuntos maciços de dados (megadados ou conjuntos
de dados não estruturados). Computacionalmente, o problema é complexo. O tempo de
execução é diretamente proporcional ao tempo de execução. Em RNAs Profundas, uma
variante com múltiplas camadas, o problema é ainda mais evidente.
Para fins práticos, é preciso amenizar esse problema para que ele se torne tratável.
Uma opção é utilizar as tecnologias de computação paralela conhecidas como Many core
computing. Placas aceleradoras de propósito geral (tais como GPUs ou, mais recente-
mente, a arquitetura Intel R© Xeon Phi) permitem a execução de muitas tarefas concorren-
tes [Fang et al. 2013, Lee et al. 2015]. Ao contrário da computação paralela clássica, que
prioriza a execução de cada tarefa em uma CPU no menor tempo possı́vel, Many core
computing prioriza a execução do maior número de tarefas por unidade de tempo.
2. Redes Neurais de Retropropagação
A RNA utilizada neste artigo é a Perceptron Múltiplas Camadas (Multi Layer Perceptron)
(PMC), que consiste em neurônios organizados em pelo menos três camadas (entrada,
ocultas e saı́da) cada uma totalmente conectada às suas adjacentes. PMCs podem ser
compreendidas como um mapeamento funcional de um local de entrada para uma saı́da.
Um tipo de PMC é a Rede Neural de Retropropagação, onde pares de entrada/saı́da
são treinados através de um algoritmo de dois passos supervisados, baseados na regra de
aprendizado de correção de erro [Rumelhart et al. 1986].
Figura 1. Rede Neural de Retropropagação com uma camada oculta [Lu 2000].
Primeiro passo – Avanço/Ativação: um vetor de entrada é aplicado à primeira
camada da rede, que por sua vez propaga para o restante da rede, uma camada de cada vez.
Para as camadas seguintes depois da de entrada, em cada neurônio é calculada uma soma
ponderada dos sinais vindos da camada anterior para produzir uma nova rede de entrada e
aplicar uma função de ativação não-linear contı́nua (geralmente em forma sigmoide) para
determinar seu valor da saı́da. O vetor de de saı́da da rede é o vetor de ativação da camada
final de neurônios.
Segundo passo – Retropropagação/Correção: tentativa de correção dos erros
em relação ao mapeamento desejado inicialmente. O erro geral da rede de um dado vetor é
calculado comparando o vetor de saı́da com um vetor de resultado esperado. Cada camada
oculta deve calcular a contribuição de seus neurônios para o erro final, este resultado
é alcançado com cada neurônio em uma camada calculando seu próprio erro de uma
soma ponderada dos erros das camadas seguintes. Em seguida o peso de cada neurônio é
ajustado proporcionalmente ao seu erro.
A fase de treinamento se estende sobre um número de épocas até que o valor
médio de erro desta população fique abaixo de um valor mı́nimo definido, neste mo-
mento, o treinamento é interrompido e é dito que a rede atingiu a convergência. Ao
convergir, a rede é capaz de generalizar corretamente vetores de entradas ainda desconhe-
cidos [Pethick et al. 2013].
3. Estratégia de Paralelização
Estudamos o uso de uma placa aceleradora para paralelizar o problema. Utilizamos um
computador1 de memória compartilhada com dois processadores Intel R© Xeon CPU E5-
2650 de 2.00GHz, 16 GB RAM (host) e uma placa aceleradora Intel R© Xeon Phi 5110P,
um coprocessador de arquitetura Many-core de memória compartilhada com 61 cores,
cada um com uma frequência de 1.053 GHz. Há dois modos de operação:
• native: o código é executado nativamente no coprocessador, todo o código e suas
dependências precisam ser carregadas no dispositivo;
• offload: a aplicação é executada no host e partes do código são carregadas no
coprocessador. Este é o modo utilizado neste artigo, portanto a localidade de
dados é essencial para um desempenho satisfatório do coprocessador.
Utilizamos o algoritmo e o conjunto de testes disponibilizado publicamente em
https://github.com/buhpc/dnn como base para a implementação. Durante o
processo de aprendizagem, o algoritmo sequencial realiza iterativamente as etapas de
ativação, retropropagação e correção dos pesos.
Porém há outra abordagem com mesma garantia de convergência onde a correção
dos pesos é feita somente após realizadas as etapas de ativação e retropropagação de todo
o conjunto de treinamento. Dessa forma é possı́vel executar concorrentemente o processo
de ativação e retropropagação de cada teste em threads independentes.
O algoritmo paralelo foi ajustado manualmente para que as tarefas paralelas rea-
lizadas na CPU (host) fossem executadas na mesma quantidade de tempo que as tarefas
realizadas na Xeon Phi, garantindo, assim, o balanceamento de carga entre as unidades de
processamento. A porcentagem de carga de trabalho delegada para o Xeon Phi pode ser
vista na Figura 2.
Cada processo mantém, então, uma cópia da matriz de pesos e aplica a correção
em uma estrutura secundária ∆WCPU e ∆WPhi. Por fim o host se encarregaria de calcular
os pesos finais:
∆WFinal = ∆WCPU + ∆WPhi
4. Resultados experimentais
Foram realizados testes empı́ricos variando o balanceamento decarga de processo entre
processador e coprocessador para encontrar o ponto de maior eficiência da aplicação.
O tempo de execução do código em serial foi de aproximadamente 454s. No
melhor caso de teste (com 83,3% da carga executada na Phi) o tempo foi de 42s, ou seja,
um speedup em torno de 10 vezes mais rápido em relação à implementação serial.
1Agradecemos a Profa. Dra. Liria M. Sato (POLI/USP) pelo acesso a esta máquina.
Figura 2. Gráfico de Tempo x Carga de Trabalho na Xeon Phi.
5. Considerações finais
Este trabalho apresenta um método de paralelização para a etapa de treinamento de Redes
Neurais de Retropropagação, um tipo de Rede Neural Profunda. Este método explora o
uso de placas aceleradores em uma arquitetura many-core.
Adaptamos a etapa de treinamento deste tipo de rede neural para que fosse possı́vel
paralelizá-la em uma placa aceleradora do tipo Intel R© Xeon Phi. Mais precisamente, mo-
dificamos o cálculo de correção de pesos para que fosse realizado como um ponto de
sincronização posterior à iteração de treinamento, fazendo com que cada lote de dados de
treinamento fosse processado concorrentemente.
Nossa análise experimental mostrou que foi possı́vel obter um speedup de 10 ao
executar 83,3% da carga de trabalho nos coprocessadores. Em trabalhos futuros investi-
garemos também o uso de unidades de processamento gráfico de propósito geral.
Referências
Fang, J., Varbanescu, A. L., Sips, H. J., Zhang, L., Che, Y., and Xu, C. (2013). An
empirical study of Intel Xeon Phi. CoRR, abs/1310.5842.
Gershenson, C. (2003). Artificial neural networks for beginners. CoRR, cs.NE/0308031.
Lee, D., Kim, K.-H., Kang, H.-E., Wang, S.-H., Park, S.-Y., and Kim, J.-H. (2015). Le-
arning speed improvement using multi-gpus on dnn-based acoustic model training in
korean intelligent personal assistant. In Natural Language Dialog Systems and Intelli-
gent Assistants, pages 263–271. Springer.
Lu, W. (2000). Neural network model for distortion buckling behaviour of cold-formed
steel compression members. Helsinki University of Technology Laboratory of Steel
Structures Publications, 16.
Pethick, M., Liddle, M., Werstein, P., and Huang, Z. (2013). Parallelization of a backpro-
pagation neural network on a cluster computer.
Rumelhart, D., Hinton, G., and Williams, R. (1986). Learning internal representations by
error backpropagation. Parallel Distributed Processing: Explorations into the Micros-
tructure of Cognition, 1.

Continue navegando