Глубокое обучение - раздел машинного обучения, сосредоточенный на использовании искусственных нейронных сетей - является одной из ключевых и самых быстро развивающихся областей науки и техники двадцать первого века. Решения, основанные на применении искусственных нейронных сетей, опережают традиционные алгоритмы компьютерного зрения [1] [2], распознавания речи, обработки естественного языка [3] и многих других областей.
С развитием Интернета вещей (IoT) возрос интерес к использованию искусственных нейронных сетей во встраиваемых системах (embedded systems) [4]. Стандартные решения на основе центральных процессоров (CPU) и графических процессоров (GPU), обычно используемые для вычисления искусственных нейронных сетей, не применимы в случае встраиваемых систем из-за жестких ограничений по потребляемой и выделяемой мощности и естественных ограничений на габариты используемых компонентов. Часто применяемые во встраиваемых системах 32-битные процессоры архитектуры ARM, как правило, не могут предоставить достаточно вычислительной мощности для использования искусственных нейронных сетей, что вынуждает изыскивать иные решения проблемы: полностью отказываться от использования нейронных сетей, использовать простые, но менее точные архитектуры нейронных сетей (например, SqueezeNet [5]), применять более производительные вычислительные устройства.
Структура искусственных нейронных сетей предполагает легкое распараллеливание вычислений. Этот факт обусловлен тем, что нейронные сети представляют собой композицию матричных умножений, матричных сверток и поэлементных нелинейных функций. Известно, что каждый элемент в результирующей матрице может быть вычислен отдельно от других, потому до некоторого предела с ростом числа потоков, в которых производится вычисления, время вычисления результата матричной операции сокращается. Программируемые логические интегральные схемы (ПЛИС), в силу своей внутренней структуры, могут быть эффективно применены при распараллеливании вычислений. Также эти интегральные микросхемы как правило имеют сравнительно небольшое энергопотребление и маленький размер, благодаря чему часто применяются во встраиваемых системах, в том числе и в составе систем на кристалле (SoC). В отличие от процессоров общего назначения и графических процессоров у ПЛИС нет вычислительных ядер, а потому максимальное число потоков, в которых производятся вычисления, ограничено лишь количеством логических элементов на кристалле. Эти факты спровоцировали рост интереса к применению ПЛИС для ускорения нейронных сетей.
Следует отметить, что глубокое обучение является сравнительно новой областью науки. К примеру, активное применение нейронных сетей для решения реальных задач науки и промышленности, связанных с компьютерным зрением, приходится на вторую декаду XXI века, и связано с работами, в которых были предложены архитектуры AlexNet [1], ResNet [6] и другие. Помимо этого, глубокое обучение является динамичной и постоянно развивающейся прикладной наукой: разработанные подходы, методы и архитектуры непрерывно появляются, совершенствуются и сменяются новыми. Указанные две особенности области приводят к тому, что в глубоком обучении, как и в области ускорения искусственных нейронных сетей, в настоящий момент не существует классических и общепризнанных учебников и монографий. Исследователи и разработчики, связанные с данной областью, в своей работе опираются главным образом на новые научные публикации, подкрепленные воспроизводимыми примерами кода.
Разработка аппаратной реализации искусственных нейронных сетей является сложной задачей, требующей комплексного подхода. Настоящая работа посвящена разработке аппаратной реализации полносвязного и сверточного слоев искусственных нейронных сетей на ПЛИС; сравнению реализации с существующими альтернативами.
В ходе выполнения работы было исследовано устройство полносвязных и сверточных нейронных сетей и способы ускорения их вычисления, изучено квантование параметров искусственных нейронных сетей, разработаны и реализованы полносвязный и сверточный слои искусственных нейронных сетей на базе программируемых логических интегральных схем.
Сравнение производительности разработанного полносвязного слоя с широко используемой программной реализацией из программного пакета PyTorch, запущенной на системе на кристалле Nvidia Jetson Nano, показало, что разработанная аппаратная реализация превосходит на порядок по скорости вычислений указанную систему на кристалле и может использоваться при ускорении искусственных нейронных сетей, применяемых во встраиваемых системах.
Сравнение производительности разработанного сверточного слоя с широко используемой программной реализацией из программного пакета PyTorch, запущенной на системе на кристалле Nvidia Jetson Nano, показало, что разработанная архитектура позволяет достичь сопоставимого времени выполнения свертки для входных матриц, высота и ширина которых не превышает 1024. Данный факт подтверждает наличие потенциала у исследуемого подхода и, с учетом соответствия ПЛИС всем требованиям для использования во встраиваемых системах, возможность его использования для встраиваемых решений.
1. Krizhevsky A., Sutskever I., Hinton G. ImageNet Classification with Deep Convolutional Neural Networks // Proceedings of the 25th International Conference on Neural Information Processing Systems. New York. 2012. Vol. 1. pp. 1097-1105.
2. Tan M., Le Q.V. EfficientNetV2: Smaller Models and Faster Training. 2021.
3. Devlin J., Chang M.W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2019.
4. Roth W., Schindler G., Zohrer M., Pfeifenberger L., Peharz R., Tschiatschek S., Froning H., Pernkopf F., Ghahramani Z. Resource-Efficient Neural Networks for Embedded Systems. Электронный ресурс.
5. Iandola F., Han S., Moskewicz M., Ashraf K., Dally W., Keutzer K. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and 0.5MB model size. 2016.
6. He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016. pp. 770-778.
7. Hochreiter S., Schmidhuber J. Long Short-term Memory // Neural computation, Vol. 9, Dec 1997. pp. 1735-1780.
8. Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A., Kaiser L., Polosukhin I. Attention Is All You Need // 31st Conference on Neural Information Processing Systems (NIPS 2017). Long Beach, CA. 2017.
9. Dumoulin V., Visin F. A guide to convolution arithmetic for deep learning. 2018.
10. Glorot X., Bordes A., Bengio Y. Deep Sparse Rectifier Neural Networks // Journal of Machine Learning Research. 2010. Vol. 15.
11. Nvidia Turing GPU Architecture. URL: https://images.nvidia.com/aem- dam/en-zz/Solutions/design-visualization/technologies/turing- architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf (дата обращения: 26.05.2021).
12. Qasim S.M., Telba A.A., AlMazroo A. FPGA Design and Implementation of Matrix Multiplier Architectures for Image and Signal Processing Applications // International Journal of Computer Science and Network Security, Vol. 10, No. 2, Feb 2010. pp. 168-176.
13. Jovanovic Z., Milutinovic V. FPGA accelerator for floating-point matrix multiplication // IET Computers & Digital Techniques, Vol. 6, No. 4, Jul 2012. pp. 249-256.
14. Qasim S.M., Abbasi S., AlMashary B. Hardware Realization of Matrix Multiplication using Field Programmable Gate Array // Masaum Journal of Computing, Vol. 1, Aug 2009. pp. 21-25.
15. Sanaullah A., Yang C., Alexeev Y., Yoshii K., Herbordt M. Real-Time Data Analysis for Medical Diagnosis Using FPGA-Accelerated Neural Networks // BMC Bioinformatics, Vol. 19, Dec 2018.