மூன்று அடுக்கு முன்னுரிமை அட்டவணைப்படுத்தி, சாதனத்திலேயே இயங்கும் மொழி மாதிரியின் தாமதத்தை ஒரு வினாடிக்கும் மேலாக இருந்ததிலிருந்து இரண்டு பத்தில் ஒரு வினாடிக்கும் குறைவாகக் குறைக்கிறது. இதன் மூலம் போன் பின்னணி வேலைகளில் (background work) பிஸியாக இருந்தாலும், சாட் செயலிகள் தடையின்றி இயங்குவதை உறுதி செய்கிறது. Tensor G3 சிப்பில் இயங்கும் 3 பில்லியன் அளவுருக்கள் கொண்ட மாதிரிக்காக உருவாக்கப்பட்ட இது, பின்னணி வேலைகளைத் தடுக்காமல் தாமதத்தை 1,420 ms-லிருந்து 161 ms-ஆகக் குறைக்கிறது.

சாதனத்திலேயே இயங்கும் LLM-கள் ஏன் சிரமப்படுகின்றன

மொபைல் பிராசஸரில் ஒரு பெரிய மொழி மாதிரியை இயக்குவது வளங்களுக்கான கடும் போட்டியை உருவாக்குகிறது. Tensor G3-இல், 3 B மாதிரி ஏற்கனவே நரம்பியல் செயலாக்க அலகின் (NPU) சுமார் 85% வளங்களை எடுத்துக்கொள்கிறது. பயனர் ஒரு சாட் விண்டோவைத் திறக்கும் அதே நேரத்தில், ஒரு ஆஃப்லைன் இண்டெக்சர் போன்ற குறைந்த முன்னுரிமை கொண்ட பணி இயங்கும்போது, உணரப்படும் பதில் நேரம் (response time) தோராயமாக 140 ms-லிருந்து 1,400 ms ஆக உயர்கிறது. இது பயனர்கள் உடனடியாகக் கவனிக்கும் பத்து மடங்கு மந்தமான செயலாகும்.

பிரச்சனை வேகம் மட்டுமல்ல. மொபைல் சாதனங்கள் UI மென்மைத்தன்மை (smoothness), பேட்டரி ஆயுள் மற்றும் கணக்கீட்டுத் தேவைகளைக் கோரும் பல செயலிகளைச் சமநிலைப்படுத்த வேண்டும். வேலைகளை வரிசைப்படி கையாளும் ஒரு சாதாரண வரிசை (naïve queue), UI திரையை பின்னணி வேலைக்காகக் காத்திருக்கச் செய்கிறது, இது ஒரு உரையாடல் உதவியாளரை மந்தமான அனுபவமாக மாற்றுகிறது.

மூன்று அடுக்கு அட்டவணைப்படுத்தி எவ்வாறு செயல்படுகிறது

புதிய அட்டவணைப்படுத்தி, இன்ஃபரன்ஸ் பைப்லைனில் (inference pipeline) ஒருங்கிணைக்கப்பட்ட மூன்று கூறுகளைச் சேர்க்கிறது:

  1. முன்னுரிமை வரிசை (Priority Queue) – ஒரு min-heap, இது வரும் வேலைகளை அவற்றின் நிலையான முக்கியத்துவ நிலையின் அடிப்படையில் வரிசைப்படுத்துகிறது.
  2. முன்னுரிமை மாற்றக் கட்டுப்படுத்தி (Preemption Controller) – அதிக முன்னுரிமை கொண்ட கோரிக்கை வரும்போது, இது குறைந்த முன்னுரிமை கொண்ட வேலைகளைத் தள்ளுவதற்குப் பதிலாக, அவற்றை இடைநிறுத்தம் (pause) செய்கிறது.
  3. டோக்கன் வரம்பு மேலாளர் (Token Budget Governor) – செயலியின் வாழ்க்கைச் சுழற்சி நிலையைப் (lifecycle state) பொறுத்து, ஒரு வேலை உருவாக்கக்கூடிய டோக்கன்களின் எண்ணிக்கையைக் கட்டுப்படுத்துகிறது.

இவை அனைத்தும் இணைந்து, ஒரு முன்னணியில் உள்ள (foreground) சாட் கோரிக்கையை வரிசையின் முன்னால் கொண்டு வர அனுமதிக்கின்றன, அதே நேரத்தில் பின்னணி வேலைகள் வளங்கள் கிடைக்கும்போது மீண்டும் தொடங்குவதற்காக ஒரு நிறுத்தி வைக்கப்பட்ட நிலையில் (parked state) காத்திருக்கும்.

முன்னுரிமை நிலைகள் மற்றும் இடமாற்றம் (Preemption)

எதை இடைமறிக்கலாம் என்பதை நான்கு நிலைகள் வரையறுக்கின்றன:

நிலை விளக்கம்
Foreground Chat முக்கியமான UI தொடர்பு
Inline Suggestion Autocomplete பாணி குறிப்புகள்
Background Summary காலமுறை உள்ளடக்கச் சுருக்கம்
Offline Indexing மொத்தத் தரவு செயலாக்கம்

அட்டவணைப்படுத்தி ஒரு குறைந்த முன்னுரிமை கொண்ட வேலையை ஒருபோதும் ரத்து செய்வதில்லை. அதற்குப் பதிலாக, அது மாதிரியின் முக்கிய-மதிப்பு (KV) கேச் (cache)-ஐ—இது இடைநிலை அட்டென்ஷன் முடிவுகளைக் கொண்டிருக்கும் ஒரு அமைப்பு—ஒரு ஸ்னாப்ஷாட்டாக (snapshot) எடுத்து வேலையை நிறுத்தி வைக்கிறது. அதிக முன்னுரிமை கொண்ட கோரிக்கை முடிந்ததும், கட்டுப்படுத்தி அந்த ஸ்னாப்ஷாட்டை மீட்டெடுத்து, பின்னணிப் பணி விட்ட இடத்திலிருந்து தொடர அனுமதிக்கிறது. இந்த “pause-and-resume” அணுகுமுறை, வேலையைத் தொடக்கத்திலிருந்து மீண்டும் தொடங்கினால் ஏற்படும் அதிகப்படியான மறு கணக்கீட்டைத் (recomputation) தவிர்க்கிறது.

பகுதி ரீதியான KV-cache நீக்கம் (eviction) வீணாவதைக் குறைக்கிறது. நிலையான சிஸ்டம் பிராம்ட் (system prompt) கேச்சிலேயே இருக்கும், ஆனால் மாறும் உரையாடல் திருப்பங்கள் மட்டுமே நீக்கப்படும். இதன் விளைவாக, ஒரு இடைநிறுத்தத்திற்குப் பிறகு மாதிரியை மீண்டும் நிரப்புவதற்கான (re-prefilling) செலவில் 40%–60% குறைப்பு ஏற்படுகிறது.

டைமர்கள் இன்றி டோக்கன் வரம்புகளை நிர்வகித்தல்

பல செயலாக்கங்கள் ஒரு வேலை எப்போது CPU அல்லது NPU நேரத்தை விட்டுக்கொடுக்க வேண்டும் என்பதைக் கணிக்க டைமர்களை (timers) நம்பியிருக்கின்றன. டைமர்கள் துல்லியமானவை அல்ல; அவை UI-ஐப் பாதிப்படையச் செய்யலாம் அல்லது சிப்பை முழுமையாகப் பயன்படுத்தாமல் விடலாம். இந்த அட்டவணைப்படுத்தி டைமர்களுக்குப் பதிலாக ஆண்ட்ராய்டின் ProcessLifecycleOwner-ஐப் பயன்படுத்துகிறது, இது செயலி முன்னணியில் (foreground) அல்லது பின்னணியில் (background) உள்ளதை நம்பகமான முறையில் உணர்த்தும் வாழ்க்கைச் சுழற்சி நிகழ்வுகளை (lifecycle events) வெளியிடுகிறது.

  • ON_RESUME – செயலி முழுமையான கணக்கீட்டு வரம்பைப் பெறுகிறது, இது நிலுவையில் உள்ள முன்னணியில் உள்ள வேலைகள் தடையின்றி இயங்க அனுமதிக்கிறது.
  • ON_STOP – செயலி பின்னணிப் பணிகளை அவற்றின் சாதாரண டோக்கன் வரம்பில் தோராயமாக 25% ஆகக் குறைக்கிறது, இது ஏதேனும் திடீர் UI கோரிக்கைகளுக்கான இடவசதியை (headroom) பாதுகாக்கிறது.

வள ஒதுக்கீட்டை வாழ்க்கைச் சுழற்சி நிகழ்வுகளுடன் இணைப்பதன் மூலம், இந்த அமைப்பு தன்னிச்சையான நேரப் பிரிவுகளுக்குப் பதிலாக, உண்மையான பயனர் நடத்தையின்கேற்ப செயல்படுகிறது.

செயல்திறன் முன்னேற்றங்கள் மற்றும் சமநிலைகள் (Trade-offs)

ஒரு சாதாரண 'முதலில் வருபவருக்கே முன்னுரிமை' (first-come-first-served) வரிசையின் கீழ், ஒரு பின்னணிப் பணி முன்னணியில் உள்ள சாட் தாமதத்தை சுமார் 1,420 ms ஆகத் தள்ளுகிறது. முன்னுரிமை அட்டவணைப்படுத்தி செயல்பாட்டில் இருக்கும்போது, அதே சாட் கோரிக்கை தோராயமாக 161 ms-இல் முடிவடைகிறது, இது ஒரு தடையற்ற பயனர் அனுபவத்தை மீட்டெடுக்கும் பத்து மடங்கு முன்னேற்றமாகும்.

நிறுத்தப்பட்ட ஒரு வேலையை மீண்டும் தொடங்குவது அதன் மொத்தச் செயல்பாட்டு நேரத்தை சுமார் 22% அதிகரிக்கிறது. பின்னணி வேலைகள் முக்கியமானவை அல்ல என்பதால், குறிப்பாக UI விரைவாக இயங்கும்போது, இந்தச் சமநிலை ஏற்றுக்கொள்ளத்தக்கதாகவே உள்ளது.