PaDoc: параллельное декодирование ускорило разбор документов

Сквозные (end-to-end) парсеры документов дают единый интерфейс, но раскладывают разметку страницы и содержимое её областей в одну длинную авторегрессионную последовательность: путь декодирования растёт вместе с общим объёмом содержимого страницы. Двухэтапные парсеры на основе вырезанных областей (crop-based) дают параллелизм по областям, но платят за это повторными визуальными прогонами (prefill) для каждой вырезки и теряют целостный контекст страницы.
Авторы предлагают PaDoc, парсер, в котором предсказанная разметка страницы задаётся как ветвящаяся структура поверх общего представления всей страницы. При допущении о достаточности региона (region-sufficiency assumption) выводится факторизация, в которой поток разметки и ветви содержимого отдельных областей декодируются одновременно, а глубина декодирования сокращается до длины самой длинной ветки "разметка + содержимое", а не растёт со всем объёмом страницы.
Метод реализован внутри одной мультимодальной большой языковой модели (MLLM): упакованное внимание переменной длины по предкам (ancestor attention) сохраняет нужную видимость контекста при обычном обучении предсказанию следующего токена, а маскированное параллельное декодирование создаёт ветви, которые оцениваемый бэкенд vLLM обслуживает как параллельные запросы с переиспользованием общего префикса в кэше.
На бенчмарке OmniDocBench Full PaDoc показал общий F1 разметки 91,1 и, среди сквозных парсеров, один из лучших общих баллов 94,24, а также лучшие показатели Text Edit (0,038) и Formula CDM (95,59). На отдельной подвыборке из 384 страниц и одном GPU A800 PaDoc оказался самым быстрым сквозным парсером на всех пяти проверенных уровнях параллелизма: пропускная способность по валидным страницам выросла на 67,4, 118%, а 95-й перцентиль задержки (P95) снизился на 39,2, 54,9% относительно базовой модели на том же backbone, дообученной последовательным SFT (Sequential SFT baseline). Код опубликован на GitHub.
Ключевые факты
- Узкое место сквозных парсеров документов: единая авторегрессионная последовательность разметки и содержимого, чей путь декодирования растёт вместе с объёмом страницы.
- PaDoc задаёт разметку страницы как ветвящуюся структуру над общим представлением страницы: поток разметки и ветви содержимого областей декодируются параллельно, глубина декодирования сокращается до самой длинной ветки.
- Реализовано в одной MLLM: упакованное внимание переменной длины по предкам сохраняет контекст при обычном обучении, маскированное параллельное декодирование обслуживается бэкендом vLLM как параллельные запросы с общим кэшем префикса.
- На OmniDocBench Full: F1 разметки 91,1, один из лучших среди сквозных парсеров общий балл 94,24, лучшие Text Edit (0,038) и Formula CDM (95,59).
- На 384 страницах и одном GPU A800, самый быстрый сквозной парсер на всех пяти уровнях параллелизма: пропускная способность выше на 67,4, 118%, задержка P95 ниже на 39,2, 54,9% относительно базовой модели Sequential SFT на том же backbone.
Почему это важно
Сквозные парсеры документов удобны единым интерфейсом, но раскладывают разметку страницы и содержимое её областей в одну длинную авторегрессионную последовательность, чем больше текста на странице, тем длиннее путь декодирования. Альтернатива, двухэтапные парсеры на вырезанных областях, даёт параллелизм по областям, но платит повторными визуальными прогонами для каждой вырезки и теряет целостный контекст страницы. PaDoc предлагает третий путь: разметка страницы задаётся как ветвящаяся структура поверх общего представления всей страницы, а поток разметки и ветви содержимого регионов декодируются одновременно. При допущении о достаточности региона это сокращает глубину декодирования до длины самой длинной ветки "разметка + содержимое" вместо того, чтобы она росла со всем объёмом страницы.
Кому это важно
Инженерам и исследователям, строящим конвейеры распознавания и разбора документов (OCR/document AI), оцифровка архивов, обработка отчётов, счетов, научных статей с формулами и таблицами; разработчикам, использующим или развивающим vLLM как бэкенд для инференса мультимодальных моделей, где пропускная способность при параллельных запросах критична.
Как это применить
Метод реализован внутри одной мультимодальной большой языковой модели: упакованное внимание переменной длины по предкам сохраняет нужную видимость контекста при обычном обучении предсказанию следующего токена, а на этапе вывода маскированное параллельное декодирование создаёт ветви, которые бэкенд vLLM обслуживает как параллельные запросы с переиспользованием общего префикса в кэше. Код опубликован на GitHub (github.com/Longin-Yu/Padoc), так что подход можно воспроизвести или адаптировать под собственный сквозной парсер документов.
Можно ли доверять
Цифры получены на стандартном для области бенчмарке OmniDocBench Full и на отдельной подвыборке из 384 страниц на одном GPU A800, то есть измерения воспроизводимы и привязаны к конкретной методике. При этом в самой аннотации работы не названы ни авторы, ни организация-разработчик, дата публикации тоже не указана, а сравнение по скорости дано только с одной базовой моделью, Sequential SFT на том же backbone, а не с другими именованными сквозными парсерами. Обсуждение на площадке пока скромное: 16 голосов и 2 комментария.
Риски и подводные камни
Ускорение и рост качества показаны относительно одной конкретной базовой модели (Sequential SFT на том же backbone), а не в сравнении с широким кругом существующих сквозных парсеров, названных по имени, насколько преимущество сохранится против других систем, по этим данным не видно. Сам метод опирается на допущение о достаточности региона: если независимые области страницы на практике не независимы (взаимные ссылки, перенос текста между колонками), выигрыш от параллельного декодирования может оказаться меньше заявленного. Также нет данных об обучающей выборке (объём, источник, домен), кроме упоминания "обычного обучения предсказанию следующего токена", и об устойчивости метода на документах за пределами OmniDocBench.