Title: | Implementação em fpga de redes neurais comprimidas via poda de neurônios |
Author: | Silvestri, Caio Turnes |
Abstract: |
A utilização de Redes Neurais para diversas aplicações está em fase de crescimento. Nesse contexto, modelos como Convolutional Neural Networks (CNNs) e Deep Neural Networks (DNNs) têm apresentado um custo computacional cada vez mais elevado. Dessa forma, é necessário utilizar técnicas como pruning, ou poda de neurônios, para reduzir as redes e garantir um desempenho semelhante ao original. A implementação de redes neurais em Field-Programmable Gate Array (FPGA) é recomendada devido à possibilidade de aproveitar o alto paralelismo presente tanto no FPGA quanto na rede neural. No entanto, pouco se discute sobre as implementações de redes obtidas a partir da aplicação de técnicas de pruning em FPGAs. Uma compressão teórica obtida durante o treinamento do modelo pode não se concretizar na implementação prática no FPGA. O objetivo principal deste Trabalho de Conclusão de Curso (TCC) é implementar a inferência de uma rede neural comprimida em FPGA e gerar uma discussão sobre os resultados obtidos e as possíveis limitações desse tipo de implementação. Assim, uma rede neural que modela a função sin(x) foi treinada em Python utilizando o Keras. Além disso, foi desenvolvida uma ferramenta de transcrição para converter o arquivo de pesos gerado pelo Keras em um arquivo Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL), permitindo a implementação da rede neural em FPGA de forma automática. Dessa maneira, foi possível realizar a comparação entre compressão e desempenho das versões completa e podada da rede neural quando implementadas em FPGA. Todos os códigos serão disponibilizados no GitHub. The use of Neural Networks for various applications is on the rise. In this context, models such as Convolutional Neural Networks (CNNs) and Deep Neural Networks (DNNs) have shown an increasingly high computational cost. Therefore, techniques such as pruning are necessary to reduce the networks while ensuring similar performance to the original. The implementation of neural networks in Field-Programmable Gate Array (FPGA) is recommended due to the possibility of leveraging the high parallelism present in both the FPGA and the neural network. However, little is discussed about the implementations of networks obtained through pruning techniques in FPGAs. Theoretical compression achieved during model training may not materialize in practical FPGA implementation. The main goal of this Course Completion Work is to implement the inference of a compressed neural network in FPGA and to generate a discussion about the results obtained and the potential limitations of this type of implementation. For this purpose, a neural network modeling the function sin(x) was trained in Python using Keras. Additionally, a transcription tool was developed to convert the weight file generated by Keras into a VHDL file, enabling the automatic implementation of the neural network in FPGA. This allowed for a comparison of the compression and performance of the complete and pruned versions of the neural network when implemented in FPGA. All code will be made available on GitHub. |
Description: | TCC (graduação) - Universidade Federal de Santa Catarina, Centro Tecnológico, Engenharia Eletrônica. |
URI: | https://repositorio.ufsc.br/handle/123456789/262290 |
Date: | 2024-12-13 |
Files | Size | Format | View | Description |
---|---|---|---|---|
TCC.pdf | 1.041Mb |
View/ |
TCC |