اجرای مدل هوش مصنوعی عظیم روی میکروکنترلر ارزان ESP32-S3 با ترفند گوگل
این روزها وقتی صحبت از اجرای هوش مصنوعی محلی میشود، معمولاً بحث حول محور مینیپیسیهایی مانند RTX Spark میچرخد یا به رویاپردازی درباره سرورهای خانگی و کارتهای گرافیک حرفهای فوقالعاده گرانقیمت میانجامد. اما به نظر من، چشمگیرترین ترفند سختافزاری هوش مصنوعی در مدت اخیر، روی قطعهای سیلیکونی اتفاق افتاده که قیمتش کمتر از یک همبرگر خوب است. هفته گذشته، یک توسعهدهنده اوکراینی به نام اسلاوا اس، که در گیتهاب با نام ‘slvDev’ شناخته میشود، پروژهای به نام ESP32-AI را منتشر کرد. این دقیقاً همان چیزی است که فکر میکنید: او یک مدل زبان با ۲۸.۹ میلیون پارامتر را به صورت محلی و کاملاً روی دستگاه، روی یک میکروکنترلر ESP32-S3 اجرا کرد.
اگر پوشش قبلی ما درباره این تراشه کوچک را نخواندهاید، بردهای ESP32-S3 بهترین ارزش خرید را در دنیای محاسبات ارائه میدهند. میتوانید یکی از آنها را به صورت آنلاین با قاب محافظ با قیمتی کمتر از ۲۰ دلار در ایالات متحده تهیه کنید، و بردهای بدون قاب نیز در بیشتر نقاط جهان با قیمتی کمتر از ۱۰ دلار به راحتی در دسترس هستند. همانطور که از یک تراشه ارزانقیمت انتظار میرود، قدرتمند نیست. در این مدل، یعنی S3، شما دقیقاً ۵۱۲ کیلوبایت SRAM، ۸ مگابایت PSRAM و ۱۶ مگابایت حافظه فلش دریافت میکنید که اصلاً حافظه زیادی نیست. پس دقیقاً چگونه یک مدل تقریباً ۳۰ میلیون پارامتری را روی تراشهای با حافظه اصلی کمتر از یک عکس خام گوشی هوشمند خود جای میدهید؟
معمولاً برای اجرای یک مدل زبان بزرگ (LLM)، کل مدل باید در حافظه سریع سیستم شما قرار گیرد، زیرا پردازنده برای تولید کلمه بعدی باید دائماً محاسبات را روی هر پارامتر انجام دهد. اگر سعی کنید یک مدل ۲۹ میلیون پارامتری را به طور عادی روی ESP32 اجرا کنید، بلافاصله حافظه RAM سریع شما تمام میشود. رکورد قبلی برای تراشهای مشابه این، حدود ۲۶۰,۰۰۰ پارامتر بود که توسط آقای دیو بنت به دست آمده بود، همانطور که خود اسلاوا در X اشاره کرده است.
این هکر باهوش با قرض گرفتن یک ترفند معماری درخشان از مدل Gemma گوگل به نام Per-Layer Embeddings، این گلوگاه را دور زد. او مدل را به ۴ بیت کوانتیزه کرد (که حجم کل فایل را به تنها ۱۴.۹ مگابایت رساند) و محل ذخیرهسازی دادهها را تغییر داد؛ به جای تلاش برای جای دادن کل مدل در ۵۱۲ کیلوبایت SRAM کوچک یا ۸ مگابایت PSRAM که کمی بزرگتر است، جدول جاسازی ۲۵ میلیون پارامتری را به حافظه فلش ۱۶ مگابایتی نسبتاً کند منتقل کرد. از آنجایی که این معماری مدل خاص فقط نیاز دارد چند ردیف از این جدول را به ازای هر توکن بخواند، کندی ذاتی حافظه فلش پردازنده را خفه نمیکند، و بنابراین ۵۱۲ کیلوبایت SRAM سریع برای “هسته تفکر” یا همان وزنهای استدلالی واقعی، آزاد نگه داشته میشود.
حالا بیایید لحظهای مکث کنیم، زیرا میدانم کسی در آنجا از قبل در حال فکر کردن است که آیا میتواند سرور خود را با یک تراشه ۸ دلاری جایگزین کند. مدلی که او استفاده کرد روی مجموعه داده TinyStories آموزش دیده بود و در واقع بیشتر یک مدل زبان کوچک (SLM) یا صادقانه بگویم، یک “میکرو LM” است. به دلیل نحوه ایجاد آن، فقط قادر به نوشتن داستانهای کوتاه، ساده و تخیلی است. این مدل به سوالات پاسخ نمیدهد، دستورالعملها را دنبال نمیکند، کد پایتون شما را نمینویسد و دقیقاً هیچ دانش واقعی درباره دنیای واقعی ندارد.
اما تمرکز بر این محدودیت، جادوی آنچه در این اثبات مفهوم اتفاق میافتد را کاملاً نادیده میگیرد. دستاورد این است که یک مدل از نظر ساختاری نسبتاً بزرگ را روی کامپیوتری با تقریباً هیچ منبعی جای داده است. این نشان میدهد که با معماری هوشمندانه، میتوان شبکههای عصبی واقعی را روی سختافزارهای تعبیهشده بسیار ارزان اجرا کرد، و کاربردهای مفیدی برای مدلی با این اندازه وجود دارد. اسلاوا ایده یک دستگاه قهوهساز را تصور میکند که واقعاً درباره قهوه میداند: هر دانه، آسیاب، نسبت، دمای آب، همه به صورت آفلاین و بدون نیاز به برنامه.
صادقانه بگویم، وقتی صحبت از “هوش مصنوعی” میکنیم، همه چیز به این بستگی دارد که شما قصد انجام چه کاری را دارید. به بیان ساده، پرسیدن اینکه چقدر سختافزار برای هوش مصنوعی محلی نیاز دارید بدون مشخص کردن حجم کار، مانند این است که بپرسید چه وسیله نقلیهای نیاز دارید بدون اینکه هدف را بگویید. یک دوچرخه، یک سدان، یک وانت، یک تریلی و یک قطار همگی شما را “از نقطه A به B میرسانند”، اما برای کارهای کاملاً متفاوتی ساخته شدهاند. هوش مصنوعی دقیقاً همینطور است؛ این کاری است که شما با آن انجام میدهید که تعیین میکند به چه مقدار سختافزار نیاز دارید.
برای روشن شدن موضوع، سال گذشته توسعهدهنده دیگری پروژهای را منتشر کرد که یک مدل زبان هوش مصنوعی (یک مولد نام بیگرام) را در بازیهای اصلی Dragon Warrior و Final Fantasy روی NES جای داد. بله، سیستم سرگرمی نینتندو. توسعهدهنده امانوئل رودولا موفق شد کل جدول وزن مدل (۷۲۹ بایت) و کد استنتاج (حدود ۱۴۰ بایت اسمبلی دستنویس) را در رام اصلی بازی جای دهد تا نامهای شخصیتهای جدید را به صورت لحظهای تولید کند. این هوش مصنوعی واقعی است که روی پردازنده MOS 6502، قطعهای سیلیکونی که به سال ۱۹۷۵ بازمیگردد، اجرا میشود.
نتیجه نهایی پروژه slvDev این است که Per-Layer Embeddings بسیار بیشتر از آنچه اکثر مردم تصور میکردند مقیاسپذیر است و به شور و شوق اخیر پیرامون فلش با پهنای باند بالا به عنوان یک رسانه ذخیرهسازی لایهای برای سرورهای هوش مصنوعی اعتبار میبخشد. این هیجانانگیز است نه به این دلیل که ESP32 جایگزین کارت گرافیک دسکتاپ شما خواهد شد، بلکه به این دلیل که نشان میدهد همین ایدههای معماری میتوانند هوش مصنوعی را در کل طیف سختافزار، از دستگاههای تعبیهشده کوچک گرفته تا شتابدهندههای مراکز داده، به طور چشمگیری عملیتر کنند.
- کولبات
- مرداد 5, 1405
- 18 بازدید






