ایک تین تہوں والا ترجیحی شیڈیولر (three-layer priority scheduler) آن ڈیوائس لینگویج ماڈل کی لیٹنسی کو ایک سیکنڈ سے زیادہ سے کم کر کے دو دسویں حصے سے بھی کم کر دیتا ہے، جس سے فون بیک گراؤنڈ کاموں میں مصروف ہونے کے باوجود چیٹ ایپس کی رسپانسوئیٹی برقرار رہتی ہے۔ Tensor G3 چپ پر چلنے والے 3 بلین پیرامیٹر والے ماڈل کے لیے تیار کردہ یہ شیڈیولر، بیک گراؤنڈ جابز کو متاثر کیے بغیر لیٹنسی کو 1,420 ملی سیکنڈ سے کم کر کے 161 ملی سیکنڈ تک لے آتا ہے۔

آن ڈیوائس LLMs کو درپیش مشکلات

موبائل پروسیسر پر ایک بڑے لینگویج ماڈل کو چلانا وسائل کی شدید کمی کا باعث بنتا ہے۔ Tensor G3 پر، 3B ماڈل پہلے ہی نیورل پروسیسنگ یونٹ (NPU) کا تقریباً 85% حصہ استعمال کر لیتا ہے۔ جب کوئی کم ترجیحی کام—جیسے کہ ایک آف لائن انڈیکسر—اسی وقت چل رہا ہو جب صارف چیٹ ونڈو کھولتا ہے، تو محسوس ہونے والا رسپانس ٹائم تقریباً 140 ملی سیکنڈ سے بڑھ کر 1,400 ملی سیکنڈ ہو جاتا ہے، جو کہ دس گنا زیادہ سلو ڈاؤن ہے جسے صارفین فوری طور پر محسوس کرتے ہیں۔

مسئلہ صرف رفتار کا نہیں ہے۔ موبائل ڈیوائسز کو UI کی روانی، بیٹری لائف، اور متعدد ایپس کے درمیان توازن برقرار رکھنا ہوتا ہے جو سب کمپیوٹ کے لیے درخواست کرتے ہیں۔ ایک سادہ کیو (queue) جو کاموں کو ترتیب وار پروسیس کرتا ہے، UI تھریڈ کو بیک گراؤنڈ کام کے انتظار پر مجبور کر دیتا ہے، جس سے ایک بات چیت کرنے والا اسسٹنٹ سست تجربے میں بدل جاتا ہے۔

تین تہوں والا شیڈیولر کیسے کام کرتا ہے

نیا شیڈیولر انفرنس پائپ لائن میں تین مربوط اجزاء شامل کرتا ہے:

  1. Priority Queue – ایک من ہیپ (min-heap) جو آنے والے کاموں کو ان کی ساکت اہمیت کے لحاظ سے ترتیب دیتا ہے۔
  2. Preemption Controller – جب کوئی زیادہ ترجیحی ریکویسٹ آتی ہے، تو یہ کم ترجیحی کاموں کو ختم کرنے کے بجائے انہیں روک (pause) دیتا ہے۔
  3. Token Budget Governor – ایپ کے لائف سائیکل اسٹیٹ کی بنیاد پر اس بات کی حد مقرر کرتا ہے کہ کوئی کام کتنے ٹوکنز جنریٹ کر سکتا ہے۔

یہ مل کر ایک فور گراؤنڈ چیٹ ریکویسٹ کو لائن میں سب سے آگے آنے دیتے ہیں، جبکہ بیک گراؤنڈ کامز ایک پارک شدہ حالت میں رہتے ہیں، جو وسائل دستیاب ہونے پر دوبارہ شروع ہونے کے لیے تیار ہوتے ہیں۔

ترجیحی درجے اور پری ایمپشن

چار درجے یہ طے کرتے ہیں کہ کسے روکا جا سکتا ہے:

درجہ تفصیل
Foreground Chat اہم UI انٹرایکشن
Inline Suggestion آٹو کمپلیٹ اسٹائل کے اشارے
Background Summary وقتاً فوقتاً مواد کا خلاصہ
Offline Indexing بڑے پیمانے پر ڈیٹا پروسیسنگ

شیڈیولر کبھی بھی کم ترجیحی کام کو منسوخ نہیں کرتا۔ اس کے بجائے، یہ ماڈل کے کی-ویلیو (KV) کیش کا اسنیپ شاٹ لیتا ہے—جو کہ ایک ایسا ڈھانچہ ہے جو درمیانی اٹینشن نتائج کو محفوظ رکھتا ہے—اور کام کو روک دیتا ہے۔ جب ہائی پرائیورٹی ریکویسٹ مکمل ہو جاتی ہے، تو کنٹرولر اسنیپ شاٹ کو بحال کر دیتا ہے اور بیک گراؤنڈ ٹاسک کو وہیں سے شروع کرنے دیتا ہے جہاں وہ چھوڑا گیا تھا۔ یہ "پاز اینڈ ریسوم" (pause-and-resume) طریقہ کار اس مہنگے ری-کمپیوٹیشن سے بچاتا ہے جو کام کو شروع سے دوبارہ شروع کرنے کی صورت میں ہوتا۔

جزوی KV-کیش ایویکشن (eviction) فضول خرچی کو مزید کم کرتا ہے۔ ساکت سسٹم پرامپٹ کیش میں رہتا ہے، جبکہ صرف متحرک (dynamic) گفتگو کے ٹرنز کو نکالا جاتا ہے۔ اس کا نتیجہ وقفے کے بعد ماڈل کی ری-پری فلنگ (re-prefilling) کی لاگت میں 40% سے 60% تک کمی کی صورت میں نکلتا ہے۔

ٹائمرز کے بغیر ٹوکن بجٹ کا انتظام

بہت سے طریقے اس کا اندازہ لگانے کے لیے ٹائمرز پر انحصار کرتے ہیں کہ کام کو کب CPU یا NPU کا وقت چھوڑ دینا چاہیے۔ ٹائمرز غیر درست ہوتے؛ وہ یا تو UI کو متاثر کر سکتے ہیں یا چپ کا کم استعمال کر سکتے ہیں۔ شیڈیولر ٹائمرز کی جگہ Android کے ProcessLifecycleOwner کا استعمال کرتا ہے، جو لائف سائیکل ایونٹس جاری کرتا ہے جو قابل اعتماد طریقے سے بتاتے ہیں کہ ایپ کب فور گراؤنڈ میں ہے یا بیک گراؤنڈ میں۔

  • ON_RESUME – ایپ کو مکمل کمپیوٹ بجٹ واپس مل جاتا ہے، جس سے زیر التوا فور گراؤنڈ کاموں کو بغیر کسی رکاوٹ کے چلنے کی اجازت ملتی ہے۔
  • ON_STOP – ایپ بیک گراؤنڈ ٹاسکس کو ان کے معمول کے ٹوکن بجٹ کے تقریباً 25% تک محدود کر دیتی ہے، تاکہ کسی بھی اچانک UI ریکویسٹ کے لیے جگہ بچائی جا سکے۔

وسائل کی تقسیم کو لائف سائیکل ایونٹس سے جوڑ کر، سسٹم من مانے وقت کے بجائے حقیقی صارف کے رویے پر ردعمل دیتا ہے۔

کارکردگی میں اضافہ اور سمجھوتے

ایک سادہ فرسٹ کم فرسٹ سروڈ (first-come-first-served) کیو کے تحت، ایک بیک گراؤنڈ ٹاسک فور گراؤنڈ چیٹ کی لیٹنسی کو تقریباً 1,420 ملی سیکنڈ تک بڑھا دیتا ہے۔ ترجیحی شیڈیولر کے فعال ہونے کے ساتھ، وہی چیٹ ریکویسٹ تقریباً 161 ملی سیکنڈ میں مکمل ہو جاتی ہے، جو کہ دس گنا بہتری ہے اور ایک روانی والا یوزر ایکسپیرینس بحال کرتی ہے۔

کسی رکے ہوئے کام کو دوبارہ شروع کرنے سے اس کے کل ایگزیکیوشن ٹائم میں تقریباً 22% اضافہ ہوتا ہے۔ چونکہ بیک گراؤنڈ کام غیر اہم ہوتے ہیں، اس لیے یہ سمجھوتہ قابل قبول رہتا ہے، خاص طور پر جب UI تیز رفتار رہے۔