जर तुम्ही ३०० पानांचा कायदेशीर सारांश किंवा एखादा वार्षिक अहवाल बहुतेक OCR पाइपलाइन्समध्ये टाकला, तर सॉफ्टवेअर त्याचे शांतपणे तुकडे करते. पान एक, प्रक्रिया करा, मेमरी रिकामी करा. पान दोन, प्रक्रिया करा, मेमरी रिकामी करा. जेव्हा सिस्टम शेवटच्या परिशिष्टापर्यंत पोहोचते, तेव्हा प्रस्तावनेतून मिळालेला कोणताही संदर्भ खूप आधीच हरवलेला असतो. तळटीपा विस्कळीत होतात. पानांमध्ये विभागली गेलेली तक्ते (tables) आपला आकार गमावतात. पानांवरून सुरू राहणारे हेडर चुकीचे लेबल केले जातात. परिणामी, एक असे जोडलेले मजकूर फाईल तयार होते जी माणसाला पुन्हा जोडावी लागते.

Baidu ला वाटते की ही कार्यपद्धती मूलभूतपणे दोषपूर्ण आहे. त्यांचे उत्तर म्हणजे Unlimited OCR, एक अशी आर्किटेक्चर जी मोठ्या, बहु-पानांच्या कागदपत्रांना एकाच फॉरवर्ड पासमध्ये घेण्यास डिझाइन केलेली आहे, ज्यामुळे सहसा होणारा GPU मेमरीचा विस्फोट टाळता येतो. याचे रहस्य म्हणजे एक नवीन अटेंशन मेकॅनिझम (attention mechanism) आहे जे मेमरीला हार्ड ड्राइव्हप्रमाणे न मानता मानवी वर्किंग मेमरीप्रमाणे (working memory) मानते: मूळ साहित्य तुमच्या समोर ठेवा, तुम्ही नुकतेच काय लिहिले आहे ते लक्षात ठेवा आणि जुना संदर्भ पुसट होऊ द्या.

लांब कागदपत्रे मानक OCR का निकामी करतात

हे उपाय समजून घेण्यासाठी, पारंपारिक एंड-टू-एंड OCR सिस्टम्स कुठे चुकतात हे पाहणे उपयुक्त ठरेल.

बहुतेक आधुनिक OCR पाइपलाइन्स डिकोडर म्हणून लार्ज लँग्वेज मॉडेलचा वापर करतात. मॉडेल जेव्हा एखादे पान वाचते आणि मजकूर तयार करते, तेव्हा ते KV cache नावाचे अंतर्गत प्रतिनिधित्व साठवते—जे मूलतः कीज (keys) आणि व्हॅल्यूज (values) यांची एक चालू डायरी आहे, जी मॉडेलला त्याने आधी काय म्हटले आहे याचा मागोवा ठेवण्यास मदत करते. समस्या अशी आहे की, आउटपुटच्या प्रत्येक नवीन ओळीसोबत ही डायरी रेषीय पद्धतीने (linearly) वाढत जाते. दहा पाने प्रक्रिया करा, तर कॅश दहा पाने खोल होते. शंभर पाने प्रक्रिया करा, तर ते लाखो टोकन्सपर्यंत वाढते, ज्यामुळे VRAM संपतो आणि जनरेशनचा वेग मंदावतो.

इंजिनिअर्सनी यावर उपाय म्हणून या समस्येकडे दुर्लक्ष करण्याचे ठरवले आहे. ते कागदपत्रांचे एकेक पान कापतात, प्रत्येक पान स्वतंत्रपणे मॉडेलमधून चालवतात आणि प्रत्येक टप्प्यानंतर KV cache रिसेट करतात. यामुळे काम तर चालते, पण मॉडेलमधील सलगता (continuous thread) देखील नष्ट होते. पान तीनवर सुरू होऊन पान चारवर संपणारा परिच्छेद मध्येच कापला जातो. पानांच्या पलीकडे असणारे टेबल फॉरमॅटिंग विस्कळीत होते. आधीच्या विभागांचे संदर्भ तुटलेले दुवे (broken links) बनतात कारण डिकोडरला आधी काय आले होते याची कोणतीही कायमस्वरूपी स्मृती नसते. मॉडेल खरोखर दस्तऐवज वाचत नाही; ते केवळ काही विलग फ्लॅशकार्ड्स (flashcards) हाताळत असते.

मानवी युक्ती: Reference Sliding Window Attention

Baidu च्या संशोधकांनी मानवी संज्ञानाचे (human cognition) उदाहरण घेऊन यावर मात केली. पुस्तकातील एखादा उतारा हाताने कॉपी करण्याचा विचार करा. तुम्ही आधी कॉपी केलेली प्रत्येक वाक्य तुमच्या मनात साठवून ठेवत नाही. तुम्ही मूळ मजकुराकडे एक नजर टाकता, तुम्ही लिहिलेले शेवटचे काही शब्द पाहता आणि पुढे लिहिता. तुमची वर्किंग मेमरी कमी असते, पण मूळ मजकूर तुमच्या समोर उघडा असल्याने हे काम सहज होते.

Reference Sliding Window Attention, किंवा R-SWA, नेमकी हीच अंतर्भावना औपचारिक स्वरूपात मांडते.

अंतर्गत कार्यपद्धतीमध्ये, KV cache ही एक निश्चित लांबीची रांग (fixed-length queue) बनते. जेव्हा मॉडेल नवीन टोकन तयार करते, तेव्हा ते "रेफरन्स टोकन्स" (reference tokens)—मूळ व्हिज्युअल इमेज एम्बेडिंग्स आणि सुरुवातीचा प्रॉम्प्ट—यांची पूर्ण दृश्यता राखते, परंतु ते स्वतः तयार केलेल्या शेवटच्या १२८ टोकन्सकडेच मागे पाहते. इतकेच! मॉडेल पहिल्या पानावर असो वा पन्नासव्या पानावर, त्याच्या स्वतःच्या आउटपुट इतिहासाचा मेमरी फूटप्रिंट (memory footprint) स्थिर राहतो. कॅश वाढत नाही. ते पुनर्चक्रित (recycle) होते.

हे एक