Ukwazaji wa KV Cache kwa ajili ya LLM za Kwenye Kifaa

Kuendesha Llama 3.2 3B kwenye kifaa cha Android chenye RAM ya 2 GB ni vigumu. Watengenezaji wengi hulenga uzito wa modeli (model weights). Hili ni kosa. Kichocheo halisi cha matumizi makubwa ya kumbukumbu ni KV cache.

KV cache hukua unapoendelea kuchati. Ukitumia usahihi wa kawaida wa FP16, cache hiyo hutumia mamia ya megabaiti. Hii husababisha programu yako kusimama (crash) baada ya mizunguko michache tu.

Unaweza kutatua hili kwa hatua tatu mahususi.

  1. Tumia Ukwazaji wa Usahihi Mchanganyiko (Mixed-Precision Quantization) Keys na values hazihitaji usahihi uleule. Key caches hushughulikia usahihi mdogo vizuri. Value caches haziwezi.

Njia hii inapunguza ukubwa wa cache yako kwa 62%. Kwa muktadha (context) wa tokeni 2048, unashuka kutoka 224 MB hadi 84 MB. Hii hutokea bila kubadilisha uzito wa modeli.

  1. Tekeleza Uondoaji wa Dirisha la Kuteleza (Sliding Window Eviction) Huwezi kuweka kila tokeni kwenye kumbukumbu inayofanya kazi. Tumia dirisha la kuteleza (sliding window) ili kuweka tokeni 1536 za hivi karibuni pekee. Weka tokeni 64 za kwanza kama nanga (anchors) ili kuhifadhi maelekezo ya mfumo (system prompt).

  2. Tumia Flash Spilling Tokeni zinapotoka kwenye dirisha la kuteleza, zihamishie kwenye hifadhi ya flash. Tumia faili zilizopangwa kwenye kumbukumbu (memory-mapped files) kwenye Android. Hifadhi ya kisasa ya UFS 4.0 ni ya haraka vya kutosha kuleta data hii tena kwenye kumbukumbu bila kuchelewa.

Matokeo ni makubwa. Kwenye Snapdragon 8 Gen 3:

Epuka makosa haya:

Jenga bajeti yako ya kumbukumbu kabla ya kujenga vipengele vyako.

Chanzo: https://dev.to/software_mvp-factory/kv-cache-quantization-for-on-device-llms-kf