پنجره‌ی محدود به‌علاوه‌ی مرجع ثابت، حافظه‌ی نهان را ثابت نگه می‌دارد و دسترس سراسری را با حافظه‌ای معامله می‌کند که با طول خروجی رشد نمی‌کند.
پنجره‌ی محدود به‌علاوه‌ی مرجع ثابت، حافظه‌ی نهان را ثابت نگه می‌دارد و دسترس سراسری را با حافظه‌ای معامله می‌کند که با طول خروجی رشد نمی‌کند.

Unlimited OCR و هزینه‌ی به‌خاطر سپردن همه‌چیز

مدل جدید OCR از Baidu حافظه‌ی روبه‌رشد رمزگشا را با یک حافظه‌ی کاری ثابت عوض می‌کند تا ده‌ها صفحه را در یک گذر بخواند. نکته‌ی جذاب خود OCR نیست؛ ترفند توجهی است که زیر آن نشسته.

خواندن یک سند طولانی برای یک مدل زبانی چقدر هزینه دارد؟ نه به پول — به حافظه. همین پرسش، کل داستان گزارشی فنی است که Baidu این هفته منتشر کرد، با عنوان Unlimited OCR Works. و پاسخ درست به آن، نشان می‌دهد سیستم‌های هوش سند در تولید دقیقاً کجا می‌شکنند.

اول اصطلاح را روشن کنیم. OCR یا بازشناسی نوری نویسه، یعنی تبدیل تصویر یک متن به خود متن. سال‌ها این کار یک خط‌لوله از آشکارساز و دسته‌بند بود. تغییر تازه — که DeepSeek-OCR نمونه‌ی شاخص آن است — OCR را به یک مسئله‌ی تولید تبدیل می‌کند: یک رمزگذار بینایی، صفحه را به مجموعه‌ای فشرده از بردارها بدل می‌کند و یک رمزگشای مبتنی بر مدل زبانی بزرگ (LLM)، نویسه‌ها را توکن‌به‌توکن می‌نویسد، همان‌طور که مقاله شرح می‌دهد. جذابیتش واقعی است. چون رمزگشا یک مدل زبانی است، یک پیش‌فرض زبانی با خود دارد؛ می‌داند که یک واژه‌ی نیمه‌پنهان در جمله فقط چند ادامه‌ی محتمل دارد. این پیش‌فرض، خطاهایی را اصلاح می‌کند که یک دسته‌بند صرفاً پیکسلی هرگز نمی‌توانست.

حالا هزینه. یک رمزگشای transformer هر توکن تازه را با توجه به تمام توکن‌هایی که تا حالا تولید کرده می‌سازد. برای آنکه گذشته را در هر گام دوباره محاسبه نکند، بردارهای میانی را ذخیره می‌کند؛ این همان حافظه‌ی نهان کلید-مقدار (KV cache) است. مشکل، ساختاری است: این حافظه با طول خروجی به‌صورت خطی رشد می‌کند. یک صفحه را رونویسی کنید، حافظه کوچک است. چهل صفحه را رونویسی کنید، حافظه بزرگ می‌شود، مصرف حافظه بالا می‌رود و تولید هرچه جلوتر بروید کندتر می‌شود، دقیقاً همان‌طور که گزارش می‌گوید. مدل به‌نوعی خسته می‌شود؛ بخش فزاینده‌ای از بودجه‌اش را فقط صرف به‌خاطر سپردن چیزی می‌کند که قبلاً نوشته.

نویسندگان این را در برابر یک مشاهده‌ی تیز قرار می‌دهند: انسانی که یک متن بلند را رونویسی می‌کند، چنین کندشدنی ندارد. شما برای نوشتن جمله‌ی بعدی، تمام صفحه‌های قبلی را دوباره نمی‌خوانید. یک حافظه‌ی کاری کوچک نگه می‌دارید — همان خطی که رویش هستید و کمی بافت پیرامون — و آن را جلو می‌برید. افتی که به transformer می‌خورد، قانون طبیعت نیست؛ پیامد نحوه‌ی سیم‌کشی توجه است.

حرکت Unlimited OCR، تغییر همین سیم‌کشی است. نویسندگان با مبنا قرار دادن DeepSeek-OCR، هر لایه‌ی توجه در رمزگشا را با چیزی جایگزین می‌کنند که نامش را توجه پنجره‌ی لغزان مرجع (R-SWA) گذاشته‌اند، طبق چکیده‌ی مقاله. ایده در همان نام نهفته است. به‌جای توجه به کل تاریخچه، هر گام به یک پنجره‌ی محدود به‌علاوه‌ی یک مرجع ثابت توجه می‌کند — و همین، حافظه‌ی نهان را در سراسر رمزگشایی ثابت نگه می‌دارد، نه روبه‌رشد. این رمزگشای با حافظه‌ی ثابت را با نرخ فشرده‌سازی بالای رمزگذار DeepSeek-OCR ترکیب کنید، و مدل می‌تواند ده‌ها صفحه را در یک گذر روبه‌جلو و در محدوده‌ی استاندارد ۳۲ هزار توکن رونویسی کند.

همین عبارت — «یک گذر روبه‌جلو» — سود عملی ماجراست. هرکس خط‌لوله‌ی پردازش سند ساخته باشد، راه‌حل همیشگی برای ورودی بلند را می‌شناسد: سند را تکه‌تکه کن، هر تکه را پردازش کن، نتایج را به هم بدوز و دعا کن درزها جور دربیایند. خطاها دقیقاً در همین تکه‌تکه‌کردن پنهان می‌شوند. جدولی که از مرز صفحه می‌گذرد، پانوشتی که سه صفحه بعد به آن ارجاع داده شده، عنوانی که دامنه‌اش روی نقطه‌ی برش می‌افتد — اینها همان مواردی‌اند که تکه‌بندی ساده را می‌شکنند. مدلی که کل سند را در یک گذر و با هزینه‌ی حافظه‌ی ثابت نگه می‌دارد، کل این دسته از باگ‌ها را دور می‌زند.

از تجربه‌ی ساخت این سیستم‌ها یک هشدار اضافه می‌کنم. حافظه‌ی نهان ثابت یک تضمین حافظه است، نه تضمین دقت. محدود کردن پنجره، طبق تعریف، یعنی دور انداختن بافت دوربرد — مدل دیگر نمی‌تواند آزادانه به چیزی که چهل صفحه عقب‌تر بوده توجه کند. برای رونویسی معمولاً اشکالی ندارد؛ بافت مهم یک خط، محلی است. اما برای کارهایی که واقعاً به ارجاع دوربرد نیاز دارند — مثل تطبیق یک جمع با اقلامی که در سراسر گزارش پراکنده‌اند — پنجره‌ی لغزان یک قید جدی است، و بخش «مرجع» احتمالاً برای نرم‌کردن همین قید طراحی شده. اینکه واقعاً چقدر خوب کار می‌کند، به اعدادی بستگی دارد که چکیده نمی‌دهد. این گزارش یک نسخه‌ی اول است که کد و وزن‌ها روی گیت‌هاب Baidu وعده داده شده؛ بنچمارک‌ها چیزی است که پیش از اعتماد به آن روی اسناد متراکم می‌خوانم.

بخشی که ارزش مکث دارد، ادعای خود نویسندگان است که R-SWA عمومی است. آنها می‌گویند فراتر از OCR، به کارهایی مثل بازشناسی گفتار (ASR) و ترجمه هم اعمال می‌شود، همان‌طور که در چکیده آمده. این عمومیت اتفاقی نیست؛ به شکل مشترک این مسئله‌ها اشاره دارد. OCR، گفتار-به-متن و ترجمه، همه کارهای تجزیه‌ای‌اند: یک جریان ورودی بلند به یک جریان خروجی بلند نگاشته می‌شود، عمدتاً به‌ترتیب، با همترازی محلی قوی میان این دو. وقتی همترازی محلی و یکنواخت است، پرداخت هزینه‌ی توجه سراسری در هر گام، اتلاف است.

درس کارکردی ماجرا همین است و از مرز این مقاله فراتر می‌رود. transformer پیش‌فرض، هر توکن را بالقوه مرتبط با هر توکن دیگر می‌بیند — بیشینه‌ی بیان، بیشینه‌ی هزینه. بیشتر کارهای واقعی به این نیاز ندارند. ساختار دارند: محلی‌بودن، یکنواختی، و این مفهوم طبیعی که «آنچه نزدیک است بیشتر اهمیت دارد». معماری‌هایی که این ساختار را در خود می‌پزند — پنجره‌ی محدود، مرجع ثابت، حافظه‌ی نهان ثابت — تکه‌ای از دسترس نظری را با رفتار منابعی معامله می‌کنند که با مقیاس افت نمی‌کند. در تولید، رفتاری که با مقیاس افت نمی‌کند معمولاً بیش از آن تکه‌ای می‌ارزد که از دست داده‌اید.

پس راه درست خواندن Unlimited OCR این نیست که یک اسکنر متن بهتر است. این یک نمونه‌ی کوچک و مشخص از یک انتخاب مهندسی تکرارشونده است: وقتی کارت ساختار دارد، دیگر هزینه‌ی عمومیتی را که از آن استفاده نمی‌کنی نپرداز.

منابع

مقالات مرتبط