મેં સ્ટ્રીમિંગ અને કેશિંગ દ્વારા AI લેટન્સી કેવી રીતે સુધારી
મેં એક ક્લાયન્ટ માટે ચેટ આસિસ્ટન્ટ બનાવ્યો હતો. તે બરાબર કામ કરતો નહોતો.
યુઝર્સ પ્રશ્ન પૂછતા. તેઓ ૧૫ સેકન્ડ રાહ જોતા. તેમને ખાલી સ્ક્રીન દેખાતી. પછી તેઓ જતા રહેતા. ક્લાયન્ટ નાખુશ હતો.
સમસ્યા AI મોડેલમાં નહોતી. સમસ્યા મારા કોડમાં હતી. યુઝરને કંઈપણ બતાવતા પહેલા હું સંપૂર્ણ પ્રતિસાદ (response) ની રાહ જોતો હતો.
મેં ઘણા ઉપાયો અજમાવ્યા. Async થી કોઈ મદદ મળી નહીં. ચોક્કસ ટેક્સ્ટનું કેશિંગ (Caching) ફક્ત FAQs માટે જ કામ કરતું હતું. ટોકન કાઉન્ટ (token counts) મર્યાદિત કરવાથી જવાબો નકામા બની જતા હતા.
મેં બે પદ્ધતિઓનો ઉપયોગ કરીને આ સમસ્યાનો ઉકેલ લાવ્યો.
- સ્ટ્રીમિંગ (Streaming)
મોટાભાગની AI APIs સ્ટ્રીમિંગને સપોર્ટ કરે છે. ટેક્સ્ટના આખા બ્લોક માટે રાહ જોવાને બદલે, તમને નાના ટુકડાઓ (chunks) મળે છે. તમે આ ટુકડાઓ આવે તેમ બતાવી શકો છો.
પહેલો શબ્દ ૩૦૦ms માં દેખાઈ જાય છે. સંપૂર્ણ જવાબ આપવામાં હજુ પણ સમય લાગે છે, પરંતુ યુઝરને તરત જ પ્રગતિ દેખાય છે. આનાથી યુઝર્સ જોડાયેલા રહે છે.
- સેમેન્ટિક કેશિંગ (Semantic Caching)
યુઝર્સ અવારનવાર સમાન પ્રશ્નો પૂછતા હોય છે. મેં એક એવું કેશ બનાવ્યું જે અર્થ સમજી શકે છે.
હું sentence embeddings અને vector database નો ઉપયોગ કરું છું. API ને કોલ કરતા પહેલા, હું તપાસું છું કે મારા કેશમાં સમાન પ્રશ્ન અસ્તિત્વ ધરાવે છે કે નહીં.
જો મેચ મળી જાય, તો હું ૧૦ms માં જવાબ આપી દઉં છું. આનાથી મારા ૩૦% યુઝર્સ માટે API કોલ કરવાની જરૂરિયાત દૂર થઈ ગઈ.
પરિણામો:
• સ્ટ્રીમિંગ રિયલ-ટાઇમ પ્રગતિ બતાવીને યુઝર એક્સપિરિયન્સમાં સુધારો કરે છે. • સેમેન્ટિક કેશિંગ ખર્ચ ઘટાડે છે અને વારંવાર પૂછાતા પ્રશ્નો માટે લેટન્સી ઘટાડે છે.
Trade-offs:
• સ્ટ્રીમિંગ તમારા બેકએન્ડને વધુ જટિલ બનાવે છે. તમારે ઓપન કનેક્શન મેનેજ કરવા પડે છે. • કેશિંગ માટે વધારાના હાર્ડવેર અથવા vector database જેવા સોફ્ટવેરની જરૂર પડે છે. • કેશ થ્રેશોલ્ડ (thresholds) સેટ કરવા મુશ્કેલ છે. જો થ્રેશોલ્ડ ખૂબ ઊંચું હોય, તો તમે મેચ ચૂકી જશો. જો તે ખૂબ નીચું હોય, તો તમે ખોટા જવાબો આપશો.
ધીમી ગતિ માટે AI મોડેલને દોષ આપવાનું બંધ કરો. તમે ડેટા કેવી રીતે હેન્ડલ કરો છો તે જુઓ.
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi