یادگیری عمیق در دستگاه های تعبیه شده
هیچ شکی نیست که یادگیری عمیق تحولات زیادی در جنبههای مختلف زندگی شخصی و حرفهای ما بهوجود آورده است. در مقاله پیش رو میخواهیم به موضوع یادگیری عمیق در دستگاه های تعبیه شده بپردازیم.
یادگیری عمیق در مقایسه با علم سنتی یادگیری ماشین، دقت و تطبیقپذیری بیشتری دارد و به این ترتیب، محصولات هوشمندتری نیز ارائه میدهد.
اما زمانی که بحث استقرار مدلهای یادگیری عمیق به میان میآید، گزینه ارزان یا کممصرفی در دسترس نیست. برای مثال، چطور میتوان این مدلها را در رباتها، پهبادها یا اتومبیلهای خودکار تعبیه کرد؟
در دنیای امروز همه به دنبال راهی برای خودکارسازی همه چیز از خودروها گرفته تا رباتهای کارگر هستند. اما این فقط یک جریان زودگذر نیست. تجهیزات صنعتی روزبهروز هوشمندتر شده و قابلیتهایی همچون نظارت بر شرایط و پیشبینی تعمیرات مورد نیاز را به دست میآورند.
آیا Raspberry Pi یک راهحل هوشمند و قابلحمل است؟
تمام آنچه ما نیاز داریم یک راهحل قابلحمل (پرتابل) است. آیا Raspberry Pi برای این هدف مناسب است؟ در واقع نه. رایانه Raspberry Pi نمیتواند بهتنهایی خواستههای ما را برآورده کند.
رایانه Raspberry Pi حافظه کافی و CPU موردنیاز برای آموزش این قبیل شبکههای عصبی پیچیده و عمیق را ندارد.
در واقع باید گفت که Raspberry Pi حتی توان پردازشی لازم برای اجرا یا استنتاج الگوریتمهای یادگیری عمیق را ندارد. اینجاست که نام دستگاه های تعبیه شده یادگیری عمیق از قبیل دستگاه Movidius NCS شرکت اینتل و دستگاه Jetson nano شرکت انویدیا به میان میآید.
مزایای دستگاههای تعبیه شده ابری
- امنیت و حفظ حریم خصوصی: در زمان کار با این دستگاهها میتوان دادهها را بهصورت محلی ذخیره کرد و بدون نگرانی به توسعه الگوریتمها و نرمافزارهای شخصی و خصوصی پرداخت.
- عدم مواجهه با مشکلات مربوط به اتصال به اینترنت: از آنجا که مدلها روی دستگاه اجرا میشوند، نیاز به ارسال یا دریافت هیچ دادهای نیست. این موضوع موجب کاهش زمان لازم برای پاسخگویی و همچنین کاهش مصرف پهنای باند که در کشورهای جهانسوم نگرانی بزرگی بهشمار میآید، خواهد شد.
- کمترین میزان تأخیر و مصرف انرژی: معماری بهبودیافته واحدهای شتابدهنده نوین باعث کاهش قابلتوجه مصرف انرژی (برای مثال، دستگاه Movidius NCS تنها 1 وات نرژی مصرف میکند) و حذف تأخیر میشود، زیرا همه کارها روی خود برد انجام میگیرد.
در ادامه درخصوص فرآیند استنتاج صحبت خواهیم کرد.
دستگاهها و راهحلهای زیادی در این زمینه وجود دارند، اما در این مقاله Movidius NCS را بررسی خواهیم کرد، زیرا من در کار با این دستگاه تجربه دارم.
کاربرد Movidius NCS Stick چیست؟
دستگاه Movidius Neural Compute Stick محصول شرکت اینتل است و بدون اتصال به اینترنت کار میکند. توان محاسباتی این دستگاه از قطعه Myriad 2 VPU نشأت میگیرد که یک تراشه هوش مصنوعی مبتنی بر شبکههای عصبی پیچشی است و برای شتابدهی مسائل بینایی رایانهای بهکار گرفته میشود.
میتوانید این دستگاه را GPU ای درنظر بگیرید که روی یک فلش یواسبی اجرا میشود. دستگاه Movidius NCS مشابه یک فلش یواسبی است که میتوان آن را به رایانههای تراشهای خانواده Raspberry Pi یا حتی رایانههای شخصی دارای سیستمعامل Ubuntu متصل کرد.
شرکت اینتل NCS SDK را نیز ارائه میدهد که سرعت فرآیند ساخت نمونه اولیه استقرار شبکههای عصبی عمیق را سرعت میبخشد. همچنین یک فایل graph از مدل یادگیری عمیق شما تهیه میکند که میتوانید با استفاده از آن در دستگاه هدف از مدل خود استنتاج کنید.
با اجرای یک مدل شناسایی بلادرنگ اشیاء روی Raspberry Pi، به نتایج جالبتوجهی دست یافتم که در جدول زیر به نمایش درآمدهاند:
وقتی در کنار CPU از NCS stick نیز استفاده کردم، عملکرد مدل 90 الی 100% بهبود پیدا کرد. اگر کل فرآیند را درنظر بیاورید، متوجه میشوید که این پیشرفت بزرگی است.
مجموعه ابزار OpenVINO مجموعه ابزاری است که بهینهسازی مدل یادگیری عمیق و تعبیه آن در سختافزارهای اینتل را به کمک یک موتور استنتاج تسهیل میکند.
دستگاه NCS از تنسورفلو و Caffe out of the box پشتیبانی کرده و میتواند بسیاری از مدلهای یادگیری عمیق همچون SqueezeNet، GoogLeNet و AlexNet را اجرا کند.
کار کردن با دارای یک فرآیند 3 مرحلهای است:
- آموزش مدل در یک دستگاه دارای GPU
- تبدیل مدل به فایلGraph با استفاده از NCS SDK
- دادن فایل Graph به Raspberry Pi و گرفتن نتایج نهایی مدل
استفاده از دستگاه های تعبیه شده میتواند به همین راحتی استنتاج نهایی مدل یادگیری را به شما بدهد.