Байду выложила в открытый доступ OCR-модель Wenxin Unlimited 2 для чтения тысяч страниц подряд
Вся сложность тут упирается в память. Чем длиннее документ, тем больше промежуточной информации приходится держать в видеопамяти — так называемого KV-кэша. Проще говоря, это шпаргалка, которую модель ведёт по ходу чтения: чем больше страниц, тем толще шпаргалка, тем больше места она занимает и тем медленнее листается. В техническом отчёте приводится красноречивое сравнение: при стандартном декодировании, когда визуальный кэш всех страниц удерживается в памяти одновременно, пиковый объём KV-кэша на последовательности в сотню страниц достигал 47 гигабайт. Это больше оперативной памяти иного ноутбука. У новой модели тот же показатель упал до 1,77 гигабайта — сокращение примерно на 96 процентов. И это только кэш, без учёта весов самой модели и прочих накладных расходов.
Предыдущее поколение Unlimited OCR уже снискало популярность в открытом сообществе благодаря умению разбирать многотомные документы подряд: свыше десяти миллионов скачиваний и порядка 28,6 тысячи звёзд на GitHub. Вокруг него успели накрутить онлайн-демо и поддержку инференса через SGlang. Во второй версии акцент сделали именно на том, чтобы обрабатывать ещё более длинные тексты, одновременно срезав вычислительную нагрузку и расход памяти.
Для этого в модели применили разреженный механизм внимания со скользящим окном и опорой на релевантные фрагменты, получивший обозначение SR-SWA. Логика подсказана обычным человеческим переписыванием: когда мы переписываем книгу, то смотрим на текущую страницу, а к соседним обращаемся лишь тогда, когда нужно свериться. Никто не держит в голове сразу весь текст. Модель теперь действует похожим образом: сначала отбирает страницы, которые действительно стоит учитывать, а затем внутри них вычленяет уже конкретные визуальные фрагменты, отсекая всё не относящееся к делу. Фильтрация идёт в два слоя — условные «ворота страниц» решают, на какие страницы смотреть, а «сито токенов» отбирает уже нужные куски внутри них, причём фиксированным числом, чтобы объём работы на каждом шаге не разрастался вместе с документом.
Вторая половина решения — механизм бесконечного декодирования. Документ нарезается на блоки страниц, которые обрабатываются по очереди, причём соседние блоки перекрываются одной страницей: последняя страница предыдущего блока становится первой страницей следующего, как закладка. Переходя к новому блоку, модель переиспользует кэш этой пограничной страницы и хвост текстового контекста, а всё уже ненужное своевременно освобождает. В итоге в памяти висит только текущий блок, а не весь документ целиком.
Практический тест устроили на англоязычном «Властелине колец» объёмом 884 страницы. Разбор занял примерно 42 минуты 56 секунд — в среднем около 2,9 секунды на страницу, то есть примерно за время одной серии сериала модель прошла весь Средиземье. Качество проверили выборочно на 600-й и 750-й страницах: распознанный текст совпал с оригиналом, так что к концу книги модель не «разгулялась». Всего система отметила 466 случаев склейки разорванных между страницами предложений — например, фразы, разрезанной на страницах 873 и 874, вернула на место.
В тестах на многопоточность картина тоже изменилась: при обработке 16 документов одновременно пропускная способность выросла с 360 до 1315 токенов в секунду, примерно в 3,65 раза. Для сервисов, которые пачками разбирают годовые отчёты или технические руководства, это означает, что на той же видеокарте можно уместить куда больше работы. Пользователю при этом не нужно ничего вручную нарезать и склеивать — достаточно скормить модели весь файл, разбивкой и стыковкой она займётся сама.
По качеству на наборе MPDocBench, где проверяют разбор многодесяткостраничных документов с сохранением структуры, модель набрала 84,59 балла. Для ещё более длинных текстов команда собрала собственный бенчмарк MarathonDocBench: сто документов объёмом от 103 до 300 страниц, где абзацы и таблицы регулярно перетекают на следующую страницу. Там результат составил 77,06 балла — в обоих случаях лучший среди моделей, включённых в отчёт. Скорость пошагового декодирования у SR-SWA оказалась в 7 раз выше, чем у полного внимания, и в 5,6 раза выше, чем у предыдущего механизма R-SWA, причём с ростом документа время на один токен почти не растёт.
Сами разработчики описывают произошедшее как наступление эпохи OCR 3.0. Если ранние системы работали как конвейер из отдельных модулей — найти текст, распознать, сверстать, — а второе поколение научилось end-to-end разбирать десятки страниц, то теперь цель — непрерывная обработка целого документа без разбиения и без остановок. Забавная деталь: название Unlimited OCR Works отсылает к «Бесконечному клинку» из японской визуальной новеллы Fate/stay night. Один из пользователей Hugging Face ещё после выхода первой версии переписал классическое заклинание героя в OCR-версию, и во второй раз команда всерьёз включила эти строки в вступление к техническому отчёту, сохранив имя автора. Теперь отчёт об attentional-механизмах и расходе видеопамяти открывается словами о пикселях как теле и токенах как крови, которые «уже прочли более тысячи страниц и не скованы ни KV-кэшем, ни пределом контекста». С учётом падения с 47 гигабайт до 1,77 гигабайта строчка про неподвластность кэшу звучит вполне заслуженно.
Источник: www.qbitai.com
Поделиться