چندیسازی غیریکنواخت سه حالتی جهت بهبود تنکی و محاسبات شبکههای عصبی عمیق در کاربردهای نهفته
محورهای موضوعی : هوش مصنوعی و رباتیکحسنا معنوی مفرد 1 , سید علی انصارمحمدی 2 , مصطفی ارسالی صالحی نسب 3
1 - دانشجو
2 - دانشجو مقطع دکتری، دانشکده مهندسی برق و کامپیوتر، دانشگاه تهران، تهران، ایران
3 - دانشگاه تهران
کلید واژه: شبکههای عصبی عمیق, چندیسازی غیریکنواخت سه حالتی, شبکه عصبی تنک, هرس کردن, دستگاههای نهفته,
چکیده مقاله :
شبکههای عصبی عمیق به دلیل موفقیت در کاربردهای مختلف، به جذابیت فوقالعادهای دست یافتهاند. اما پیچیدگی محاسبات و حجم حافظه از موانع اصلی برای پیادهسازی آنها در بسیاری از دستگاههای نهفته تلقی میشود. از مهمترین روشهای بهینهسازی که در سالهای اخیر برای برطرف نمودن این موانع ارائه شده، میتوان به چندیسازی و هرس کردن اشاره کرد. یکی از روشهای معروف چندیسازی، استفاده از نمایش اعداد غیریکنواخت دو حالتی است که علاوه بر بهرهبردن از محاسبات بیتی، افت صحت شبکههای دو حالتی را در مقایسه با شبکههای دقت کامل کاهش میدهد. اما به دلیل نداشتن قابلیت نمایش عدد صفر در آنها، مزایای تنکی دادهها را از دست میدهند. از طرفی، شبکههای عصبی عمیق به صورت ذاتی تنک هستند و با تنک کردن پارامترهای شبکه عصبی عمیق، حجم دادهها در حافظه کاهش مییابد و همچنین به کمک روشهایی میتوان انجام محاسبات را تسریع کرد. در این مقاله میخواهیم هم از مزایای چندیسازی غیریکنواخت و هم از تنکی دادهها بهره ببریم. برای این منظور چندیسازی غیریکنواخت سه حالتی برای نمایش اعداد ارائه میدهیم که علاوه بر افزایش صحت شبکه نسبت به شبکه غیریکنواخت دو حالتی، قابلیت هرس کردن را به شبکه میدهد. سپس میزان تنکی در شبکه چندی شده را با استفاده از هرس کردن افزایش میدهیم. نتایج نشان میدهد که تسریع بالقوه شبکه ما در سطح بیت و کلمه میتواند به ترتیب 15 و 45 برابر نسبت به شبکه غیریکنواخت دو حالتی پایه افزایش یابد.
Deep neural networks (DNNs) have achieved great interest due to their success in various applications. However, the computation complexity and memory size are considered to be the main obstacles for implementing such models on embedded devices with limited memory and computational resources. Network compression techniques can overcome these challenges. Quantization and pruning methods are the most important compression techniques among them. One of the famous quantization methods in DNNs is the multi-level binary quantization, which not only exploits simple bit-wise logical operations, but also reduces the accuracy gap between binary neural networks and full precision DNNs. Since, multi-level binary can’t represent the zero value, this quantization does not take advantage of sparsity. On the other hand, it has been shown that DNNs are sparse, and by pruning the parameters of the DNNs, the amount of data storage in memory is reduced while computation speedup is also achieved. In this paper, we propose a pruning and quantization-aware training method for multi-level ternary quantization that takes advantage of both multi-level quantization and data sparsity. In addition to increasing the accuracy of the network compared to the binary multi-level networks, it gives the network the ability to be sparse. To save memory size and computation complexity, we increase the sparsity in the quantized network by pruning until the accuracy loss is negligible. The results show that the potential speedup of computation for our model at the bit and word-level sparsity can be increased by 15x and 45x compared to the basic multi-level binary networks.
[1] LeCun, Y., Y. Bengio, and G. Hinton, Deep learning. nature, 2015. 521(7553): p. 436-444.
[2] Zhang, D., et al. Lq-nets: Learned quantization for highly accurate and compact deep neural networks. in Proceedings of the European conference on computer vision (ECCV). 2018.
[3] Yang, L., Z. He, and D. Fan. Harmonious coexistence of structured weight pruning and ternarization for deep neural networks. in Proceedings of the AAAI Conference on Artificial Intelligence. 2020.
[4] Burrello, A., et al., Dory: Automatic end-to-end deployment of real-world dnns on low-cost iot mcus. IEEE Transactions on Computers, 2021. 70(8): p. 1253-1268.
[5] de Prado, M., et al., Automated Design Space Exploration for Optimized Deployment of DNN on Arm Cortex-A CPUs. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2020. 40(11): p. 2293-2305.
[6] Howard, A.G., et al., Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017.
[7] Iandola, F.N., et al., SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size. arXiv preprint arXiv:1602.07360, 2016.
[8] Courbariaux, M., Y. Bengio, and J.-P. David, Binaryconnect: Training deep neural networks with binary weights during propagations. Advances in neural information processing systems, 2015. 28.
[9] Cai, Z., et al. Deep learning with low precision by half-wave gaussian quantization. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[10] Li, F., B. Zhang, and B. Liu, Ternary weight networks. arXiv preprint arXiv:1605.04711, 2016.
[11] He, Y., X. Zhang, and J. Sun. Channel pruning for accelerating very deep neural networks. in Proceedings of the IEEE international conference on computer vision. 2017.
[12] Han, S., et al., Learning both weights and connections for efficient neural network. Advances in neural information processing systems, 2015. 28.
[13] Luo, J.-H., J. Wu, and W. Lin. Thinet: A filter level pruning method for deep neural network compression. in Proceedings of the IEEE international conference on computer vision. 2017.
[14] Maji, P., et al. Efficient winograd or cook-toom convolution kernel implementation on widely used mobile cpus. in 2019 2nd Workshop on Energy Efficient Machine Learning and Cognitive Computing for Embedded Applications (EMC2). 2019. IEEE.
[15] Andri, R., et al. YodaNN: An ultra-low power convolutional neural network accelerator based on binary weights. in 2016 IEEE Computer Society Annual Symposium on VLSI (ISVLSI). 2016. IEEE.
[16] Jacob, B., et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[17] Gysel, P., et al., Ristretto: A framework for empirical study of resource-efficient inference in convolutional neural networks. IEEE transactions on neural networks and learning systems, 2018. 29(11): p. 5784-5789.
[18] Sharma, H., et al. Bit fusion: Bit-level dynamically composable architecture for accelerating deep neural network. in 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). 2018. IEEE.
[19] Hubara, I., et al., Quantized neural networks: Training neural networks with low precision weights and activations. The Journal of Machine Learning Research, 2017. 18(1): p. 6869-6898.
[20] Li, Y. and F. Ren. BNN Pruning: Pruning binary neural network guided by weight flipping frequency. in 2020 21st International Symposium on Quality Electronic Design (ISQED). 2020. IEEE.
[21] Jin, C., H. Sun, and S. Kimura. Sparse ternary connect: Convolutional neural networks using ternarized weights with enhanced sparsity. in 2018 23rd Asia and South Pacific Design Automation Conference (ASP-DAC). 2018. IEEE.
[22] Zhu, C., et al., Trained ternary quantization. arXiv preprint arXiv:1612.01064, 2016.
[23] Chin, T.-W., et al. One weight bitwidth to rule them all. in European Conference on Computer Vision. 2020. Springer.
[24] Ghasemzadeh, M., M. Samragh, and F. Koushanfar. ReBNet: Residual binarized neural network. in 2018 IEEE 26th annual international symposium on field-programmable custom computing machines (FCCM). 2018. IEEE.
[25] Zhao, Y., et al., Focused quantization for sparse cnns. Advances in Neural Information Processing Systems, 2019. 32.
[26] Long, X., et al., Learning sparse convolutional neural network via quantization with low rank regularization. IEEE Access, 2019. 7: p. 51866-51876.
[27] Long, X., et al. Low Bit Neural Networks with Channel Sparsity and Sharing. in 2022 7th International Conference on Image, Vision and Computing (ICIVC). 2022. IEEE.
[28] Gadosey, P.K., Y. Li, and P.T. Yamak. On pruned, quantized and compact CNN architectures for vision applications: an empirical study. in Proceedings of the International Conference on Artificial Intelligence, Information Processing and Cloud Computing. 2019.
[29] Albericio, J., et al., Cnvlutin: Ineffectual-neuron-free deep neural network computing. ACM SIGARCH Computer Architecture News, 2016. 44(3): p. 1-13.
[30] Han, S., et al., EIE: Efficient inference engine on compressed deep neural network. ACM SIGARCH Computer Architecture News, 2016. 44(3): p. 243-254.
[31] Parashar, A., et al., SCNN: An accelerator for compressed-sparse convolutional neural networks. ACM SIGARCH computer architecture news, 2017. 45(2): p. 27-40.
[32] Zhang, S., et al. Cambricon-X: An accelerator for sparse neural networks. in 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). 2016. IEEE.
[33] Delmas, A., et al., DPRed: Making typical activation and weight values matter in deep learning computing. arXiv preprint arXiv:1804.06732, 2018.
[34] Aimar, A., et al., NullHop: A flexible convolutional neural network accelerator based on sparse representations of feature maps. IEEE transactions on neural networks and learning systems, 2018. 30(3): p. 644-656.
[35] Li, J., et al., SqueezeFlow: A sparse CNN accelerator exploiting concise convolution rules. IEEE Transactions on Computers, 2019. 68(11): p. 1663-1677.
[36] Albericio, J., et al. Bit-pragmatic deep neural network computing. in Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture. 2017.
[37] Sharify, S., et al. Laconic deep learning inference acceleration. in 2019 ACM/IEEE 46th Annual International Symposium on Computer Architecture (ISCA). 2019. IEEE.
[38] 38. Chen, Y.-H., et al., Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks. IEEE journal of solid-state circuits, 2016. 52(1): p. 127-138.
[39] Sandler, M., et al. Mobilenetv2: Inverted residuals and linear bottlenecks. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[40] Zhang, X., et al. Shufflenet: An extremely efficient convolutional neural network for mobile devices. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[41] Tan, M., et al. Mnasnet: Platform-aware neural architecture search for mobile. in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
[42] Wu, B., et al. Fbnet: Hardware-aware efficient convnet design via differentiable neural architecture search. in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
[43] Elsken, T., J.H. Metzen, and F. Hutter, Efficient multi-objective neural architecture search via lamarckian evolution. arXiv preprint arXiv:1804.09081, 2018.
[44] Rastegari, M., et al. Xnor-net: Imagenet classification using binary convolutional neural networks. in European conference on computer vision. 2016. Springer.
[45] Zhang, J., F. Franchetti, and T.M. Low. High performance zero-memory overhead direct convolutions. in International Conference on Machine Learning. 2018. PMLR.
[46] Lavin, A. and S. Gray. Fast algorithms for convolutional neural networks. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[47] De Prado, M., N. Pazos, and L. Benini. Learning to infer: RL-based search for DNN primitive selection on Heterogeneous Embedded Systems. in 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE). 2019. IEEE.
[48] Rovder, S., J. Cano, and M. O’Boyle, Optimising convolutional neural networks inference on low-powered GPUs. 2019.
[49] Lin, X., C. Zhao, and W. Pan, Towards accurate binary convolutional neural network. Advances in neural information processing systems, 2017. 30.
[50] Gholami, A., et al., A survey of quantization methods for efficient neural network inference. arXiv preprint arXiv:2103.13630, 2021.
[51] Hawks, B., et al., Ps and qs: Quantization-aware pruning for efficient low latency neural network inference. Frontiers in Artificial Intelligence, 2021. 4: p. 676564.
[52] Hubara, I., et al., Binarized neural networks. Advances in neural information processing systems, 2016. 29.
Journal of Information and
Communication Technology
Volume 16, Issue 59-60, Spring and Summer 2024, pp. 125-143
Multi-Level Ternary Quantization for Improving Sparsity and Computation in Embedded Deep Neural Networks
Hosna Manavi Mofrad1, Seyed Ali Ansarmohammadi2, Mostafa Ersali Salehi Nasab31
1 Electrical and Computer Engineering, University of Tehran, Tehran, Iran
2 Electrical and Computer Engineering, University of Tehran, Tehran, Iran
3 Electrical and Computer Engineering, University of Tehran, Tehran, Iran
Received: 03 January 2023, Revised: 15 February 2023, Accepted: 25 May 2023
Paper type: Research
Abstract
Deep neural networks (DNNs) have achieved great interest due to their success in various applications. However, the computation complexity and memory size are considered to be the main obstacles for implementing such models on embedded devices with limited memory and computational resources. Network compression techniques can overcome these challenges. Quantization and pruning methods are the most important compression techniques among them. One of the famous quantization methods in DNNs is the multi-level binary quantization, which not only exploits simple bit-wise logical operations, but also reduces the accuracy gap between binary neural networks and full precision DNNs. Since, multi-level binary can’t represent the zero value, this quantization does not take advantage of sparsity. On the other hand, it has been shown that DNNs are sparse, and by pruning the parameters of the DNNs, the amount of data storage in memory is reduced while computation speedup is also achieved. In this paper, we propose a pruning and quantization-aware training method for multi-level ternary quantization that takes advantage of both multi-level quantization and data sparsity. In addition to increasing the accuracy of the network compared to the binary multi-level networks, it gives the network the ability to be sparse. To save memory size and computation complexity, we increase the sparsity in the quantized network by pruning until the accuracy loss is negligible. The results show that the potential speedup of computation for our model at the bit and word-level sparsity can be increased by 15x and 45x compared to the basic multi-level binary networks.
Keywords: Deep Neural Networks, Multi-Level Ternary Quantization, Sparse Neural Network, Pruning, Embedded Devices.
چندیسازی غیریکنواخت سه حالتی جهت بهبود تنکی و محاسبات شبکههای عصبی عمیق در کاربردهای نهفته
حسنا معنوی مفرد1، سید علی انصارمحمدی 2، مصطفی ارسالی صالحی نسب 32
1 دانشجو مقطع ارشد، دانشکده مهندسی برق و کامپیوتر، دانشکدگان فنی، دانشگاه تهران، تهران، ایران
2 دانشجو مقطع دکتری، دانشکده مهندسی برق و کامپیوتر، دانشکدگان فنی، دانشگاه تهران، تهران، ایران
3 استادیار، دانشکده مهندسي برق و کامپیوتر، دانشکدگان فنی، دانشگاه تهران، تهران، ایران
تاریخ دریافت: 13/10/1401 تاریخ بازبینی: 26/11/1401 تاریخ پذیرش: 04/03/1402
نوع مقاله: پژوهشی
چکيده
شبکههای عصبی عمیق به دلیل موفقیت در کاربردهای مختلف، به جذابیت فوقالعادهای دست یافتهاند. اما پیچیدگی محاسبات و حجم حافظه از موانع اصلی برای پیادهسازی آنها در بسیاری از دستگاههای نهفته تلقی میشود. از مهمترین روشهای بهینهسازی که در سالهای اخیر برای برطرف نمودن این موانع ارائه شده، میتوان به چندیسازی و هرس کردن اشاره کرد. یکی از روشهای معروف چندیسازی، استفاده از نمایش اعداد غیریکنواخت دو حالتی است که علاوه بر بهرهبردن از محاسبات بیتی، افت صحت شبکههای دو حالتی را در مقایسه با شبکههای دقت کامل کاهش میدهد. اما به دلیل نداشتن قابلیت نمایش عدد صفر در آنها، مزایای تنکی دادهها را از دست میدهند. از طرفی، شبکههای عصبی عمیق به صورت ذاتی تنک هستند و با تنک کردن پارامترهای شبکه عصبی عمیق، حجم دادهها در حافظه کاهش مییابد و همچنین به کمک روشهایی میتوان انجام محاسبات را تسریع کرد. در این مقاله میخواهیم هم از مزایای چندیسازی غیریکنواخت و هم از تنکی دادهها بهره ببریم. برای این منظور چندیسازی غیریکنواخت سه حالتی برای نمایش اعداد ارائه میدهیم که علاوه بر افزایش صحت شبکه نسبت به شبکه غیریکنواخت دو حالتی، قابلیت هرس کردن را به شبکه میدهد. سپس میزان تنکی در شبکه چندی شده را با استفاده از هرس کردن افزایش میدهیم. نتایج نشان میدهد که تسریع بالقوه شبکه ما در سطح بیت و کلمه میتواند به ترتیب 15 و 45 برابر نسبت به شبکه غیریکنواخت دو حالتی پایه افزایش یابد.
کلیدواژگان: شبکههای عصبی عمیق، چندیسازی غیریکنواخت سه حالتی، شبکه عصبی تنک، هرس کردن، دستگاههای نهفته.
[1] * Corresponding Author’s email: mersali@ut.ac.ir
[2] * رایانامة نويسنده مسؤول: mersali@ut.ac.ir
1- مقدمه
در سالهای اخیر تحقیقات درزمینه هوش مصنوعی، بهویژه یادگیری ماشین، بهطور چشمگیری افزایش پیداکرده است.یادگیری ماشین1 از زیرمجموعههای هوش مصنوعی2 است که هدف آن هوشمند کردن رایانههاست بدون اینکه مستقیماً به آنها یاد بدهیم چطور رفتار کنند. یادگیری ماشین شامل الگوریتمهای متعددی است که پرکاربردترین آنها الگوریتمهای برگرفته از مغز انسان هستند؛ یادگیری عمیق، در این دسته قرار دارند، در بیشتر روشهای یادگیری عمیق از معماری شبکه عصبی مصنوعی3 استفاده میشود، به همین دلیل مدلهای یادگیری عمیق اغلب تحت عنوان شبکههای عصبی عمیق شناخته میشوند. اصطلاح عمیق معمولاً به تعداد لایههای پنهان در شبکه عصبی اشاره دارد. شبکههای عصبی سنتی فقط شامل 2-3 لایه مخفی هستند، درحالیکه شبکههای عمیق میتوانند تا 150 لایه داشته باشند، یکی از رایجترین انواع شبکههای عصبی عمیق، تحت عنوان شبکههای عصبی کانولوشنی4 شناخته میشود. این شبکهها تواناییهای خارقالعادهای در کاربردهای پیچیده مانند طبقهبندی تصویر5، تشخیص اشیا6 و قطعهبندی معنایی7 تصاویر نشان دادهاند [1].
اگرچه طراحیهای اخیر شبکههای عصبی کانولوشنی با میلیاردها پارامتر قابلیتهایی در سطح فرا انسانی دارند، بااینحال، اندازه بزرگ مدل و هزینه بالای محاسبات برای بسیاری از برنامهها کاربردی بهویژه با هدف پیادهسازی بر روی دستگاههای نهفته که محدودیت حافظه، منابع محاسباتی و توان دارند، همچنان مانع بزرگی محسوب میشود [2]. بهطور مثال شبکه vgg16 با مجموعه داده ImageNet به 552 مگابایت پارامتر و 30.8 گیگافلاپس محاسبات برای هر تصویر نیاز دارد. این میزان از حافظه و محاسبات برای گسترش دادن شبکههای عصبی عمیق روی دستگاههای با محدودیت منابع دشوار است [3]. در حال حاضر، توجه به سمت گسترش دادن شبکههای عصبی عمیق روی دستگاههای نهفته8 جلب شده است [4].
با توجه به محدودیتهای دستگاههای نهفته، لازم است که شبکههای عصبی از نظر حافظهی مصرفی و حجم محاسبات فشرده شوند تا بتوانند روی این دستگاهها گسترش یابند [5]. سطوح بهینهسازی شبکههای عصبی عمیق جهت کاهش حافظه و حجم محاسبات شامل موارد زیر است: 1) طراحی شبکههای بهینه مانند MobileNets [6]، SqueezeNet [7]، 2) استفاده از روشهای فشردهسازی شامل چندیسازی9 [8-10] و هرس کردن10 [11-13]، 3) بهینهسازی در سطح الگوریتم برای سرعت بخشیدن به محاسبات مانند ضرب عمومی ماتریس11 یا روش winogard [14] و 4) استفاده از سختافزار اختصاصی برای تسریع جریان دادهها و انجام محاسبات بهصورت موازی [15].
چندیسازی و هرس کردن دو روش مؤثر در فشردهسازی شبکههای عصبی عمیق است. درروش چندیسازی سعی بر این است که پارامترها را (وزنها12 و فعالسازها13) که در حالت عادی بهصورت ممیز شناور 32 بیتی هستند، با یک سیستم نمایش اعداد با تعداد بیت کمتر نشان دهند تا منجر به هزینه محاسباتی و مصرف حافظه کمتر شود. به عنوان اولین تلاشها در این زمینه، سیستم اعداد ممیز ثابت چندی شده [16-18] مطرح شد که سعی میکرد شبکه را با تعداد بیت کمتر طراحی کند و برای کاهش صحت از دست رفته، چندیسازی همراه با یادگیری شبکه را ارایه داده اند. چالشی که در این سیستم اعداد حتی بعد از چندیسازی وجود دارد این است که هزینه محاسبات و میزان حافظه مصرفی هنوز قابلتوجه است.
برای برطرف کردن این مسئله سعی شد که دقت اعداد با شدت بیشتری کاهش پیدا کند به این صورت که وزنها و فعالسازها با حتی یک بیت نمایش داده شوند. به این مدل چندیسازی، دو حالتی14 [9, 19] میگویند که شبکههای عصبی دو حالتی را ایجاد میکنند. در چندیسازی دو حالتی پارامترهای شبکه با یک مقدار 1 یا 1- تخمین زده میشوند که با یک بیت قابل نمایش است. درنتیجه حافظه لازم برای ذخیرهسازی پارامترهای مدل و مقادیر میانی بهشدت کاهش مییابد. از طرفی در شبکههای عصبی دو حالتی، یک عملیات کانولوشن را میتوان با روش Xnor_PopCount که شامل عملیات بیتیXnor و عملیات ساده شمارش بیت است، انجام داد. به دلیل استفاده از عملیات ساده بیتی، در شبکههای عصبی دو حالتی پیچیدگی محاسبات نیز کاهش خواهد یافت. اما چالشی که در این شبکههای دو حالتی وجود دارد افت صحت15 است [20]. همین امر باعث ظهور روش دیگری از چندیسازی به نام سهحالتی16 [10, 21, 22] شد که در این حالت هر پارامتر را با (1و0و1-) نشان میدهیم. در مقایسه با نمایش دو حالتی که برای نمایش هر پارامتر یک بیت کافی بود، در این نمایش برای نمایش هر یک از مقادیر (1و0و1-) به 2 بیت نیاز داریم. دلیل اصلی پیدایش این نوع چندیسازی پر کردن فاصله صحت بین مدل دو حالتی و 32 بیت ممیز شناور بود. هرچند صحت شبکههای عصبی عمیق سه حالتی از دو حالتی بهتر شد ولی با وجود دو برابر شدن حجم پارامترهای شبکه هنوز با صحت شبکههای 32 بیتی ممیز شناور فاصلهی قابل توجهای داشتند.
مقالههای زیادی جهت جبران صحت از دست رفتهی شبکههای عصبی عمیق دو حالتی چاپ شدهاست، از جمله: روشهای مبتنی بر افزایش ابعاد عرضی شبکه (افزایش تعداد فیلترهای هر لایه) [23]. هرچند این روشها نتایج قابل ملاحظهای در جهت بهبود صحت شبکه داشتهاند ولی در این روشها کماکان حجم بالای پارامترها آزاردهنده هست و همچنین نیاز است تا شبکه با فراپارامترهای جدید طراحی و آموزش داده شود. برای برطرف کردن فاصله صحت بین شبکه دو حالتی و شبکه اصلی (32بیتی ممیز شناور) روش غیریکنواخت دو حالتی [2, 24] ارائه گردید که در این حالت بهجای نمایش یک عدد 32 بیتی ممیز شناور، از چند رقم دو حالتی (دو حالتی 2، 3 و ... رقمی) برای نمایش استفاده میشود. با توجه به غیریکنواخت بودن سطوح چندیساز در این روش و همچنین استفاده از چند رقم دو حالتی، میتوان از این روش به عنوان چندیساز غیریکنواخت چندرقمی دو حالتی نام برد ولی به اختصار در این مقاله از چندیساز غیریکنواخت دو حالتی استفاده شده است. مقالههای [2, 24] نشان دادهاند که با دو حالتی کردن وزنها و فعالسازها به 3 یا 4 رقم، صحت شبکه قابل قبول و نزدیک به صحت شبکه در حالت دقت کامل است. لذا با این نوع چندیسازی هم از خواص عملیات بیتی در محاسبات دو حالتی استفاده شدهاست و هم افت صحت شبکه قابل چشم پوشی هست.
روش موثر دیگر در فشردهسازی شبکههای عصبی کانولوشنی، روش هرس کردن پارامترهای صفر شبکه است. درواقع با هرس کردن، پارامترهای نزدیک صفر که تأثیر خیلی کمی در صحت شبکه دارند، حذف میشوند. در این حالت تعداد پارامترهای شبکه موردنظر کمتر میشود، بنابراین میزان حافظه مورد نیاز کاهش پیدا میکند. از طرفی به این دلیل که ضرب صفر در هر عدد، صفر میشود بنابراین میتوان از این نوع محاسبات در شبکه کانولوشنی جلوگیری کرد که این روش باعث کم شدن پیچیدگی محاسبات نیز خواهد شد [25-28]. برای فشردهسازی حداکثری شبکه از آموزش شبکه همگام با چندیسازی و هرس کردن بهره برده اند.
یکی از مزایای تنکی در وزنها، شانس استفاده از کدگذاری جهت فشردهسازی وزنها در حافظهی خارجی تراشه هست که هر چه تنکی بیشتر باشد تاثیر عملکرد فشردهسازی بیشتر میشود و از هزینههای دسترسی بالای انتقال داده از حافظههای خارجی به داخل تراشه میکاهد. الگوریتمهای مختلفی برای فشردهسازی وزنهای غیرصفر وجود دارد که چهار مورد از مهمترین آنها به نام فشردهسازی سطری17 [29]، فشردهسازی ستونی18 [30, 31]، فشردهسازی با توجه به ابعاد ورودی19 [32-34] و کدبندی طول اجرا20[35] هستند.
در این مقاله قصد داریم روش چندیسازیی ارایه دهیم که از مزایای تنکی بهره ببرد و همزمان بتوانیم از تنکی ذاتی شبکههای عصبی جهت فشردهسازی حافظه و جلوگیری از محاسبات بیتاثیر استفاده کنیم و تا حد امکان از کاهش صحت شبکه جلوگیری کنیم. لذا در مرحلهی اول، با استفاده از چندیسازی غیریکنواخت سه حالتی امکان بهبود صحت شبکه و نمایش مقادیر صفر را ارایه میکنیم و سپس با استفاده از اعمال تنکی در پارامترهای وزنهای شبکه همگام با چندیسازی و عملیات آموزش شبکه، حجم پارامترها و حجم محاسبات در اجرای لایههای شبکه را کاهش میدهیم. در پایان با ارائه یک معماری پایه جهت مقایسه عملیات چندیسازی غیریکنواخت دو حالتی با سه حالتی و با امکان حذف عملیات غیرموثر ضرب، حداکثر تسریع بالقوه محاسبات با استفاده از سیستم نمایش اعداد غیریکنواخت سه حالتی پیشنهادی را در سطح کلمه و بیت نسبت به دو حالتی نشان خواهیم داد.
نوآوریهای این مقاله به شرح زیر است:
· استفاده از چندیسازی غیریکنواخت سه حالتی برای رفع مشکل تنکی در شبکههای عصبی عمیق دو حالتی
· آموزش شبکه غیریکنواخت سه حالتی با آگاهی همزمان از چندیسازی و هرس
· افزایش تنکی وزنها در سطح کلمه به کمک هرس کردن با حفظ صحت در شبکه غیریکنواخت سه حالتی
· جبران سربار حافظه ناشی از روش چندیسازی غیریکنواخت سه حالتی به کمک فشردهسازی وزنهای تنکشده
· ارائه معماری مناسب برای حذف عملیات غیر موثر ضرب در مقدار صفر جهت کاهش حجم محاسبات شبکههای غیریکنواخت سه حالتی
ساختار این مقاله به شرح زیر سازماندهیشده است: در بخش دو به انگیزهای که باعث شد این تحقیق انجام شود خواهیم پرداخت و در بخش سوم به بیان کارهای که در پژوهشهای پیشین در این حوزه انجام شده میپردازیم. ایده مقاله در بخش چهارم که شامل نحوهی چندیسازی شبکه و تنک کردن شبکه است ارایه میشود. همچنین نحوهی فشردهسازی حافظه و کاهش محاسبات با استفاده از واحدهای محاسباتی پایه معرفی میشود. در نهایت نتایج را در بخش پنجم بررسی و تحلیل میکنیم و در انتها نیز نتیجهگیری و مراجع به ترتیب در بخشهای ششم و هفتم قرارگرفته است.
2- انگیزه پژوهش
یکی از روشهای رایج برای کاهش محاسبات شبکههای عصبی عمیق در راستای قابل پیادهسازی شدن آنها برای یک دستگاه نهفته، استفاده از تنکی پارامترهای شبکه است. به این معنی که مقادیر خیلی کوچک را به صفر تقریب میزنند و به این ترتیب سعی میکنند تعداد پارامترهای با مقدار صفر را افزایش دهند. انگیزهی اصلی از ایجاد تنکی در شبکهها، درواقع امکان حذف عملیات ضرب در صفر در محاسبات شبکه است. این مقادیر صفر میتوانند برای وزنها یا ورودیها و یا خروجیهای یک نرون باشند که معمولاً به آن تنکی در سطح کلمه میگویند. علاوه بر سطح کلمه، در سطح بیت، حذف عملیات بی اثر برای بیتهای صفر هم میتواند سبب کاهش عملیات محاسباتی شود که به آن تنکی در سطح بیت گفته میشود. مقالههای [36, 37] برای تنکی در سطح بیت 5 الی 9 برابر بهبود در سرعت و کارایی انرژی را گزارش کردهاند. درواقع با توجه به این شواهد، امید داریم که با تنک کردن شبکه به محدودیتهای ناشی از پیادهسازی شبکههای عصبی کانولوشنی روی دستگاههای نهفته غلبه کنیم.
در کارهای پیشین که در زمینه تنکی شبکههای عصبی انجامشده، نتایج بهدستآمده حاکی از آن است که شبکههای عصبی چه در حالت ممیز شناور چه در حالتی که بهصورت ممیز ثابت چندی شدهاند، حاوی تعداد زیادی پارامتر صفر و یا نزدیک به صفر در سطح کلمه و بیت (هم در وزنها و هم در فعالسازها) هستند [29, 36, 37]. درواقع شبکههای عصبی کانولوشنی بهصورت ذاتی شبکههایی تنک هستند. در چندیسازی ممیز ثابت با کمتر از 8 بیت که بهعنوان یکی از مرسومترین و محبوبترین چندیسازیها مطرحشده، مقالههای [36-38] نشان دادهاند که با از دست دادن مقداری قابلچشمپوشی از صحت، وزنهای شبکههای عصبی عمیق میتوانند، تا 70 درصد در سطح کلمه و تا 92 درصد در سطح بیت صفر داشته باشند. این خود انگیزهای شده است تا از این تنکی شبکهها جهت کاهش حجم پارامترها در حافظههای خارجی تراشه و همچنین کاهش محاسبات استفاده کنیم.
از طرف دیگر روشهای چندیسازی دو حالتی مطرح شدند تا پارامترها را فقط با دو مقدار 1- و یا 1 با تنها یک بیت نمایش دهند و باعث کاهش هرچه بیشتر حجم دادهها در حافظه و ساده کردن عملیات کانولوشنی با استفاده از عملیات بیتی و شمارش شوند. ولی به دلیل اینکه فاصله بین صحت شبکههای دو حالتی نسبت به شبکههای ممیز ثابت زیاد است شبکههای غیریکنواخت دو حالتی مطرح شدند. این شبکهها علاوه بر در نظر گرفتن سطوح چندیسازی غیریکنواخت، با استفاده از افزایش سطوح چندیسازی باعث افزایش صحت شبکهی چندی شدهاند. بهعنوانمثال برای مجموعه دادهی ImageNet مقالهی [2] با استفاده از 8 یا 16 سطح چندی غیریکنواخت به صحت نزدیک به شبکه با دقت کامل رسیده است که برای نمایش این 8 یا 16 سطح چندی به 3 یا 4 بیت در سختافزار نیاز هست.
همانطور که پیشتر اشاره شد شبکههای کانولوشنی بهطور ذاتی قابلیت تنکی زیادی در پارامترهای وزن دارند. در مقابل شبکههای چندی دو حالتی غیریکنواخت در کنار بهره بردن از محاسبات سبک بیتی و همچنین جبران صحت ازدسترفته و نزدیک شدن به صحت شبکه با دقت کامل، شبکههای محبوب و مناسبی برای دستگاههای نهفته میتوانند باشند. اما در شبکههای چندی دو حالتی غیریکنواخت چون برای نمایش هر رقم تنها از (1و1-) استفاده میشود، عدد صفر قابلنمایش نیست. بنابراین در شبکههای غیریکنواخت دو حالتی نمیتوان از مزایای تنکی در سطح کلمه برای کاهش محاسبات و حافظه بهره برد.
ایده این مقاله از همین نکته به ذهن ما رسید، که روش چندیسازیی ارائه کنیم که علاوه بر بهره بردن از محاسن محاسبات دو حالتی جهت کاهش حافظه و انرژی، امکان نشان دادن اعداد صفر را داشته باشد تا بتوانیم از مزایای تنکی شبکههای عصبی استفاده کنیم و تا جایی که صحت شبکه آسیب نبیند بتوانیم شبکه را هرس کنیم. بنابراین روش استفاده از سیستم اعداد غیریکنواخت سه حالتی جهت چندیسازی شبکه را ارائه خواهیم داد که در بخش ایده مقاله به تفضیل درباره آن صحبت خواهیم کرد.
3- کارهای پیشین
با توجه به محدودیتهای دستگاههای نهفته، یعنی قدرت محاسباتی محدود، ظرفیت کمحافظه و محدودیت مصرف توان، چندین هدف برای بهینهسازی وجود دارد. برای مثال، ممکن است کسی تصمیم بگیرد که صحت شبکه عصبی را قربانی کند تا مصرف حافظه، یا میزان پیچیدگی محاسبات را کاهش دهد. بسته به هدف بهینهسازی، شبکههای عصبی طیف وسیعی از فرصتهای بهینهسازی را ارائه میدهند. همانطور که در شکل 1 نشان دادهشده است [5]، این فرصتها را به چند دسته کلی تقسیم میکنیم:
شکل 1. سطوح بهینهسازی شبکههای عصبی
سطح طراحی شبکه: بهینهسازی در سطح طراحی شبکه مجموعهای از روشهایی است که ساختار شبکه را قبل یا در حین آموزش برای بهبود تأخیر یا هزینه استنتاج شبکه تنظیم میکند. نمونههایی از این موارد MobileNet-V1/V2 [39]، SqueezeNet [7] و ShuffleNet [40] هستند که به صورت دستی طراحی شدهاند. مجموعهای از کارهای جدیدتر، جستجوی معماری عصبی21 را بهعنوان روشی برای کاهش دخالت انسان برای طراحی چنین معماریهای پیچیده و زمانبری معرفی کردند. نمونههایی از این موارد MNASnet [41]، FbNet [42] و Lemonade [43] هستند که از NAS آگاه از سختافزار از طریق یادگیری تقویتی، الگوریتمهای تکاملی یا روشهای مبتنی بر گرادیان برای کشف ساختارهای شبکه عصبی با دقت خوب و عملکرد بالا استفاده کردند.
سطح بهبود شبکه: روشهای بهبود در سطح شبکههای عصبی بر اصلاح نحوه نمایش شبکه با بهره بردن از انواع دادههای با دقت پایینتر (چندیسازی) و یا استفاده از تنکی وزنها و فعالسازها (هرسکردن) مبتنی هستند. در بهبود شبکه، اغلب برای اینکه به کاهش صحت ناشی از اعمال این روشها غلبه کنند نیاز هست که شبکه را دوباره آموزش دهند یا از همزمانی آموزش شبکه با توجه به چندیسازی یا تنکی شبکه استفاده شود.
چندیسازی پارامترهای شبکه یک روش برای فشردهسازی حافظه شبکههای عصبی عمیق، کاهش هزینه سختافزار و هزینه محاسبات با استفاده از عملیات منطقی با پهنای بیت کم است. وقتیکه وزنها و فعالسازها بهدرستی كوانتیزه شوند، میتوان عملیات کانولوشن را بهطور مؤثر توسط عملگرهای بیتی محاسبه كرد [2, 44]. این روش با رویکردهایی مانند شبکههای عصبی دو حالتی [2]، شبکههای سه حالتی [10] معرفیشد که بین صحت شبکههای عصبی عمیق چندی شده و نمونههای کاملاً دقیق آنها فاصله وجود داشت، خصوصاً وقتی شبکه با پهنای بیت بسیار کم مانند یک بیت یا دو بیت چندی شود. برای رفع این شکاف Lqnet [2] و RebNet [24] چندیسازی غیریکنواخت دو حالتی برای وزنها و فعالسازها پیشنهاد دادند که صحت شبکه آنها با صحت شبکه ممیز شناور تقریباً برابر است.
علاوه بر روشهای چندیسازی، بهره بردن از تنکی بیتهای وزن و فعالساز و جلوگیری از عملیات بیاثر، یک روش کارآمد برای کاهش هزینه محاسبات و سربار حافظه است. اساساً، در شبکههای عصبی عمیق دو سطح تنکی وجود دارد: سطح کلمه و سطح بیت. اکثر شتابدهندههای مبتنی بر تنکی که اخیراً پیشنهادشدهاند، تنکی سطح کلمه را هدف قرار دادهاند که مبتنی به از بین بردن ضریبهای صفر عملوند و ذخیره وزنها بهصورت فشرده هستند. چندین معماری برای بهره بردن از تنک بودن بیتها در داخل هر کلمه پیشنهادشده است، ازجمله صرفهجویی در انرژی لازم برای محاسبات، برای مقادیر صفر فعالسازها [29, 30]، یا وزنها [32] یا هر دو [31, 38]. لاکونیک [37] تنکی سطح بیت را هدف قرار داده و یک شتابدهنده سختافزاری برای بهره بردن از تنکی در وزن و فعالساز پیشنهاد داده است. برای این منظور، Laconic هر ورودی را به فهرستی از توانهای دو علامتدار یا عباراتی با رمزگذاری بوث تبدیل میکند و سپس عبارات را بهصورت سریال ضرب و جمع میکند. هرچند هر عملیات ضرب وزن در فعالساز به سیکلهای متعددی نیاز دارد، اما عملکرد کلی این روش بهتر است. درحالیکه معماریهای قبلی عمدتاً بر بهره بردن از تنکی در پارامترهای با دقت بالا (ممیز شناور) یا پهنای بیت بالا متمرکز بودند، این کار به دنبال یک شتابدهنده است که بهطور مؤثر هم ازنظر تنکی در سطح کلمه و هم در سطح بیت، هر دو پارامتر، وزن و فعالساز را کنترل کند که منجر به عملیات منطقی ساده با پهنای بیت پایین شده است.
سطح بهبود الگوریتم: در این بخش روی بهینهسازی عملیات هر لایه تمرکز میشود بهعنوانمثال روشهای مختلفی برای انجام کانولوشن وجود دارد یکی از آنها روش مستقیم22 است در این روش کانولوشن را با 6 حلقه تودرتو پیادهسازی میکنند [45]. روش winogard [46] یک روش دیگر برای بهبود الگوریتمی بهمنظور کاهش هزینههای محاسباتی عملیات کانولوشن در شبکههای عصبی کانولوشنی است. این الگوریتم با تبدیل عملیات سنگین و پیچیده مانند عملیات ضرب به چندین عملیات ساده مانند جمع باعث کاهش پیچیدگی کلی عملیات کانولوشن میشود. پیادهسازی این الگوریتمها برای سیستمهای نهفته با توان کم مناسب است، زیرا منابع و بودجه توان بسیار محدود است. در مقابل، آنها هزینه بیشتری در مصرف حافظه و دقت دارند [14].
سطح طراحی اولیه: در این قسمت به پایینترین سطح بهبود نرمافزاری یک شبکه عصبی خواهیم پرداخت. بهینهسازی در این سطح میتواند از تغییر چیدمان داده در حافظه [47] ، تغییر نحوه استفاده از دستورالعملهای برداری برای پردازش لایهها [48] تا نوشتن پیادهسازی اسمبلی هستهها برای رسیدن به عملکرد بهتر پردازندههای خاص متفاوت باشد.
با هدف بهره بردن از مزایای تنکی و چندیکردن در شبکههای عصبی عمیق، در این مقاله میخواهیم برای اولین بار یک روش چندیسازی غیریکنواخت سه حالتی همراه با تنکی را ارائه دهیم. با استفاده از این روش علاوه بر حفظ صحت شبکه از محاسبات سبک بیتی به همراه حذف عملیات ضرب بی تاثیر حداکثر بهره را جهت فشردهسازی شبکه میبریم. انتظار داریم کارایی این شبکه نسبت به حالتهایی که تنها از روش چندیکردن و یا فقط روش تنکی استفاده میکنند بهتر باشد. درواقع انتظار میرود مصرف حافظه، پیچیدگی عملیات و انرژی و توان مصرفی نسبت به حالتی که تنها از یکی از روشها استفاده میکند بیشتر کاهش یابد و شبکه ایجادشده به محدودیتهای موجود در دستگاههای نهفته غلبه کند.
4- چندیسازی غیریکنواخت سه حالتی
در این بخش از مقاله در ابتدا مقدمهای از ساختار لایههای کانولوشنی دو حالتی و مبانی عملکرد چندیسازی جهت کاهش تعداد بیت موردنیاز برای پارامترهای شبکه بیان میشود. در ادامه نمایش اعداد دو حالتی و غیریکنواخت دو حالتی و نحوهی محاسبات ضرب در آن بررسی میشود. سپس در بخش بعدی سیستم نمایش اعداد غیریکنواخت سه حالتی پیشنهادی ارائه میشود و در مرحله بعد عملیات چندیسازی و تنکی درحین یادگیری شبکه انجام میشود تا با استفاده از حداقل بیت و حداکثر تنکی در پارامترهای وزن، حداقل افت را در صحت شبکه داشته باشیم. در گام بعدی جهت کاهش حجم موردنیاز برای ذخیرهسازی پارامترهای تنک شدهی شبکه در حافظهی خارجی تراشه، الگوریتمهای فشردهسازی مورد بررسی قرار میگیرد. در پایان، معماری واحدهای محاسباتی پایهای برای نمایش اعداد سه حالتی و دو حالتی ارائهشده است تا بتوانیم نتایج حاصل از روشهای چندیسازی به همراه تنکی در سیستم نمایش اعداد دو حالتی و سه حالتی غیریکنواخت مختلف را در سطح نتایج سختافزاری موردبررسی قرار دهیم.
4-1- ادبیات و مفاهیم پایهای
4-1-1- شبکههای عصبی عمیق دو حالتی
همانطور که در بخش مقدمه نیز بیان شد، یکی از شبکههای عصبی عمیق معروف، شبکههای عصبی کانولوشنی است، که از آنها بهطور گسترده در تشخیص اشیاء، کلاسبندی تصاویر و ... استفاده میشود. این شبکهها از چندین لایه شامل کانولوشن، تجمیع23 و تماماتصال24 تشکیلشدهاند. در این شبکهها بهمنظور استخراج ویژگی، از لایههای کانولوشن و تجمیع استفاده میشود و لایه تماماتصال در لایه آخر شبکه برای کلاسبندی خروجیها طراحی شدهاست.
درواقع در این مدل شبکههای عمیق، بیشترین بار محاسباتی در لایههای کانولوشنی و تماماتصال است، علت آن این است که این شبکهها حاوی میلیونها وزن هستند و ضرب این میزان وزن در فعالساز نظیر آنها منجر به هزینه بالا در حافظه و محاسبات پیچیده و سنگین میشود. این هزینههای بالای حافظه و محاسبات مانع بزرگی برای پیادهسازی شبکههای عصبی کانولوشنی بر روی دستگاههای نهفته با محدودیت منابع تلقی میشود.
برای غلبه به موانع موجود برای پیادهسازی CNNها بر روی دستگاههای نهفته، روشهایی برای فشردهسازی این شبکهها وجود دارد که یکی از این روشها، چندیسازی است. درواقع هدف اصلی چندیسازی این است که نوع نمایش وزنها و فعالسازها را بهجای 32 بیت ممیز شناور، با چند بیت محدود نشان دهد. مقالههای زیادی از نمایش اعداد ممیز ثابت، با عرض 16، 8 و حتی 4 بیت جهت چندیسازی شبکههای عصبی عمیق استفاده کردهاند و حداکثر حدود یک درصد افت در صحت شبکه داشتهاند. از طرفی شبکههای عصبی عمیق دو حالتی جهت کاهش حداکثری حجم پارامترها و حجم محاسبات معرفیشدهاند. در چندیسازی شبکههای عصبی عمیق دو حالتی هر پارامتر از وزنها و فعالسازها تنها با یک بیت نمایش داده میشود. یکی از سادهترین روشهای چندیسازی دو حالتی بر روی وزنها، با استفاده از تابع Sign است (معادله 1)، که در آن w و wb نشاندهنده وزنهای با دقت کامل و وزنهای دو حالتی میباشند.
(1) |
|
(2) |
|
(3) |
|
(4)
|
|
(5)
|
𝛾𝑖∈ 𝑍 →𝑞= 𝛾𝑇𝑏=
|
(6)
|
| ||||||||||||||||||
(7) |
|
(8) |
|
(9) |
|
(10) |
|
| دو حالتی | سه حالتی | نسبت سهحالتی به دوحالتی |
توانمصرفی(mW) | 0.18 | 0.40 | 2.2 |
مساحت (um2) | 142 | 448 | 3.15 |
با توجه به معماری ارائه شده برای عملیات ضرب بین دو حالتی و سه حالتی، با اینکه مدار ارائه شده در شکل 6 (ت) تقریبا دو برابر ضرب دو حالتی در دو حالتی سربار محاسباتی دارد، اما با توجه به تسریعهای بالقوه بیان شده در بالا که همگی از دو برابر خیلی بیشتر هستند، میتوانیم نشان دهیم که میزان تسریع عملیات ضرب با حذف کردن محاسبات ضرب در صفر میتواند بسیار زیاد باشد.
6- نتیجهگیری
چندیسازی و هرس کردن دو روش محبوب جهت فشردهسازی شبکههای عصبی عمیق برای قابل پیادهسازی شدن آنها بر روی دستگاه نهفته با محدودیتهای حافظه و محاسبات هستند. چندیسازی غیریکنواخت دو حالتی از محاسبات بیتی بهره میبرد و افت صحت شبکههای دو حالتی پایه را به حداقل میرساند. ما در این مقاله چندیسازی غیریکنواخت سه حالتی را ارائه دادیم، که صحت آن نزدیک به اندازه صحت شبکه ممیز شناور و بالاتر از صحت شبکه غیریکنواخت دو حالتی است و بر خلاف شبکه غیریکنواخت دو حالتی که وزنها تنک نیستند، در این نوع از چندیسازی وزنها قابلیت تنک شدن دارند. البته روشن است که هزینهی حافظه و محاسبات غیریکنواخت سه حالتی برای هر محاسبات در حالتی که هیچ بهینهسازی انجام نشود، تقریبا دو برابر غیریکنواخت دو حالتی است. اما غیریکنواخت سه حالتی شانس هرس شدن دارد. لذا وزنهای شبکه چندی شده با نمایش اعداد غیریکنواخت سه حالتی را با درصدهای مختلف هرس کردیم و بررسی کردیم که در حالتی که وزنها تا 75 درصد هرس شوند، صحت شبکه نسبت به شبکه سه حالتی بدون هرس فقط 0.8 درصد کاهش مییابد. علاوه بر این در شبکه غیریکنواخت سه حالتی با استفاده از فشردهسازی وزنها، نه تنها سربار حافظه نسبت به غیریکنواخت دو حالتی نداشتیم، بلکه توانستیم میزان حافظه مصرفی برای ذخیرهسازی وزنهای سه حالتی را نسبت به شبکه دو حالتی کمتر کنیم. از طرفی برای بهره بردن از تنکی جهت کاهش محاسبات، برای عملیات ضرب وزن سه حالتی در فعالساز دو حالتی یک معماری ارائه دادیم که پیچیدگی محاسبات ضرب، دو برابر شبکه دو حالتی بود، اما به دلیل اینکه شبکه غیریکنواخت سه حالتی ما تنک است با در نظر گرفتن امکان حذف عملیات ضرب غیر موثر، میزان تسریع بالقوه عملیات ضرب در سطح کلمه و بیت به ترتیب 15 و 45 برابر نسبت به شبکه غیریکنواخت دو حالتی بهتر است. و این میزان تسریع به اندازهای بالا است که به سربار تقریبا دو برابری محاسبات غالب میشود.
مراجع
[1] LeCun, Y., Y. Bengio, and G. Hinton, Deep learning. nature, 2015. 521(7553): p. 436-444.
[2] Zhang, D., et al. Lq-nets: Learned quantization for highly accurate and compact deep neural networks. in Proceedings of the European conference on computer vision (ECCV). 2018.
[3] Yang, L., Z. He, and D. Fan. Harmonious coexistence of structured weight pruning and ternarization for deep neural networks. in Proceedings of the AAAI Conference on Artificial Intelligence. 2020.
[4] Burrello, A., et al., Dory: Automatic end-to-end deployment of real-world dnns on low-cost iot mcus. IEEE Transactions on Computers, 2021. 70(8): p. 1253-1268.
[5] de Prado, M., et al., Automated Design Space Exploration for Optimized Deployment of DNN on Arm Cortex-A CPUs. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2020. 40(11): p. 2293-2305.
[6] Howard, A.G., et al., Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017.
[7] Iandola, F.N., et al., SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size. arXiv preprint arXiv:1602.07360, 2016.
[8] Courbariaux, M., Y. Bengio, and J.-P. David, Binaryconnect: Training deep neural networks with binary weights during propagations. Advances in neural information processing systems, 2015. 28.
[9] Cai, Z., et al. Deep learning with low precision by half-wave gaussian quantization. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[10] Li, F., B. Zhang, and B. Liu, Ternary weight networks. arXiv preprint arXiv:1605.04711, 2016.
[11] He, Y., X. Zhang, and J. Sun. Channel pruning for accelerating very deep neural networks. in Proceedings of the IEEE international conference on computer vision. 2017.
[12] Han, S., et al., Learning both weights and connections for efficient neural network. Advances in neural information processing systems, 2015. 28.
[13] Luo, J.-H., J. Wu, and W. Lin. Thinet: A filter level pruning method for deep neural network compression. in Proceedings of the IEEE international conference on computer vision. 2017.
[14] Maji, P., et al. Efficient winograd or cook-toom convolution kernel implementation on widely used mobile cpus. in 2019 2nd Workshop on Energy Efficient Machine Learning and Cognitive Computing for Embedded Applications (EMC2). 2019. IEEE.
[15] Andri, R., et al. YodaNN: An ultra-low power convolutional neural network accelerator based on binary weights. in 2016 IEEE Computer Society Annual Symposium on VLSI (ISVLSI). 2016. IEEE.
[16] Jacob, B., et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[17] Gysel, P., et al., Ristretto: A framework for empirical study of resource-efficient inference in convolutional neural networks. IEEE transactions on neural networks and learning systems, 2018. 29(11): p. 5784-5789.
[18] Sharma, H., et al. Bit fusion: Bit-level dynamically composable architecture for accelerating deep neural network. in 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). 2018. IEEE.
[19] Hubara, I., et al., Quantized neural networks: Training neural networks with low precision weights and activations. The Journal of Machine Learning Research, 2017. 18(1): p. 6869-6898.
[20] Li, Y. and F. Ren. BNN Pruning: Pruning binary neural network guided by weight flipping frequency. in 2020 21st International Symposium on Quality Electronic Design (ISQED). 2020. IEEE.
[21] Jin, C., H. Sun, and S. Kimura. Sparse ternary connect: Convolutional neural networks using ternarized weights with enhanced sparsity. in 2018 23rd Asia and South Pacific Design Automation Conference (ASP-DAC). 2018. IEEE.
[22] Zhu, C., et al., Trained ternary quantization. arXiv preprint arXiv:1612.01064, 2016.
[23] Chin, T.-W., et al. One weight bitwidth to rule them all. in European Conference on Computer Vision. 2020. Springer.
[24] Ghasemzadeh, M., M. Samragh, and F. Koushanfar. ReBNet: Residual binarized neural network. in 2018 IEEE 26th annual international symposium on field-programmable custom computing machines (FCCM). 2018. IEEE.
[25] Zhao, Y., et al., Focused quantization for sparse cnns. Advances in Neural Information Processing Systems, 2019. 32.
[26] Long, X., et al., Learning sparse convolutional neural network via quantization with low rank regularization. IEEE Access, 2019. 7: p. 51866-51876.
[27] Long, X., et al. Low Bit Neural Networks with Channel Sparsity and Sharing. in 2022 7th International Conference on Image, Vision and Computing (ICIVC). 2022. IEEE.
[28] Gadosey, P.K., Y. Li, and P.T. Yamak. On pruned, quantized and compact CNN architectures for vision applications: an empirical study. in Proceedings of the International Conference on Artificial Intelligence, Information Processing and Cloud Computing. 2019.
[29] Albericio, J., et al., Cnvlutin: Ineffectual-neuron-free deep neural network computing. ACM SIGARCH Computer Architecture News, 2016. 44(3): p. 1-13.
[30] Han, S., et al., EIE: Efficient inference engine on compressed deep neural network. ACM SIGARCH Computer Architecture News, 2016. 44(3): p. 243-254.
[31] Parashar, A., et al., SCNN: An accelerator for compressed-sparse convolutional neural networks. ACM SIGARCH computer architecture news, 2017. 45(2): p. 27-40.
[32] Zhang, S., et al. Cambricon-X: An accelerator for sparse neural networks. in 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). 2016. IEEE.
[33] Delmas, A., et al., DPRed: Making typical activation and weight values matter in deep learning computing. arXiv preprint arXiv:1804.06732, 2018.
[34] Aimar, A., et al., NullHop: A flexible convolutional neural network accelerator based on sparse representations of feature maps. IEEE transactions on neural networks and learning systems, 2018. 30(3): p. 644-656.
[35] Li, J., et al., SqueezeFlow: A sparse CNN accelerator exploiting concise convolution rules. IEEE Transactions on Computers, 2019. 68(11): p. 1663-1677.
[36] Albericio, J., et al. Bit-pragmatic deep neural network computing. in Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture. 2017.
[37] Sharify, S., et al. Laconic deep learning inference acceleration. in 2019 ACM/IEEE 46th Annual International Symposium on Computer Architecture (ISCA). 2019. IEEE.
[38] 38. Chen, Y.-H., et al., Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks. IEEE journal of solid-state circuits, 2016. 52(1): p. 127-138.
[39] Sandler, M., et al. Mobilenetv2: Inverted residuals and linear bottlenecks. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[40] Zhang, X., et al. Shufflenet: An extremely efficient convolutional neural network for mobile devices. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[41] Tan, M., et al. Mnasnet: Platform-aware neural architecture search for mobile. in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
[42] Wu, B., et al. Fbnet: Hardware-aware efficient convnet design via differentiable neural architecture search. in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
[43] Elsken, T., J.H. Metzen, and F. Hutter, Efficient multi-objective neural architecture search via lamarckian evolution. arXiv preprint arXiv:1804.09081, 2018.
[44] Rastegari, M., et al. Xnor-net: Imagenet classification using binary convolutional neural networks. in European conference on computer vision. 2016. Springer.
[45] Zhang, J., F. Franchetti, and T.M. Low. High performance zero-memory overhead direct convolutions. in International Conference on Machine Learning. 2018. PMLR.
[46] Lavin, A. and S. Gray. Fast algorithms for convolutional neural networks. in Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[47] De Prado, M., N. Pazos, and L. Benini. Learning to infer: RL-based search for DNN primitive selection on Heterogeneous Embedded Systems. in 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE). 2019. IEEE.
[48] Rovder, S., J. Cano, and M. O’Boyle, Optimising convolutional neural networks inference on low-powered GPUs. 2019.
[49] Lin, X., C. Zhao, and W. Pan, Towards accurate binary convolutional neural network. Advances in neural information processing systems, 2017. 30.
[50] Gholami, A., et al., A survey of quantization methods for efficient neural network inference. arXiv preprint arXiv:2103.13630, 2021.
[51] Hawks, B., et al., Ps and qs: Quantization-aware pruning for efficient low latency neural network inference. Frontiers in Artificial Intelligence, 2021. 4: p. 676564.
[52] Hubara, I., et al., Binarized neural networks. Advances in neural information processing systems, 2016. 29.
[1] Machine learning
[2] Artificial Intelligence
[3] Artificial neural network
[4] Convolutional neural network
[5] Image classification
[6] Object detection
[7] Semantic segmentation
[8] Embedded device
[9] Quantization
[10] Pruning
[11] General matrix multiplication (GEMM)
[12] Weights
[13] Activations
[14] Binary
[15] Accuracy
[16] Ternary
[17] Compressed Sparse Row (CSR)
[18] Compressed Sparse Column (CSC)
[19] Compressed Image Siz (CIS)
[20] Run Length Coding (RLC)
[21] Neural architecture search (NAS)
[22] Direct
[23] Pooling
[24] Fully connected
[25] Back propagation
[26] Max-polling
[27] Batch-normalization
[28] Relu
[29] Epoch