a high performance full pipelined arquitecture of mlp neural networks in fpga antonyus pyetro...
TRANSCRIPT
A High performance full pipelined arquitecture of MLP Neural Networks in FPGAAntonyus [email protected]
Orientadora:Edna Barros - [email protected]
Roteiro
•Motivação•Rede neural artificial•Fluxo de Projeto de RNAs•Trabalho relacionado•Arquitetura proposta•Resultados
Motivação
•Por que se usa RNAs?▫Inspirado no modelo biológico▫Aprendem através de exemplos▫Capacidade de generalização▫Tolerância a falhas e a ruído
Motivação
•Por que FPGAs?▫Paralelismo de processo e dados▫Alto poder de processamento▫Possibilidade de customização do HW
•Por que RNAs em FPGA?▫Processamento inerentemente paralelo e
distribuído▫Implementações em software – seqüênciais
Motivação
•Implementação de RNAs em FPGA▫Vantagens
Aumento da capacidade de processamento Aplicações em tempo real e críticas
Reduzir o consumo de potência Aplicações embarcadas
▫Desvantagens Maior custo do hw Implementação complexa
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
Projeto CAD da RNA
Implementação em SW
Implementação em HW
Fluxo de projeto de RNAs
Projetista de IAProjetista de IA ou de SW
Engenheiro de HW
Manual
Fluxo de Projeto
Implementação em HW
Projeto da arquitetura
de HW
Especificação em HDL
Verificação funcional
Síntese
Simulação Timing
Prototipação em FPGA
Trabalho relacionado
•VANNGen: a Flexible CAD Tool for Hardware Implementation of Artificial Neural Networks▫Geração automática da RNA▫Necessita do projetista de HW
Ponto fixo Vs ponto flutuante, precisão, etc... ▫Não permite integração das ferramentas
CAD de RNA▫Edição manual do arquivo de configuração
Arquitetura convencional• Computação do estado de ativação para cada
camada
, m somas de m+1 produtos para cada n
• Instanciando m+1 multiplicadores e m somadores
n * m ciclos
Arquitetura Proposta
•Computar produto coluna x linha▫W11•X1, …, Wn1•X1 ▫Depois somar com o resultado
da prox. Coluna▫Alinhar 2 a 2 até que todo somatório esteja
computado
Desempenho esperado• Computa-se o produto em
ciclos ▫n é normalmente pequeno (menos de 20)
• Recursos▫ somadores e 1 multiplicador▫1 única entrada por vez é necessária▫1 única saída por vez necessaria
• Taxa de computação▫n*m ciclos se m é par e n*(m+1) se m
impar
Camada – 4 neuronios 4 entradas
Camada – 4 neuronios 5 entradas
A função de ativação
•É uma função complexa ▫Φ(u) = a /{ 1 + exp(−bu) }
•A computação em hw é muito custosa▫Aproximações▫Look-up tables
Solução proposta
•Na arquitetura proposta▫Toda camada fornece 1 saída e necessita de
1 entrada por vez▫Necessita de apenas uma estrutura para
computar a função de ativação
Solução proposta
• x = [a,b] , discreto com passo 1/k então temos de x para armazenar
• Para um dado x, resulta na posição de x no vetor [a,b]
• Se k = 2z o termo x*k basta adicionar Z no expoente de x• Uma única soma de ponto flutuante necessária sem necessidade
de realizar busca binária
Problemas e soluções
•Recursos de interconexões, nr pinos e fan-out▫Na nova arquitetura O(1) vs O(m)▫Quantidade de pinos fixa
•Consumo de lógica▫Consumo de somadores segue a lei
•Compromisso área / desempenho▫Datapath pode ser replicado para melhorar
performance – divisores de n
Resultados - desempenho
•Testadas 3 redes neurais▫2 classificação▫ 1 aproximação da função
samples topology Neurons Sw (ms) Hw (ms) Speed-up
Sinusoid 249 1-5-1 6 0.345 0.010137 34.03Iris 150 4-8-3-3 14 0.517 0.019463 26.56Iris 300 4-8-3-3 14 1.0 0.037963 26.34Iris 600 4-8-3-3 14 2.0 0.074963 26.67Semeion 1593 256-10-10 20 50.07 13.605 3.68Semeion2 1593 256-10-10 20 50.07 6.808 8.10Semeion3 1593 256-10-10 20 50.07 1.371 36.52
Resultados - área
Adders ALUTs Registers MemoryBits
DSPblocks
Sinusoid4 4591(12
%)5294(14%)
116405(2%) 8(2%)
Iris9 8782(23
%)9791(26%)
181901(3%) 12(3%)
Semeion12 11297(30
%)10967(29%)
521847(10%) 8(2%)
FPGA - EP3SL50F484C2
Perguntas!