KALOP_NODE: ACTIVE // 200 OK
دانش، تحلیل مدار و مهندسی معکوس الکترونیک
پیشنهادات جستجو: #MOSFET #Altium #Optocoupler #AI_Vision

برچسب: Edge AI

  • NPU یا FPGA برای هوش مصنوعی لبه؟ راهنمای انتخاب سخت‌افزار

    برای اجرای یک مدل هوش مصنوعی روی دستگاه لبه، همیشه پرسش «کدام تراشه سریع‌تر است؟» پرسش اول خوبی نیست. شکل ورودی، تأخیر مجاز، انرژی، تعداد مدل‌های قابل پشتیبانی و زمان توسعه مشخص می‌کند که NPU آماده مناسب‌تر است یا FPGA قابل‌پیکربندی. این دو گزینه هم همیشه جدا از هم نیستند: در بعضی سامانه‌ها، NPU خودش از منطق قابل‌برنامه‌ریزی FPGA و بلوک‌های محاسباتی اختصاصی کنار هم استفاده می‌کند.

    NPU و FPGA چه تفاوتی دارند؟

    NPU یک شتاب‌دهنده برای الگوهای رایج شبکهٔ عصبی است. سازنده معمولاً ابزار تبدیل مدل، کامپایلر، runtime و مجموعه‌ای از عملگرها یا قالب‌های عددی پشتیبانی‌شده ارائه می‌کند. اگر مدل در محدودهٔ این پشته باشد، مسیر پیاده‌سازی اغلب کوتاه‌تر از طراحی datapath اختصاصی است؛ اما محدودیت اپراتورها و وابستگی به SDK همان پلتفرم باید از ابتدا بررسی شود.

    FPGA تراشه‌ای با منطق قابل‌پیکربندی است. طراح می‌تواند مسیرهای داده و رابط‌های لازم را برای مسئلهٔ مشخص پیاده کند و پیش‌پردازش حسگر، انتقال داده و بخش‌هایی از inference را در یک pipeline ترکیب کند. این انعطاف، هزینهٔ مهندسی دارد: آشنایی با HDL یا HLS، کامپایل و زمان‌بندی، مصرف منابع منطقی، طراحی حافظه و اعتبارسنجی زمان‌بندی مدار. بنابراین FPGA را نباید صرفاً «NPU سریع‌تر» فرض کرد.

    مرز این دو در محصولات واقعی می‌تواند ترکیبی باشد. برای نمونه، پشتهٔ AMD Vitis AI از NPU IP برای inference روی Adaptive SoC و FPGA استفاده می‌کند و اجزای آن می‌توانند منطق قابل‌برنامه‌ریزی و AI Engine را کنار هم قرار دهند. این نمونه نشان می‌دهد که مقایسه باید بر اساس معماری دقیق برد و ابزارهای همان قطعه انجام شود، نه فقط نام دستهٔ تراشه.

    مقایسهٔ کاربردی برای انتخاب اولیه

    معیارNPU آمادهFPGA قابل‌پیکربندی
    زمان رسیدن به نمونهٔ اولیهمعمولاً کوتاه‌تر، اگر مدل و اپراتورها پشتیبانی شوندمعمولاً طولانی‌تر؛ طراحی، ساخت و زمان‌بندی سخت‌افزار لازم است
    انعطاف‌پذیری datapath و I/Oوابسته به قابلیت‌های SoC و API سازندهبالا؛ منطق و رابط‌های خاص پروژه قابل پیاده‌سازی‌اند
    مدل و اپراتورهای پشتیبانی‌شدهمحدود به کامپایلر و معماری NPUوابسته به IP، ابزار و منابعی که برای مدل فراهم می‌شود
    پیش‌پردازش هم‌زمان با inferenceممکن است بخشی روی CPU یا واحدهای دیگر انجام شودقابل ترکیب با pipeline اختصاصی، در صورت داشتن منابع و زمان‌بندی مناسب
    ریسک اصلی پروژهسازگاری مدل، محدودیت ابزار و وابستگی به پلتفرمپیچیدگی طراحی، زمان توسعه، مصرف منابع و بسته‌شدن timing

    چه زمانی NPU انتخاب مناسب‌تری است؟

    • مدل از خانوادهٔ رایج است و ابزار رسمی، اپراتورها و نوع دادهٔ آن را پشتیبانی می‌کنند.
    • تیم می‌خواهد زودتر نمونهٔ محصول بسازد و توان طراحی منطق سفارشی محدود است.
    • پردازش ورودی و خروجی را CPU یا peripheralهای موجود می‌توانند با نرخ لازم انجام دهند.
    • چرخهٔ تغییر مدل و انتشار firmware سریع است و SDK پلتفرم برای آن مسیر مناسبی دارد.

    برای MCUs و دستگاه‌های محدود، شتاب‌دهنده‌هایی مثل Arm Ethos-U کنار Cortex-M طراحی شده‌اند و ابزارهایی مانند Vela مدل را برای همان NPU آماده می‌کنند. با این حال، «وجود NPU» به‌تنهایی تضمین نمی‌کند کل گراف روی آن اجرا شود؛ بررسی قالب مدل، اپراتورهای مجاز و نتیجهٔ کامپایل بخشی از کار انتخاب است.

    چه زمانی FPGA ارزش بررسی دارد؟

    • داده به شکل جریانی یا از رابط خاص می‌رسد و تأخیر کل سامانه از حسگر تا تصمیم مهم است.
    • به پیش‌پردازش اختصاصی، چند کانال موازی یا اتصال به رابط‌های صنعتی خاص نیاز دارید.
    • مدل یا الگوریتم بخشی دارد که شتاب‌دهندهٔ آماده به‌خوبی پوشش نمی‌دهد و ارزش ساخت IP سفارشی وجود دارد.
    • تیم تجربهٔ FPGA دارد و حجم تولید یا عمر پلتفرم، هزینهٔ توسعه و اعتبارسنجی سخت‌افزار را توجیه می‌کند.

    حتی در FPGA هم هیچ تضمین عمومی برای سرعت یا انرژی بهتر وجود ندارد. نتیجه به حجم محاسبات، نوع داده، پهنای باند حافظه، موازی‌سازی، نرخ کلاک و میزان استفاده از منابع وابسته است. ابزارهای AMD و Intel هر دو مسیرهای مدل‌محور برای تبدیل، کامپایل و اجرای inference ارائه می‌کنند؛ در Intel FPGA AI Suite، مدل و توصیف معماری با کامپایلر به تنظیمات IP تبدیل می‌شوند. این یعنی سازگاری مدل و معماری FPGA باید در نمونهٔ عملی اثبات شود.

    روش مقایسهٔ منصفانه روی برد واقعی

    1. یک workload مشخص بسازید: همان مدل، ورودی، پیش‌پردازش، نرخ فریم یا نرخ نمونه‌برداری را برای هر دو گزینه تعریف کنید.
    2. محدودیت‌ها را قبل از benchmark بنویسید: latency انتهابه‌انتها، throughput، دقت قابل‌قبول، بودجهٔ توان، اندازهٔ حافظه و هزینهٔ BOM را تعیین کنید.
    3. زمان فقط هستهٔ inference را نسنجید: انتقال داده، تبدیل قالب، پیش‌پردازش، فراخوانی runtime و پس‌پردازش را در زمان کل وارد کنید.
    4. مدل را برای هر پشته آماده کنید: quantization یا تبدیل لازم را انجام دهید و گزارش اپراتورهای پشتیبانی‌شده، fallback به CPU و بخش‌های شتاب‌گرفته را بررسی کنید.
    5. اندازه‌گیری را تکرار کنید: latency میانه و صدک ۹۹، انرژی هر inference، مصرف حافظه و دما را تحت بار پیوسته ثبت کنید.
    6. هزینهٔ مهندسی را هم حساب کنید: زمان یادگیری ابزار، اشکال‌زدایی، به‌روزرسانی مدل، تأمین قطعه و نگهداری چندساله را کنار قیمت تراشه بگذارید.

    نکته‌های طراحی PCB و سامانه

    شتاب‌دهندهٔ قوی با تغذیه و حافظهٔ نامناسب به نتیجهٔ پایدار نمی‌رسد. برای FPGA یا SoC، ریل‌های ولتاژ، ترتیب روشن‌شدن، افت گذرا، دفع حرارت و مسیرهای حافظه را طبق راهنمای همان برد و قطعه طراحی کنید. اگر از DRAM خارجی استفاده می‌شود، پهنای باند و layout آن می‌تواند گلوگاه باشد. رابط حسگر را هم طوری انتخاب کنید که داده با کمترین کپی و تبدیل غیرضروری به شتاب‌دهنده برسد. در تست توان، مصرف کل برد را اندازه بگیرید، نه فقط رقم اسمی NPU یا FPGA را.

    جمع‌بندی انتخاب

    اگر مدل متعارف است و هدف، استقرار سریع با ابزار آماده است، ابتدا NPU را با مدل واقعی ارزیابی کنید. اگر جریان داده، رابط‌ها یا pipeline اختصاصی تعیین‌کننده‌اند و تیم توان توسعهٔ سخت‌افزار دارد، FPGA را روی نمونهٔ واقعی مقایسه کنید. برای هر دو مسیر، دادهٔ تصمیم باید از benchmark منصفانه، دقت مدل و مصرف انرژی کل سامانه بیاید. گاهی پاسخ مناسب یک SoC ناهمگن است که CPU، NPU و منطق قابل‌برنامه‌ریزی را با هم به‌کار می‌گیرد.

    سوالات متداول

    آیا FPGA همیشه کم‌تأخیرتر از NPU است؟

    خیر. FPGA امکان ساخت pipeline سفارشی می‌دهد، ولی کیفیت نتیجه به پیاده‌سازی و مسیر حافظه وابسته است. NPU آماده ممکن است برای مدل پشتیبانی‌شده سریع‌تر و ساده‌تر باشد. latency کل را روی برد بسنجید.

    آیا برای FPGA باید کل شبکه را با HDL از نو نوشت؟

    نه همیشه. ابزارهای موجود می‌توانند مدل را کامپایل یا بخش‌هایی از آن را روی IP شتاب‌دهنده اجرا کنند؛ اما میزان خودکارسازی، اپراتورهای پشتیبانی‌شده و نیاز به طراحی سفارشی بین پلتفرم‌ها فرق دارد.

    برای نمونهٔ اولیهٔ کم‌تیراژ کدام را انتخاب کنم؟

    اگر مدل روی NPU موجود قابل اجراست، آن مسیر معمولاً ارزیابی ساده‌تری دارد. بااین‌حال، رابط‌ها و نیاز واقعی پروژه را هم بسنجید؛ نتیجهٔ انتخاب را با اندازه‌گیری و هزینهٔ توسعه تعیین کنید، نه فقط قیمت قطعه.

    منابع و مراجع

  • هوش مصنوعی روی میکروکنترلر؛ راهنمای طراحی سامانهٔ Edge AI کم‌مصرف

    هوش مصنوعی روی میکروکنترلر فقط کوچک‌کردن فایل مدل نیست. در یک دستگاه Edge AI، حافظهٔ کاری، پشتیبانی نرم‌افزار از عملگرها، زمان پاسخ و بودجهٔ انرژی هم‌زمان تعیین می‌کنند که مدل واقعاً روی برد اجرا شود یا نه. این راهنما مسیر انتخاب سخت‌افزار و آماده‌سازی مدل را از اندازه‌گیری نیازها تا آزمون روی PCB توضیح می‌دهد.

    Edge AI چه زمانی انتخاب مناسبی است؟

    در Edge AI، استنباط مدل نزدیک حسگر و روی خود دستگاه انجام می‌شود. این معماری می‌تواند زمان رفت‌وبرگشت شبکه و ارسال دادهٔ خام را کم کند و در قطع اینترنت هم کار کند؛ اما اجرای محلی به‌خودی‌خود امنیت داده را تضمین نمی‌کند و محدودیت توان، گرما و نگهداری مدل را به دستگاه منتقل می‌کند. برای تشخیص لرزش موتور، طبقه‌بندی صدای کوتاه یا شناسایی ناهنجاری حسگر، میکروکنترلر کم‌مصرف ممکن است کافی باشد. برای تصویر بزرگ یا مدل زبانی، شاید SoC مجهز به NPU و حافظهٔ بیشتر لازم شود.

    پیش از انتخاب MCU یا NPU، سه نوع حافظه را جدا کنید

    اندازهٔ فایل مدل در Flash فقط بخشی از مسئله است. وزن‌ها معمولاً در Flash یا حافظهٔ خارجی نگهداری می‌شوند، اما activationهای لایه‌ها، بافرهای ورودی/خروجی و حافظهٔ موقت اپراتورها می‌توانند SRAM را پر کنند. بنابراین معیار مهم، اوج مصرف حافظه هنگام اجرای واقعی است؛ نه فقط حجم فایل مدل یا تعداد پارامترها. مقالهٔ مروری TinyML نیز محدودیت حافظهٔ activation را از گلوگاه‌های کلیدی استقرار مدل روی MCU می‌داند.

    منبع محدودچه چیزی مصرفش می‌کند؟چه چیزی اندازه بگیریم؟
    Flash / حافظهٔ برنامهوزن‌های مدل، runtime، کد و جدول‌های ثابتاندازهٔ مدل نهایی و فضای باقی‌مانده پس از لینک
    SRAMactivationها، ورودی حسگر، بافرهای میانی و scratchبیشینهٔ مصرف در بدترین مسیر inference
    حافظهٔ خارجیوزن یا دادهٔ حجیم‌تر، با هزینهٔ تأخیر و انرژی دسترسیپهنای باند، الگوی دسترسی و هزینهٔ انتقال داده

    کوانتیزه‌سازی INT8: کاهش حجم با آزمون دقت

    در مدل FP32 هر وزن معمولاً ۳۲ بیت دارد؛ نمایش INT8 از ۸ بیت استفاده می‌کند، پس بخش وزن‌ها در حالت ایده‌آل حدود یک‌چهارم بایت‌های FP32 می‌شود. این نسبت به معنی چهار برابر کاهش در کل RAM یا چهار برابر افزایش سرعت نیست: activationها، سربار runtime، اپراتورهای پشتیبانی‌نشده و رفت‌وآمد حافظه نتیجهٔ واقعی را تغییر می‌دهند. LiteRT عملگرهای کوانتیزه‌شدهٔ INT8/UINT8 را پشتیبانی می‌کند، اما سازگاری به اپراتورهای به‌کاررفته در همان مدل هم بستگی دارد.

    Post-training quantization یا QAT؟

    • کوانتیزه‌سازی پس از آموزش: نقطهٔ شروع سریع‌تری است. برای کالیبراسیون، نمونه‌هایی نزدیک به ورودی واقعی دستگاه انتخاب کنید؛ از شرایط نوری، نویز و دامنهٔ حسگر که در میدان دیده می‌شوند هم نمونه داشته باشید.
    • Quantization-aware training: وقتی افت دقت پس از تبدیل زیاد است، آموزش با شبیه‌سازی اثر کوانتیزه‌سازی می‌تواند گزینهٔ بعدی باشد؛ سپس مدل تبدیل‌شده را روی دادهٔ آزمون دست‌نخورده بسنجید.
    • حفظ عملگرهای ناسازگار: اگر مدل از عملگری استفاده کند که backend انتخابی پشتیبانی نمی‌کند، ممکن است تبدیل ناموفق شود یا بخشی از گراف روی CPU اجرا شود. خروجی ابزار تبدیل و گزارش تقسیم‌بندی گراف را بخوانید.

    CPU، شتاب‌دهندهٔ برداری یا NPU؟

    CPU ساده‌ترین مسیر برای نمونهٔ اولیه است، ولی سرعت و مصرف انرژی را باید با workload واقعی سنجید. کتابخانه‌های بهینه‌شده مانند CMSIS-NN می‌توانند کرنل‌های عصبی را روی Cortex-M کارآمدتر اجرا کنند؛ NPU زمانی مفید است که عملگرها، نوع داده و گراف مدل با backend آن سازگار باشند. برای نمونه در مسیر Arm Ethos-U، اجرای شتاب‌گرفته به گراف کوانتیزه‌شده و بخش‌های قابل واگذاری به NPU وابسته است؛ اپراتورهایی که شرایط backend را ندارند ممکن است بیرون از بخش شتاب‌گرفته بمانند. پس فقط عدد TOPS یا نام NPU را معیار خرید نگذارید.

    روال عملی طراحی روی برد

    1. کار را محدود تعریف کنید: نوع ورودی، تعداد کلاس‌ها، نرخ نمونه‌برداری، زمان مجاز پاسخ و رفتار امن هنگام خطا را مشخص کنید.
    2. نسخهٔ پایه بسازید: یک مدل کوچک با دادهٔ نماینده آموزش دهید و دقت، ماتریس خطا و عملکرد روی دادهٔ جداگانه را ثبت کنید.
    3. پروفایل سخت‌افزار بگیرید: Flash، اوج SRAM، latency، مصرف انرژی هر inference و دمای برد را روی همان MCU/NPU هدف اندازه بگیرید.
    4. مدل را بهینه کنید: ابتدا معماری کوچک‌تر یا ورودی کم‌وضوح‌تر را بررسی کنید، سپس INT8 و در صورت نیاز pruning یا QAT را آزمایش کنید.
    5. سازگاری گراف را بررسی کنید: لیست اپراتورهای پشتیبانی‌شده، fallback به CPU و نیاز runtime را کنترل کنید؛ در صورت امکان لایه‌به‌لایه زمان اجرا را پروفایل بگیرید.
    6. روی برد نهایی اعتبارسنجی کنید: pipeline پیش‌پردازش باید با آموزش یکسان باشد. پس از آزمون رومیزی، دادهٔ واقعی حسگر، تغییر دما، افت ولتاژ و اجرای پیوسته را هم بسنجید.

    یک نمونهٔ پژوهشی؛ عددها را تعمیم ندهید

    در پژوهشی منتشرشده در مارس ۲۰۲۶ برای پردازش تصویر ماهواره‌ای روی STM32N6، نویسندگان هرس ساختاری، کوانتیزه‌سازی INT8 و نگاشت آگاه از سخت‌افزار را ترکیب کردند. در مجموعه‌آزمایش همان مقاله، میانگین کاهش RAM برابر ۸۹٫۵۵٪ و کاهش Flash برابر ۷۰٫۰۹٪ گزارش شده و افت دقت مدل‌ها بین ۰٫۴ تا ۸٫۶ واحد درصد بوده است. این نتیجه به مدل‌ها، داده‌ها و پلتفرم همان آزمایش مربوط است؛ آن را تضمین عملکرد برای هر برد یا کاربرد دیگری ندانید. معیار شما باید آزمون تکرارپذیر روی سخت‌افزار مقصد باشد.

    جدول تصمیم‌گیری سریع

    شرایط پروژهمسیر پیشنهادی برای ارزیابیریسک اصلی
    حسگر ساده و بودجهٔ توان بسیار کمMCU و مدل کوچک؛ ابتدا CPU بهینه‌شدهکمبود SRAM یا تأخیر بیش از حد
    مدل CNN با inference مکررMCU با DSP/NPU و backend سازگاربخش‌هایی از گراف به CPU برگردند
    تصویر بزرگ یا چند مدل هم‌زمانSoC با حافظهٔ بیشتر و شتاب‌دهندهٔ مناسبتوان، گرما و پهنای باند حافظه

    چک‌لیست پیش از تولید PCB

    • اوج SRAM و فضای Flash با حاشیهٔ رشد اندازه‌گیری شده است.
    • دقت مدل کوانتیزه‌شده روی دادهٔ واقعی و مجموعهٔ آزمون جدا سنجیده شده است.
    • latency و انرژی در نرخ inference مورد نیاز ثبت شده‌اند.
    • نسخهٔ runtime، اپراتورها و backend روی firmware نهایی بررسی شده‌اند.
    • برای شبکه یا حافظهٔ خارجی، توان، نویز، پهنای باند و مسیرهای PCB در نظر گرفته شده‌اند.
    • رفتار دستگاه در صورت ورودی نامعتبر، عدم قطعیت بالا یا افت ارتباط مشخص است.

    سوالات متداول

    آیا INT8 همیشه بهترین انتخاب برای مدل MCU است؟

    نه. INT8 معمولاً حجم وزن‌ها را کم می‌کند و با بعضی backendها سازگاری خوبی دارد، اما ممکن است دقت را کاهش دهد یا بعضی اپراتورها را ناسازگار کند. دقت و سرعت مدل تبدیل‌شده را روی دستگاه واقعی بسنجید.

    اگر فایل مدل در Flash جا می‌شود، یعنی RAM هم کافی است؟

    خیر. activationها و بافرهای میانی RAM می‌خواهند و ممکن است اوج مصرفشان از اندازهٔ وزن‌ها مهم‌تر باشد. اندازه‌گیری runtime روی مسیر واقعی ضروری است.

    NPU همیشه از CPU سریع‌تر و کم‌مصرف‌تر است؟

    نه لزوماً. نتیجه به سازگاری گراف، اندازهٔ ورودی، انتقال داده و بار راه‌اندازی وابسته است. هر دو backend را با سناریوی نهایی و ابزار اندازه‌گیری یکسان مقایسه کنید.

    منابع و مراجع