𝗞𝗩 𝗖𝗮𝗰𝗵𝗲 𝗤𝘂𝗮𝗻𝘁𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗳𝗼𝗿 𝗢𝗻-𝗗𝗲𝘃𝗶𝗰𝗲 𝗟𝗟𝗠𝘀
२ GB RAM असलेल्या Android डिव्हाइसवर Llama 3.2 3B चालवणे कठीण आहे. बहुतेक डेव्हलपर्स मॉडेल वेट्सवर (model weights) लक्ष केंद्रित करतात. ही एक चूक आहे. मेमरी संपवणारा खरा मुख्य घटक KV cache आहे.
तुम्ही चॅट करत असताना KV cache वाढत जाते. जर तुम्ही स्टँडर्ड FP16 precision वापरले, तर cache शेकडो मेगाबाइट्स जागा व्यापते. यामुळे केवळ काही संवादानंतरच तुमचे ॲप क्रॅश होऊ शकते.
तुम्ही खालील तीन विशिष्ट पायऱ्या वापरून हे सुधारू शकता.
१. Mixed-Precision Quantization वापरा Keys आणि values साठी एकाच प्रकारच्या precision ची गरज नसते. Key caches कमी precision चांगल्या प्रकारे हाताळू शकतात, परंतु Value caches तसे करू शकत नाहीत.
- Keys साठी INT4 वापरा.
- Values साठी INT8 वापरा.
या पद्धतीमुळे तुमच्या cache चा आकार ६२% ने कमी होतो. २०४८ टोकन कॉन्टेक्स्टसाठी, तुमचा वापर २२४ MB वरून थेट ८४ MB पर्यंत खाली येतो. हे मॉडेल वेट्स न बदलता शक्य होते.
२. Sliding Window Eviction लागू करा तुम्ही प्रत्येक टोकन ॲक्टिव्ह मेमरीमध्ये ठेवू शकत नाही. फक्त सर्वात अलीकडील १५३६ टोकन्स ठेवण्यासाठी sliding window चा वापर करा. सिस्टम प्रॉम्प्ट (system prompt) सुरक्षित ठेवण्यासाठी पहिले ६४ टोकन्स 'anchors' म्हणून ठेवा.
३. Flash Spilling वापरा जेव्हा टोकन्स sliding window च्या बाहेर जातात, तेव्हा त्यांना flash storage मध्ये हलवा. Android वर memory-mapped files वापरा. आधुनिक UFS 4.0 स्टोरेज इतके वेगवान आहे की कोणताही लॅग (lag) न येता हा डेटा पुन्हा मेमरीमध्ये पेज करता येतो.
याचे परिणाम लक्षणीय आहेत. Snapdragon 8 Gen 3 वर:
- Peak memory २ GB च्या मर्यादेच्या खाली येते.
- जास्तीत जास्त संवादाचे टप्पे (turns) ४ वरून १२ पेक्षा जास्त वाढतात.
- टोकनचा वेग वाढतो कारण लहान caches मेमरी बँडविड्थचा अधिक चांगल्या प्रकारे वापर करतात.
- मॉडेलची गुणवत्ता जवळपास सारखीच राहते.
या चुका टाळा:
- Keys आणि values एकाच लेव्हलला quantize करू नका. यामुळे गुणवत्ता कमी होईल.
- Thermal throttling कडे दुर्लक्ष करू नका. सततच्या inference मुळे डिव्हाइस गरम होते. परफॉर्मन्स मॅनेज करण्यासाठी Android Thermal HAL तपासा.
- Cache lifecycle विसरू नका. मेमरी लीक (memory leaks) टाळण्यासाठी नेहमी mapped buffers ला योग्य scope शी जोडा.
फीचर्स तयार करण्यापूर्वी तुमचे मेमरी बजेट तयार करा.
स्त्रोत: https://dev.to/software_mvp-factory/kv-cache-quantization-for-on-device-llms-kf