𝗞𝗩 𝗖𝗮𝗰𝗵𝗲 𝗤𝘂𝗮𝗻𝘁𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗳𝗼𝗿 𝗢𝗻-𝗗𝗲𝘃𝗶𝗰𝗲 𝗟𝗟𝗠𝘀

2 GB RAM கொண்ட ஒரு Android சாதனத்தில் Llama 3.2 3B-ஐ இயக்குவது கடினம். பெரும்பாலான டெவலப்பர்கள் மாடல் வெயிட்டுகளில் (model weights) மட்டுமே கவனம் செலுத்துகிறார்கள். இது ஒரு தவறு. நினைவகத்தை (memory) உண்மையில் அதிகம் பயன்படுத்துவது KV cache தான்.

நீங்கள் உரையாடத் தொடரத் தொடர KV cache வளரும். நீங்கள் நிலையான FP16 precision-ஐப் பயன்படுத்தினால், cache நூற்றுக்கணக்கான மெகாபைட்களை எடுத்துக்கொள்ளும். இது சில உரையாடல்களுக்குப் பிறகு உங்கள் ஆப் (app) செயலிழக்க (crash) காரணமாகிறது.

இதை மூன்று குறிப்பிட்ட படிகள் மூலம் சரிசெய்யலாம்.

  1. Mixed-Precision Quantization-ஐப் பயன்படுத்தவும் Keys மற்றும் values ஆகியவற்றுக்கு ஒரே மாதிரியான precision தேவையில்லை. Key caches குறைந்த precision-ஐ நன்றாகக் கையாளும். ஆனால் Value caches அவ்வாறு செய்யாது.

இந்த அணுகுமுறை உங்கள் cache அளவை 62% குறைக்கிறது. 2048 token context-க்கு, நீங்கள் 224 MB-லிருந்து 84 MB-ஆகக் குறைக்கலாம். இது மாடல் வெயிட்டுகளை மாற்றாமலேயே சாத்தியமாகும்.

  1. Sliding Window Eviction-ஐச் செயல்படுத்தவும் ஒவ்வொரு token-ஐயும் active memory-யில் வைத்திருக்க முடியாது. சமீபத்திய 1536 tokens-களை மட்டும் வைத்திருக்க ஒரு sliding window-ஐப் பயன்படுத்தவும். System prompt-ஐப் பாதுகாக்க முதல் 64 tokens-களை anchors ஆக வைத்திருக்கவும்.

  2. Flash Spilling-ஐப் பயன்படுத்தவும் Tokens sliding window-லிருந்து வெளியேறும்போது, அவற்றை flash storage-க்கு மாற்றவும். Android-இல் memory-mapped files-களைப் பயன்படுத்தவும். நவீன UFS 4.0 storage, இந்தத் தரவை எந்தத் தாமதமும் இன்றி மீண்டும் memory-க்கு கொண்டு வர போதுமான வேகத்தைக் கொண்டுள்ளது.

இதன் முடிவுகள் குறிப்பிடத்தக்கவை. Snapdragon 8 Gen 3-இல்:

இந்தத் தவறுகளைத் தவிர்க்கவும்:

உங்கள் அம்சங்களை (features) உருவாக்குவதற்கு முன்பே, உங்கள் நினைவக வரவுசெலவுத் திட்டத்தை (memory budget) உருவாக்கிவிடுங்கள்.

ஆதாரம்: https://dev.to/software_mvp-factory/kv-cache-quantization-for-on-device-llms-kf