یک زمان‌بند اولویت‌بندی سه‌لایه، تأخیر مدل زبانی روی دستگاه را از بیش از یک ثانیه به کمتر از دو-دهم ثانیه کاهش می‌دهد و باعث می‌شود اپلیکیشن‌های چت حتی زمانی که گوشی مشغول کارهای پس‌زمینه است، پاسخگو باقی بمانند. این سیستم که برای تراشه Tensor G3 و یک مدل ۳ میلیارد پارامتری ساخته شده، تأخیر را از ۱۴۲۰ میلی‌ثانیه به ۱۶۱ میلی‌ثانیه کاهش می‌دهد، بدون اینکه کارهای پس‌زمینه را متوقف کند.

چرا مدل‌های زبانی بزرگ (LLM) روی دستگاه با چالش مواجه می‌شوند

اجرای یک مدل زبانی بزرگ روی یک پردازنده موبایل، فشار زیادی به منابع وارد می‌کند. در تراشه Tensor G3، مدل ۳ میلیاردی از قبل حدود ۸۵٪ از واحد پردازش عصبی (NPU) را اشغال می‌کند. وقتی یک کار با اولویت پایین — مانند یک ایندکس‌کننده آفلاین — همزمان با باز کردن پنجره چت توسط کاربر اجرا می‌شود، زمان پاسخگویی محسوس از حدود ۱۴۰ میلی‌ثانیه به ۱۴۰۰ میلی‌ثانیه می‌پرد؛ یعنی کندی ده برابری که کاربر بلافاصله متوجه آن می‌شود.

مشکل فقط سرعت نیست. دستگاه‌های موبایل باید بین روانی رابط کاربری (UI)، عمر باتری و چندین اپلیکیشن که همگی درخواست پردازش دارند، تعادل برقرار کنند. یک صف ساده که کارها را به ترتیب پردازش می‌کند، باعث می‌شود رشته‌ی رابط کاربری (UI thread) منتظر کارهای پس‌زمینه بماند و یک دستیار گفتگو را به تجربه‌ای کُند تبدیل کند.

زمان‌بند سه‌لایه چگونه کار می‌کند

زمان‌بند جدید سه مؤلفه‌ی هماهنگ را در خط لوله استنتاج (inference pipeline) قرار می‌دهد:

  1. Priority Queue (صف اولویت) – یک min-heap که کارهای ورودی را بر اساس سطح اهمیت ثابت مرتب می‌کند.
  2. Preemption Controller (کنترل‌کننده پیش‌گیری) – وقتی یک درخواست با اولویت بالاتر می‌رسد، به جای حذف کارهای با اولویت پایین‌تر، آن‌ها را متوقف (pause) می‌کند.
  3. Token Budget Governor (مدیر بودجه توکن) – تعداد توکن‌هایی را که یک کار می‌تواند تولید کند، بر اساس وضعیت چرخه حیات (lifecycle) اپلیکیشن محدود می‌کند.

این‌ها در کنار هم اجازه می‌دهند یک درخواست چت در حالت پیش‌زمینه (foreground) مستقیماً به ابتدای صف برود، در حالی که کارهای پس‌زمینه در حالت توقف (parked state) باقی می‌مانند و آماده‌اند تا با آزاد شدن منابع، از سر گرفته شوند.

سطوح اولویت و پیش‌گیری (Preemption)

چهار سطح، آنچه را که می‌تواند متوقف شود تعریف می‌کنند:

سطح توضیحات
Foreground Chat تعامل حیاتی با رابط کاربری
Inline Suggestion راهنمایی‌های سبک تکمیل خودکار
Background Summary خلاصه‌سازی دوره‌ای محتوا
Offline Indexing پردازش انبوه داده‌ها

زمان‌بند هرگز یک کار با اولویت پایین را لغو نمی‌کند. در عوض، از حافظه پنهان کلید-مقدار (KV cache) مدل — ساختاری که نتایج میانی توجه (attention) را نگه می‌دارد — یک اسنپ‌شات می‌گیرد و کار را متوقف می‌کند. وقتی درخواست با اولویت بالا تمام شد، کنترل‌کننده اسنپ‌شات را بازیابی کرده و اجازه می‌دهد کار پس‌زمینه از همان جایی که متوقف شده بود، ادامه یابد. این رویکرد «توقف و ادامه» (pause-and-resume) از محاسبات مجدد پرهزینه‌ای که در صورت شروع دوباره کار از صفر رخ می‌داد، جلوگیری می‌کند.

حذف جزئی از KV-cache نیز اتلاف منابع را بیشتر کاهش می‌دهد. پرامپت سیستم (system prompt) ثابت در حافظه پنهان می‌ماند، در حالی که فقط مراحل پویای گفتگو از حافظه حذف می‌شوند. نتیجه، کاهش ۴۰ تا ۶۰ درصدی در هزینه بازآغاز پیش‌تکمیل (re-prefilling) مدل پس از یک توقف است.

مدیریت بودجه توکن‌ها بدون استفاده از تایمر

بسیاری از پیاده‌سازی‌ها برای حدس زدن زمان تسلیم کردن زمان CPU یا NPU توسط یک کار، به تایمرها متکی هستند. تایمرها ابزارهای زمختی هستند؛ آن‌ها یا باعث محرومیت منابع رابط کاربری (starvation) می‌شوند یا از ظرفیت تراشه کمتر از حد استفاده می‌کنند. زمان‌بند، تایمرها را با ProcessLifecycleOwner اندروید جایگزین می‌کند که رویدادهای چرخه حیات را منتشر می‌کند و به طور قابل اعتمادی نشان می‌دهد که اپلیکیشن در حالت پیش‌زمینه است یا پس‌زمینه.

  • ON_RESUME – اپلیکیشن دوباره بودجه پردازشی کامل را به دست می‌آورد و اجازه می‌دهد کارهای پیش‌زمینه معلق بدون مانع اجرا شوند.
  • ON_STOP – اپلیکیشن کارهای پس‌زمینه را به حدود ۲۵٪ از بودجه توکن معمول خود محدود می‌کند تا فضای کافی برای هرگونه درخواست ناگهانی در رابط کاربری حفظ شود.

با گره زدن تخصیص منابع به رویدادهای چرخه حیات، سیستم به جای بازه‌های زمانی دلخواه، به رفتار واقعی کاربر واکنش نشان می‌دهد.

بهبود عملکرد و موازنه (Trade-offs)

در یک صف ساده‌ی «اولین ورودی، اولین خروجی»، یک کار پس‌زمینه باعث می‌شود تأخیر چت پیش‌زمینه به حدود ۱۴۲۰ میلی‌ثانیه برسد. با فعال بودن زمان‌بند اولویت‌بندی، همان درخواست چت تقریباً در ۱۶۱ میلی‌ثانیه تکمیل می‌شود؛ یک بهبود ده برابری که تجربه کاربری روان را بازیابی می‌کند.

از سر گرفتن یک کار متوقف شده، حدود ۲۲٪ به زمان کل اجرای آن اضافه می‌کند. از آنجایی که کار پس‌زمینه حیاتی نیست، این موازنه (trade-off) قابل قبول باقی می‌ماند، به خصوص زمانی که رابط کاربری سریع و روان باقی می‌ماند.