К содержимому
MoranaLabs
FinTech / B2B — 27 янв. 2026 г.

SSM/Mamba-пайплайн для парсинга тяжелых B2B-данных 

На длинных документах стоимость обработки растет быстрее самого документа: внимание трансформера платит квадратом от длины. Мы перевели разбор тяжелых B2B-выгрузок на архитектуру с линейной сложностью и получили семикратный рост пропускной способности на том же железе.

×7
пропускная способность на том же железе
O(n)
сложность по длине документа
40 стр
договор целиком в одном контексте
стенд · запускается здесь

Стенд: длинный документ и квадрат внимания

Переключите архитектуру. При той же нагрузке квадратичное внимание не становится медленнее равномерно — оно перестает справляться, и очередь расходится на глазах.

обслужено 0 документов · в очереди сейчас 0теория Эрланга: ожидание 53,95 мс
6 воркеров разбора · обработка 340,0 мс на документ
архитектура

Длина документа входит в стоимость квадратом. На коротких письмах разницы нет, на договоре в сорок страниц она семикратная.

0,0 мс
медиана: то, что видит большинство
0,0 мс
p99 при бюджете 2000 мс
68 %
загрузка воркеров
0
отброшено: очередь 200 мест заполнена
Загрузка 68 % — здоровый режим. Хвост держится в 0,0 раза от медианы, и это почти целиком разброс самой обработки, а не очередь. Поднимайте поток и следите за p99: он тронется заметно раньше медианы.

Поток документов и времена разбора синтетические, порядок — поток B2B-документов средней конторы. Разница между линейной и квадратичной сложностью — настоящая.

Длина контекста — это статья расходов

Задача звучала прозаично: разбирать поток тяжелых полуструктурированных выгрузок от контрагентов. Не десятки страниц — сотни тысяч токенов на документ, и таких документов много.

Проблема здесь арифметическая. Механизм внимания в трансформере сопоставляет каждый элемент последовательности с каждым: удвоили длину документа — учетверили работу. На коротком тексте это незаметно. На длинной выгрузке разница между квадратом и линией — это разница между стойкой GPU и одной картой.

Именно из этой арифметики выросло проектное решение. Мода на архитектуру тут ни при чем.

Что дают модели пространства состояний

Архитектуры класса SSM, к которым относится Mamba, обрабатывают последовательность иначе: они идут по ней, поддерживая сжатое состояние, и стоимость растет линейно с длиной. Память при этом не раздувается пропорционально контексту.

Для нашей задачи это оказалось попаданием в цель. Разбор выгрузки — это последовательное чтение с накоплением: границы записей, повторяющиеся блоки, реквизиты в шапке, которые действуют до конца раздела. Такая работа хорошо ложится на модель, идущую по потоку.

Где SSM проигрывает, и мы это знаем

Честная граница, о которой в статьях про Mamba пишут неохотно: сжатое состояние — это потеря. Когда нужно точно вспомнить редкую деталь, встреченную сто тысяч токенов назад, внимание трансформера справляется лучше — оно смотрит на всю историю, а SSM смотрит в свое состояние.

Поэтому конвейер получился гибридным. Поточный разбор и структурная разметка идут на SSM, а точечные задачи, где нужно сопоставить далеко разнесенные фрагменты, отданы отдельному этапу с другой архитектурой и коротким контекстом. Каждая часть занята тем, что у нее получается.

Пропускная способность считается в документах, а не в токенах

Разница в семь раз замерена так, как это ощущает заказчик: сколько реальных документов из его потока обрабатывается за час на одной и той же карте, включая подготовку и постобработку.

Токены в секунду — метрика для сравнения моделей между собой, и она регулярно вводит в заблуждение. Модель может выигрывать по токенам и проигрывать по документам, если ей нужно несколько проходов или если она не держит документ целиком и приходится резать его с перекрытием.

Резать документ дорого во всех смыслах

Обычный способ обойти ограничение контекста — нарезать документ на куски с перекрытием. Это добавляет работы (перекрытия обрабатываются дважды) и ломает смысл: реквизиты из шапки не доезжают до последних записей, а запись, попавшая на границу, разбирается дважды и по-разному.

Возможность взять документ целиком убрала весь класс проблем сшивки. Это тот случай, когда архитектурное решение экономит не только вычисления, но и месяцы отладки логики склейки.

Что стоит проверить до перехода

  • Реальное распределение длин. Если 95% документов короткие, а длинных единицы, овчинка не стоит выделки: дешевле обработать хвост отдельно.
  • Нужна ли точная память о деталях. Задачи вида «найди упоминание конкретного пункта где-то в документе» дешевле решать поиском по индексу.
  • Зрелость инструментов. Экосистема вокруг SSM моложе трансформерной: часть привычных библиотек и приемов недоступна, и это закладывается в сроки.
  • Стоимость эксперимента. Замер на своих данных занимает недели, а не кварталы. Делать выбор архитектуры по чужим бенчмаркам — самый дорогой способ ошибиться.

Как это проверялось до внедрения

Смена базовой архитектуры — решение, которое дорого откатывать, поэтому оно принималось по собственному замеру на своих данных. Мы собрали стенд: одна и та же выборка реальных документов заказчика, одно и то же железо, одинаковая постобработка. Дальше замерялись три вещи: сколько документов проходит за час, сколько памяти занимает обработка самого длинного документа в выборке и как меняется качество разбора на записях у границ.

Первые два замера дали разницу, ради которой все затевалось. Третий оказался важнее: на прежней схеме с нарезкой около части ошибок приходилось именно на стыки кусков, и эта доля исчезла целиком. Такой аргумент понятен и техническому директору, и финансовому.

Что осталось у заказчика

Работающий конвейер разбора, стенд для замеров на собственных данных и понимание, за какие деньги обрабатывается один документ. Последнее оказалось самым востребованным: имея цену документа, финансовый блок сам считает, какой объем потока имеет смысл автоматизировать дальше.

Смежные направления — высоконагруженные модели и эксплуатация ML в продакшне.

×7
throughput
  • High-load
  • SSM/Mamba
  • inference opt
  • B2B data
заказчик

FinTech / B2B · детали под NDA

СтендПроверить расчет руками ↑

Те же цифры, но с ручками: порог, нагрузка, объем.

НаправлениеHigh-load и Foundation Models

Что мы делаем в этом направлении и сколько это стоит.

Комментарий инженера

Соблазн был очевидный: взять привычный трансформер, нарезать документ на куски и не выпендриваться. Мы так и сделали в первой версии, и получили классическую беду — реквизиты из шапки не доезжали до конца документа, а записи на стыках кусков разбирались по-разному в двух проходах. Логика склейки распухала быстрее, чем чинились ошибки. Переход на архитектуру, которая держит документ целиком, снес этот код полностью. Иногда самый быстрый способ починить сложную подсистему — сделать ее ненужной.
инженер, инференс и архитектуры моделей · MoranaLabs
Другие кейсы
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA до передачи данных

Любой один канал — куда удобнее, туда и ответим

Или сразу написать в Telegram

Без спама и звонков-роботов. Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и обработкой персональных данных.