geração automática de rnas mlp utilizando fpga antonyus pyetro [email protected] orientadora: edna...
TRANSCRIPT
Geração automática de RNAs MLP utilizando FPGA Antonyus [email protected]
Orientadora:Edna Barros - [email protected]
Roteiro
•Motivação•Rede neural artificial•Projeto de RNAs em FPGA•Análise dos Resultados•Trabalhos relacionados•Trabalhos futuros
Motivação
Motivação
•RNAs – processamento paralelo e distribuído▫Usada em muitas áreas do conhecimento
processamento de sinais, análise de imagens médicas, sistemas de diagnóstico e previsões de séries temporais
▫Implementações em software – seqüenciais
•FPGAs – provêm paralelismo de hardware▫Paralelismo de processo e dados▫Alto poder de processamento e baixo custo
Motivação
•Objetivos: ▫Definição de uma arquitetura de RNAs para
hardware (inicialmente para aprendizado Off-line)
▫Implementação em FPGA
▫Validar com um modelo em software
▫Comparar desempenho
Rede neural artificial
•Inspirado no modelo biológico▫Processamento do cérebro é inerentemente
paralelo e distribuído•Aprendem através de exemplos•Adaptabilidade•Capacidade de generalização•Tolerância a falhas
Neurônio artificial
Neurônio– função de ativação
•Algumas funções de limiar usadas são:▫Função degrau unitário;
Φ(u) = 1 se u > 0, Φ(u) = 0, caso contrário
▫Função rampa unitária Φ(u) = max{0.0, min{1.0, u + 0.5}}
▫Função sigmóide logística Φ(u) = a /{ 1 + exp(−bu) }
RNA - topologia
Exemplo de RNA
•Problema: Diabetes•Atributos de entrada: 5•Classes: 2•Exemplos de testes: 384•Topologia: 5:2:2•Função de transferência
▫Sigmóide
Projeto de RNAs em FPGA
•Desafios:
▫Aritmética de ponto flutuante Vs Ponto Fixo
▫Como implementar a sigmóide em FPGA? Φ(u) = 1 /( 1 + exp(−u) )
Ponto Flutuante Vs Ponto Fixo
•Ponto flutuante:▫Menor precisão▫Range dinâmico ▫Menor tempo de desenvolvimento
•Ponto fixo▫Menor custo do produto final▫Maior velocidade▫Introduz oscilação na fase de aprendizado
Implementação da sigmóide
•Implementação direta em hardware▫Φ(u) = 1 /( 1 + exp(−u) )
•Implementação da expansão em série
•Implementação por Look up table
• Implementar versão aproximada
Comparação
Método erro médio erro max Suave Rápido
1ª ordem
otimizado
1.4539e-
017
0.0194 sim não
1ª ordem simples 8.9214e-
018
0.0189 não sim
2ª ordem simples 8.5910e-
018
0.0215 sim sim
Implementação do Neurônio
•Cálculo do estado de ativação▫Um somador e um multiplicador
Nº entradas
Função Operações
2 X1 x W1 + X2 x W2 + W0 X X ++
3 X1xW1 + X2xW2 + X3xW3 + W0 X X X +++
4 X1xW1 + X2xW2 + X3xW3 + X4xW4 +W0
X X X X +++ +
Implementação do Neurônio
•Neurônio com pesos parametrizados
Implementação da Rede Neural
384 exemplos
299,45μs
•Controle seqüencial
Implementação da Rede Neural
384 exemplos
165,38μs
•Controle paralelo
Rede neural - XOR
Análise de resultados
•Estudo de caso: Diabetes▫2 classes, 5 entradas, 384 exemplos de
teste•Modelos
▫Matlab script – sigmóide real, aproximado▫Em FPGA▫Em software – C++
•Metodologia de teste▫Comparar saídas e obter o erro
Análise de resultados
•Erro▫Matlab sigmóide real Vs sigmóide
aproximada Erro máximo: 0.0239 médio: 0.0160
▫Matlab sigmóide real Vs software – C++ Erro máximo: 0.5042e-006
▫Em FPGA Vs Matlab sigmóide aproximada Erro máximo: 0.01627
▫Em FPGA Vs Matlab sigmóide real Erro máximo: 0.04017
Tempo de execução
• implementação em C++ (AMD Athlon 64 3200+ 2.20GHz com 512 MB de memória )▫23ms
•Em FPGA – fmax = 160MHz▫Controle sequencial
299,45μs (76,8 vezes mais rápido)▫Controle paralelo
165,38μs (139 vezes mais rápido)
Área
•Área total (FPGA STRATIX II EP2S60F672C5ES): ▫16% lógica combinacional do▫5% memória▫11% blocos DSP de 9-bits
Trabalhos relacionados
Aproach Performance Speed up
PC 23ms 1x
Related work1 na 38x
Related work2 71ns(average) vs
43,07ns(our)
na
Our (sequencial) 299,45μs 76,8x
Our (parallel) 165,38μs 139x
Trabalhos futuros
•Introduzir o aprendizado online no FPGA•Abranger outros tipos de redes inclusive
as de estrutura dinâmicas (reconfiguração dinâmica).
•Framework ▫Entrada: topologia da rede (treinada ou
não); pesos;
▫Saída: código HDL ▫Vantagem: encapsula-se todo o projeto da
implementação em hardware
Proposta de Trabalho
•Escopo▫Geração automática de código a partir da
Ferramenta CAD de RNA (Matlab, Weeka, Scilab, Tanagra, etc)
▫ Garantir transparência e parametrização para o projetista de IA
Análise de Resultados• Comparativo qualitativo em relação às
implementações de RNA em FPGA (função de ativação, uso de ponto flutuante vs ponto fixo, etc)
• Comparativo quantitativo▫ Abordagens em FPGA - Tempo de processamento,
área e throughput▫ Abordagens em GPU - Tempo de processamento,
desempenho / custo da solução, desempenho / watt.
Perguntas!