A High performance full pipelined arquitecture of MLP Neural Networks in FPGA Antonyus Pyetro apaf@cin.ufpe.br Orientadora: Edna Barros - ensb@cin.ufpe.br
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? Por que RNAs em FPGA? 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 Desvantagens 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
Fluxo de projeto de RNAs Projetista de IA Projeto CAD da RNA Implementação em SW Implementação em HW Projetista de IA ou de SW Manual Engenheiro de HW
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 Implementação em HW
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 n é normalmente pequeno (menos de 20) 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.03 Iris 150 4-8-3-3 14 0.517 0.019463 26.56 300 1.0 0.037963 26.34 600 2.0 0.074963 26.67 Semeion 1593 256-10-10 20 50.07 13.605 3.68 Semeion2 6.808 8.10 Semeion3 1.371 36.52
Resultados - área Adders ALUTs Registers Memory Bits DSP blocks Sinusoid 4 4591(12%) 5294(14%) 116405(2%) 8(2%) Iris 9 8782(23%) 9791(26%) 181901(3%) 12(3%) Semeion 12 11297(30%) 10967(29%) 521847(10%) FPGA - EP3SL50F484C2
Perguntas!