જો તમે મોટાભાગની OCR પાઇપલાઇન્સમાં 300 પૃષ્ઠોનો કાનૂની દસ્તાવેજ અથવા બાઈન્ડ થયેલ વાર્ષિક અહેવાલ નાખો, તો સોફ્ટવેર તેને શાંતિથી ટુકડાઓમાં વહેંચી દેશે. પેજ એક, પ્રોસેસ, મેમરી ક્લિયર. પેજ બે, પ્રોસેસ, મેમરી ક્લિયર. જ્યારે સિસ્ટમ પાછળના એક્ઝિબિટ્સ સુધી પહોંચે છે, ત્યારે પ્રસ્તાવનામાંથી મેળવેલ કોઈપણ સંદર્ભ (context) ક્યારનોય ખોવાઈ ગયો હોય છે. ફૂટનોટ્સ અનાથ બની જાય છે. પેજ વચ્ચે વહેંચાયેલ ટેબલ્સ તેમનું માળખું ગુમાવે છે. પેજ પર સતત ચાલતા હેડર્સ ખોટી રીતે લેબલ થઈ જાય છે. પરિણામ એક એવી ટેક્સ્ટ ફાઇલ છે જેને માણસે ફરીથી જોડવી પડે છે.

Baidu માને છે કે આ કાર્યપ્રણાલી મૂળભૂત રીતે ખામીયુક્ત છે. તેમનો જવાબ Unlimited OCR છે, જે એક એવી આર્કિટેક્ચર છે જે સામાન્ય રીતે થતા GPU મેમરીના વિસ્ફોટ વગર, એક જ ફોરવર્ડ પાસમાં વિશાળ, બહુ-પેજ દસ્તાવેજોને ગ્રહણ કરવા માટે ડિઝાઇન કરવામાં આવી છે. તેની યુક્તિ એક નવું અટેન્શન મિકેનિઝમ છે જે મેમરીને હાર્ડ ડ્રાઇવની જેમ નહીં પણ માનવ વર્કિંગ મેમરીની જેમ જુએ છે: સ્ત્રોત સામગ્રીને તમારી સામે રાખો, તમે હમણાં શું લખ્યું તે યાદ રાખો, અને ભૂતકાળને ઝાંખો થવા દો.

લાંબા દસ્તાવેજો સ્ટાન્ડર્ડ OCR ને કેમ નિષ્ફળ બનાવે છે

આ સુધારાને સમજવા માટે, પરંપરાગત એન્ડ-ટુ-એન્ડ OCR સિસ્ટમ્સ ક્યાં નિષ્ફળ જાય છે તે જોવું મદદરૂપ થશે.

મોટાભાગની આધુનિક OCR પાઇપલાઇન્સ તેમના ડેકોડર તરીકે લાર્જ લેંગ્વેજ મોડલનો ઉપયોગ કરે છે. જેમ મોડલ પેજ વાંચે છે અને ટેક્સ્ટ જનરેટ કરે છે, તેમ તે KV કેશ તરીકે ઓળખાતા આંતરિક પ્રતિનિધિત્વ (internal representations) સંગ્રહિત કરે છે—જે મૂળભૂત રીતે કી (keys) અને વેલ્યુઝ (values) ની એક ડાયરી છે જે મોડલને તેણે શું કહ્યું છે તેના પર નજર રાખવામાં મદદ કરે છે. સમસ્યા એ છે કે આ ડાયરી આઉટપુટની દરેક નવી લાઇન સાથે રેખીય રીતે વધતી જાય છે. દસ પેજ પ્રોસેસ કરો, તો કેશ દસ પેજ જેટલી ઊંડી હોય છે. સો પ્રોસેસ કરો, તો તે લાખો ટોકન્સ સુધી ફૂલી જાય છે, જે VRAM નો વપરાશ વધારે છે અને જનરેશનની ઝડપને ધીમી કરી દે છે.

એન્જિનિયરો આ સમસ્યાનો ઉકેલ લાવવા માટે તેને અવગણી દે છે. તેઓ દસ્તાવેજોને સિંગલ પેજમાં કાપી નાખે છે, દરેક પેજને સ્વતંત્ર રીતે મોડલ દ્વારા ચલાવે છે, અને દરેક સ્ટેપ વચ્ચે KV કેશ રીસેટ કરે છે. આનાથી કામ તો ચાલે છે, પરંતુ તે મોડલના કોઈપણ સતત પ્રવાહને છીનવી લે છે. પેજ ત્રણ પર શરૂ થતો અને પેજ ચાર પર સમાપ્ત થતો ફકરો વચ્ચેથી કપાઈ જાય છે. પેજ-ક્રોસિંગ ટેબલ ફોર્મેટિંગ વિખેરાઈ જાય છે. અગાઉના વિભાગોના સંદર્ભો તૂટેલી લિંક્સમાં ફેરવાઈ જાય છે કારણ કે ડેકોડર પાસે અગાઉ શું આવ્યું હતું તેની કોઈ સ્થિર મેમરી હોતી નથી. મોડલ ખરેખર દસ્તાવેજ વાંચતું નથી; તે માત્ર અલગ-અલગ ફ્લેશકાર્ડ્સનો ઉપયોગ કરી રહ્યું છે.

માનવીય યુક્તિ: Reference Sliding Window Attention

Baidu ના સંશોધકોએ માનવ સંજ્ઞાન (human cognition) માંથી પ્રેરણા લઈને આ સમસ્યાનો ઉકેલ શોધ્યો છે. પુસ્તકમાંથી કોઈ ફકરો મેન્યુઅલી કોપી કરવા વિશે વિચારો. તમે અગાઉ કોપી કરેલા દરેક વાક્યને તમારા મનમાં લોડ કરીને રાખતા નથી. તમે સ્ત્રોત પર નજર નાખો છો, તમે લખેલા છેલ્લા થોડા શબ્દો જુઓ છો, અને આગળ વધો છો. તમારી વર્કિંગ મેમરી નાની છે, પરંતુ કારણ કે સ્ત્રોત ટેક્સ્ટ તમારી સામે ખુલ્લી રહે છે, તેથી કાર્ય સરળ બની જાય છે.

Reference Sliding Window Attention, અથવા R-SWA, બરાબર આ જ અંતર્જ્ઞાનને વ્યવસ્થિત કરે છે.

તેની અંદર, KV કેશ એક નિશ્ચિત-લંબાઈના ક્યુ (queue) માં ફેરવાઈ જાય છે. જ્યારે મોડલ નવો ટોકન જનરેટ કરે છે, ત્યારે તે "રેફરન્સ ટોકન્સ"—મૂળ વિઝ્યુઅલ ઈમેજ એમ્બેડિંગ્સ અને પ્રારંભિક પ્રોમ્પ્ટ—ની સંપૂર્ણ દૃશ્યતા જાળવી રાખે છે, પરંતુ તે ફક્ત તેના દ્વારા વ્યક્તિગત રીતે જનરેટ કરવામાં આવેલા છેલ્લા 128 ટોકન્સ પર જ પાછળ જુએ છે. બસ એટલું જ. મોડલ પેજ એક પર હોય કે પેજ પચાસ પર, તેના પોતાના આઉટપુટ ઇતિહાસનું મેમરી ફૂટપ્રિન્ટ સ્થિર રહે છે. કેશ વધતું નથી. તે રિસાયકલ થાય છે.

આ એક