A High performance full pipelined arquitecture of MLP Neural Networks in FPGA Antonyus Pyetro...

Preview:

Citation preview

A High performance full pipelined arquitecture of MLP Neural Networks in FPGAAntonyus Pyetroapaf@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?▫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!

Recommended