چند روز پیش یک نظر سنجی در توییترم گذاشتم و در آن نظر سنجی پرسیدم، به نظر شما بین آردوینو پورتنتا(Arduino Portenta H7)، تینسی 4/0(Teensy 4.0) و STM32 نوکلئو(STM32 Nucleo H743ZI2) سریعترین برد کدام است؟ در بین پاسخها، دو برد پورتتنا و نوکلئو در رده اول قرار گرفتند و توانستند برد تینسی را پشت سر بگذارند. این پست براساس نظر سنجی انجام شده با اعداد و ارقام واقعی ایجاد شده است پس با سیسوگ همراه باشید.
همه این سه برد در داشتن پردازنده مرکزی (CPU) با یکدیگر مشترک هستند. هر سه از پردازنده ARM Cortex M7 استفاده میکنند. اما تفاوت این سه در چیست؟ کدام یک از این بردها برنده رقابت سرعت است؟؟
بیایید این بردها را برساس معیار TinyML با هم بررسی و مقایسه کنیم. (البته شامل تعداد زیادی نمودار است)!
تهیه این مقاله بر اساس ترسیمهایی از نمودارهاست: بدین ترتیب برای هر سه دسته بندی زیر، کلاژ نموداری وجود دارد که با آن میتوان بنچمارک را تفسیر کرد.
معیار اول: معیارهای هر Dataset
شما میتوانید برای هر مجموعه داده در مجموعه معیار، نمودار ستونی مختص آن را ببینید. هر ستون نشان دهنده زمان استنتاج در هر میکرو ثانیه و در مقیاس لگاریتم است. در این نمودارها، مشخص شده زمان پیش بینی نمونههای کلاسیفایرداده شده چه قدر است. هر چه ستون کوچکتر باشد، بهتر است.
معیار دوم: رتبه بندی هر کلاسیفایر
شما میتوانید برای هر نوع کلاسیفایر در مجموعه معیار، سه نمودار ستونی ببینید. هر نمودار نشان دهنده این است که برد داده شده در هر جایگاه w.r.t، نسبت به دو جایگاه دیگر چند بار رتبه بندی شده است.
بیایید نمودار اول را که رتبه بندی تینسی برای درخت تصمیم است با یکدیگر بررسی کنیم: این نمودار نشان میدهد که برد تینسی برای کلاسیفایر درخت تصمیم، 9 بار در جایگاه اول رتبه بندی شده، 0 بار در جایگاه دوم و 0 بار هم در جایگاه سوم قرار گرفته است.
پس با این حساب، تینسی باید برنده واضح این رقابت باشه! خب، واقعاً این طور نیست. چون دو برد آردوینو پورتنتا H7 و STM32 نوکلئو (H743ZI2 ) دارای رتبه بندی مشابهی هستند.
چه طور چنین چیزی ممکنه؟
این امکان وجود داره زیرا همه زمانهای استنتاج به رزولوشن 5 میکروثانیه گرد میشوند. با توجه به اینکه درخت تصمیم برای هر برد 1-2 میکروثانیه زمان برای اجرا نیاز دارد، زمانهای استنتاج همه آنها به یک مقدار مشابه گرد شده و در نهایت با هم برابر میشود.
یک مورد که دارای اطلاعات مفیدی در این زمینه “XGBoost” است. شما میتوانید به وضوح ببینید که در معیار TinyML تینسی همشه رتبه اول، آردوینو پورتنتا H7 رتبه دوم و STM32 نوکلئو (H743ZI2 ) رتبه سوم را کسب کرده است.
معیار 3: رتبه بندی جهانی
در پایان برای جمع بندی جایگاهها، برای مجموعه دادههای کلاسیفایرها، رتبه بندی جهانی هر برد را به دست آوردیم.
نتیجه گیری
از این معیارها چه نتیجهای میتوان گرفت؟
- به طور واضح میتوان گفت تینسی 4 چون سریعترین برد در بین است پس برنده این رقابت است. عجیب نیست؟ به هیچ وجه این طور نیست اگر شما سرعت کلاک آن را که برابر با 600 مگاهرتز است در مقابل برد آردوینو و نوکلئو که 480 مگاهرتز هستند، در نظر بگیرید به خوبی متوجه سریعتر بودن تینسی خواهید شد.
- STM32 نوکلئو (H743ZI2 ) در درخت تصمیم، Random Forest و Gaussian NB سریع است، اما در سایر کلاسیفایرها چندان سریع نیست.
- سرعت آردوینو پورتنتا H7 از تینسی 0/4 کمتر است، اما به طور کلی سریعتر از STM32 نوکلئو (H743ZI2 ) است. این برد در رتبه بندیها، بیشتر اوقات در جایگاه اول و دوم قرار دارد.
اگر بخواهم به طور کلی این سه برد را در معیار TinyML مقایسه کنم. باید بگویم هر سه این بردها خوب هستند و هر کدام برای اهداف مختلفی ساخته شدهاند:
- برد آردوینو پورتنتا H7 دارای دو هسته با چند آی سی خوب و سخت افزارهای عالی است (تصور کنید Vision Shield) اما قیمت تقریبی آن 100 دلار است.
- تینسی 0/4 احتمالاً سریعترین MCU در بین بردهای موجود است. این را در نظر بگیرید که میتوانید این برد را تا 1 گیگاهرتز اورکلاک کنید.
- STM32 نوکلئو (H743ZI2 ) یک برد توسعه دهنده است که دارای پینهای IO زیادی است و ویژگیهای آن مرتبط با توسعه دهندگی است. (برای مثال دارای عیب یاب STLink است)