۵ دقیقه مطالعه
اجرای هوش مصنوعی در لبه: ملاحظات انتقال مدل از مرکز داده
اجرای مدل روی دستگاه، ربات یا سرور محلی، نیازمند توجه به تأخیر، حافظه، مصرف انرژی و شرایط ارتباطی است.

بیشتر افراد هوش مصنوعی را در یک پنجره گفتوگو میبینند؛ با مدلی که روی مجموعهای از پردازندههای گرافیکی در یک مرکز داده دور اجرا میشود. اما سهم بزرگ و رو به رشدی از هوش مصنوعی در جای دیگری اجرا میشود: روی تلفن همراه، در دوربین، داخل ربات یا روی یک سرور کوچک در همان ساختمانی که داده در آن تولید میشود. به این رویکرد هوش مصنوعی لبه (Edge AI) گفته میشود. انتقال مدل به این محیط تقریباً همه جنبههای توسعه آن را تغییر میدهد.
دلایل پردازش خارج از مرکز داده
- تأخیر. رفت و برگشت تا یک سرور دور، دهها تا صدها میلیثانیه زمان میبرد و با اینترنت ضعیف بسیار بیشتر. رباتی که از کنار یک مانع عبور میکند یا خط تولیدی که باید قطعه معیوب را جدا کند، نمیتواند این مدت منتظر بماند.
- حریم خصوصی و قوانین داده. ممکن است خروج ویدیوی سالن تولید، تصاویر پزشکی یا اسناد مشتریان از ساختمان مجاز نباشد. پردازش داده در محل تولید آن، این مسئله را بهطور کامل برطرف میکند.
- ارتباط اینترنتی. مزرعه، کشتی، معدن و انبار همیشه اینترنت پایدار ندارند. مدلی که بهصورت محلی اجرا میشود، با قطع اینترنت از کار نمیافتد.
- هزینه در مقیاس بالا. ارسال همه فریمهای همه دوربینها به فضای ابری، از نظر پهنای باند و پردازش پرهزینه است. در بسیاری از موارد پردازش لبه داده را فیلتر میکند و فقط موارد مهم ارسال میشوند.
محدودیتهای سختافزار لبه
سختافزار لبه همزمان از چهار جهت محدود است:
- حافظه. وزنهای مدل باید در کنار همه برنامههای دیگری که دستگاه اجرا میکند جای بگیرند.
- توان پردازشی. بسیار کمتر از یک پردازنده گرافیکی مرکز داده است؛ بنابراین مدلهای بزرگ کند اجرا میشوند یا اصلاً اجرا نمیشوند.
- مصرف انرژی. دستگاهی که با باتری کار میکند، بودجهای در حد چند وات یا حتی کمتر دارد.
- گرما. یک محفظه بسته زیر آفتاب، هنگام گرم شدن سرعت پردازنده خود را کاهش میدهد. بنابراین سرعتی که روی میز کار اندازه میگیرید، ممکن است با سرعت در محیط واقعی متفاوت باشد.
کاهش نیازهای مدل
کوانتیزهسازی یعنی ذخیره وزنها (و اغلب خروجی لایهها) با تعداد بیت کمتر. آموزش معمولاً با اعداد اعشاری ۳۲ یا ۱۶ بیتی انجام میشود. اگر وزنها به شکل عدد صحیح ۸ بیتی ذخیره شوند، حدود چهار برابر کوچکتر از حالت ۳۲ بیتی میشوند و قالبهای ۴ بیتی حدود هشت برابر. وزن کوچکتر یعنی جابهجایی کمتر داده در حافظه، که اغلب گلوگاه اصلی است، و محاسبه با عدد صحیح روی بسیاری از تراشهها کمهزینهتر است. هزینه این روش، کاهش مقداری از دقت است که بسته به مدل و روش از ناچیز تا قابل توجه متغیر است و باید روی کار خودتان اندازهگیری شود.
تقطیر (Distillation) یعنی آموزش یک مدل کوچک به نام «شاگرد» برای تقلید از یک مدل بزرگ به نام «استاد». شاگرد در همه زمینهها به عملکرد استاد نمیرسد، اما در یک کار مشخص میتواند با کسری از اندازه آن به عملکرد بسیار نزدیکی دست یابد.
هرس کردن (Pruning) وزنها یا بخشهایی را که سهم کمی دارند حذف میکند. این روش زمانی بیشترین اثر را دارد که سختافزار و محیط اجرا واقعاً بتوانند از بخشهای حذفشده عبور کنند.
انتخاب معماری کوچکتر اغلب مؤثرترین روش است: مدلی که از ابتدا برای تلفن همراه یا سیستمهای نهفته طراحی شده، معمولاً از مدل بزرگی که بعداً فشرده شده عملکرد بهتری دارد.
محیط اجرا و سختافزار
یک مدل یکسان، بسته به نحوه اجرا، میتواند چند برابر سریعتر یا کندتر باشد. محیطهای اجرایی مانند ONNX Runtime، TensorRT برای سختافزار انویدیا، TensorFlow Lite (که اکنون LiteRT نام دارد) برای تلفن همراه و میکروکنترلرها، و llama.cpp برای اجرای مدلهای زبانی روی CPU و GPU معمولی، هر کدام برای نوعی از سختافزار بهینه شدهاند. بسیاری از دستگاهها یک NPU نیز دارند؛ پردازندهای که مخصوص محاسبات شبکه عصبی ساخته شده است، اما تنها زمانی کمک میکند که محیط اجرا و مدل شما واقعاً از آن استفاده کنند.
معیارهای ارزیابی
نتایج درجشده در مشخصات فنی ممکن است با عملکرد در شرایط واقعی تفاوت داشته باشند. پیش از تصمیمگیری، روی همان سختافزاری که قرار است تحویل دهید اندازهگیری کنید:
- صدک تأخیر، نه میانگین. صدک ۹۵ نشان میدهد لحظههای نامطلوب چقدر کندند و همین لحظهها هستند که یک حلقه کنترل یا یک کاربر متوجه آنها میشود.
- توان عملیاتی زیر بار، در زمانی که بقیه سیستم نیز در حال کار است.
- مصرف انرژی و دما در طول زمان. سیستم را یک ساعت اجرا کنید، نه یک دقیقه، و بررسی کنید آیا سرعت ثابت میماند یا نه.
- دقت روی داده خودتان، پس از کوانتیزهسازی و هر تغییر دیگر.
الگوی ترکیبی
پردازش لبه و پردازش ابری جایگزین یکدیگر نیستند. یک طراحی رایج این است که یک مدل کوچک و سریع روی دستگاه، تصمیمهایی را بگیرد که نمیتوانند منتظر بمانند، و موارد دشوار یا مشکوک برای یک مدل بزرگتر در مرکز داده ارسال شوند. برای نمونه، یک دوربین میتواند در همان محل تشخیص دهد که فردی وارد منطقه ممنوعه شده، بیدرنگ واکنش نشان دهد و سپس چند فریم را برای بررسی دقیقتر ارسال کند. یک ربات حلقه بینایی و کنترل خود را روی خود ربات نگه میدارد، در حالی که برنامهریزی و گزارشگیری میتواند در جای دیگری انجام شود.
همین تقسیم، یعنی تصمیمگیری درباره محل اجرای هر بخش، جایی است که بخش زیادی از مهندسی واقعی محصولات هوش مصنوعی رخ میدهد. برای ما نیز جذابترین بخش کار همین است: هماهنگی یک مدل، نرمافزار آن و سختافزاری که روی آن اجرا میشود.


