ഞാൻ MTP TPS പിന്നാലെ പോയത് നിർത്തി, പകരം 24GB VRAM-ൽ പ്രവർത്തിക്കുന്ന ഒരു ലോക്കൽ 27B ഏജന്റിനെ കണ്ടെത്തി

സിംഗിൾ പ്രോംപ്റ്റ് ബെഞ്ച്മാർക്കുകളെക്കുറിച്ച് എനിക്ക് താൽപ്പര്യമില്ല.

എനിക്ക് താൽപ്പര്യം ലൂപ്പിനെക്കുറിച്ചാണ് (the loop).

ഒരു കോഡിംഗ് ഏജന്റ് മണിക്കൂറുകളോളം പ്രവർത്തിക്കേണ്ടതുണ്ട്. എഡിറ്റുകൾ, ടെർമിനൽ കോളുകൾ, റീട്രൈകൾ (retries), വർദ്ധിച്ചുവരുന്ന കോൺടെക്സ്റ്റ് (context) എന്നിവ കൈകാര്യം ചെയ്യാൻ അതിന് സാധിക്കണം. പത്ത് പ്രോംപ്റ്റുകൾക്ക് ശേഷം മോഡൽ പരാജയപ്പെട്ടാൽ, അത് ഉപയോഗശൂന്യമാണ്.

ഒരു സിംഗിൾ 24GB GPU-വിൽ എനിക്ക് ഒരു 27B മോഡൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുമോ എന്ന് ഞാൻ പരിശോധിക്കാൻ ആഗ്രഹിച്ചു. ഞാൻ Qwopus3.6-27B-v2 പരീക്ഷിക്കുകയും പുതിയൊരു വേർഷൻ നിർമ്മിക്കുകയും ചെയ്തു: XReyRobert/Qwopus3.6-27B-v2-GPTQ-Pro-v1.

ഒരു സ്റ്റേബിൾ 24GB ഏജന്റ് ലൂപ്പിനായുള്ള എന്റെ സെറ്റപ്പ് ഇതാ:

  • Model: Qwopus3.6-27B GPTQ-Pro 4-bit
  • Engine: vLLM with GPTQ-Marlin
  • Context: 131k tokens
  • KV Cache: FP8 (fp8_e5m2)
  • Strategy: Prefix caching enabled
  • Constraint: max_num_seqs=1

എന്തുകൊണ്ടാണ് max_num_seqs=1 ഉപയോഗിക്കുന്നത്?

ഒരു സിംഗിൾ 24GB കാർഡിൽ, പാരലലിസം (parallelism) സൗജന്യമല്ല. നിങ്ങൾ ഒന്നിലധികം റിക്വസ്റ്റുകൾ റൺ ചെയ്താൽ, അവ മെമ്മറിയ്ക്ക് വേണ്ടി മത്സരിക്കും. ഒരു റിക്വസ്റ്റ് വൃത്തിയായി പൂർത്തിയാകണമെന്നാണ് ഞാൻ ആഗ്രഹിക്കുന്നത്. രണ്ട് തകരാറുള്ള ഉത്തരങ്ങളേക്കാൾ ഉപരിയായി ഒരു ഉപയോഗപ്രദമായ ഉത്തരം ലഭിക്കുന്നതിനാണ് ഞാൻ മുൻഗണന നൽകുന്നത്.

ഞാൻ സ്പെക്കുലേറ്റീവ് ഡീകോഡിംഗും (speculative decoding - MTP) ഒഴിവാക്കി. ഒരു സിംഗിൾ 3090-ൽ, ലോങ്ങ് കോൺടെക്സ്റ്റുകളിൽ (long contexts) എൻഡ്-ടു-എൻഡ് വേഗത വർദ്ധിപ്പിക്കാതെ തന്നെ MTP മെമ്മറി സമ്മർദ്ദവും സങ്കീർണ്ണതയും വർദ്ധിപ്പിക്കുന്നു.

യഥാർത്ഥത്തിൽ ശ്രദ്ധിക്കേണ്ട അളവുകോലുകൾ (metrics):

  • Prefix cache hit ratio: ~83%
  • Average TTFT: ~5.7s at 33k tokens
  • Prefill throughput: ~1917 tok/s
  • Decode speed: ~43 tok/s

പ്രിഫിക്സ് ക്യാഷ് (prefix cache) ഹിറ്റ് ചെയ്യുമ്പോൾ നിങ്ങളുടെ ലേറ്റൻസി (latency) കുറയുന്നു. നിങ്ങൾ ടാസ്ക്കുകൾ മാറ്റുമ്പോൾ, ക്യാഷ് 'കോൾഡ്' ആകുകയും ലേറ്റൻസി കൂടുകയും ചെയ്യുന്നു. അത് സ്വാഭാവികമാണ്. ടാസ്ക് സ്ഥിരമാകുമ്പോൾ ഉയർന്ന ക്യാഷ് റീയൂസ് (cache reuse) നിലവാരത്തിലേക്ക് തിരികെ വരിക എന്നതാണ് ലക്ഷ്യം.

നിങ്ങൾ ഒരു പ്രോംപ്റ്റ് മാത്രം പരിശോധിക്കുകയാണെങ്കിൽ, നിങ്ങൾ തെറ്റായ കാര്യമാണ് പരിശോധിക്കുന്നത്. കോഡിംഗ് ഏജന്റുകളെ സംബന്ധിച്ചിടത്തോളം, നിങ്ങൾ ദീർഘകാല സ്ഥിരത (long-run stability) പരിശോധിക്കണം.

നിങ്ങൾ ഒരു സിംഗിൾ GPU-വിൽ ഏജന്റ് ലൂപ്പുകൾ റൺ ചെയ്യുന്നുണ്ടോ? KV cache അല്ലെങ്കിൽ prefix caching-നായി നിങ്ങൾ എന്തൊക്കെ വിദ്യകളാണ് ഉപയോഗിക്കുന്നത്?

Source: https://dev.to/xreyrobertibm/i-stopped-chasing-mtp-tps-and-got-a-local-27b-agent-that-actually-stayed-usable-on-24gb-vram-5897

Optional learning community: https://t.me/GyaanSetuAi