Google представила STATIC: ускорение генеративного поиска в 948 раз
Google AI представила STATIC — фреймворк на основе разреженных матриц, ускоряющий ограниченное декодирование в генеративных рекомендательных системах в 948 раз.

Рекомендательные системы, которые определяют, что вы увидите в ленте YouTube, Google Play или любого другого крупного сервиса, стоят на пороге фундаментального сдвига. Вместо классического подхода, основанного на поиске ближайших соседей в пространстве эмбеддингов, индустрия всё активнее экспериментирует с генеративным поиском — когда большая языковая модель напрямую «придумывает» идентификаторы подходящих элементов. Google AI только что представила фреймворк STATIC, который решает одну из самых болезненных проблем этого подхода и делает это с ошеломляющим ускорением — в 948 раз.
Чтобы понять значимость этой работы, нужно разобраться в контексте. Генеративный поиск (Generative Retrieval, GR) — это парадигма, в которой каждый элемент каталога — будь то видео, товар или статья — кодируется в виде так называемого семантического идентификатора (Semantic ID), то есть последовательности дискретных токенов. Языковая модель обучается генерировать эти последовательности авторегрессионно, токен за токеном, по аналогии с тем, как GPT генерирует текст. Звучит элегантно, но на практике возникает серьёзное препятствие: промышленные рекомендательные системы работают не в вакууме. Бизнес-логика диктует жёсткие ограничения — контент должен быть свежим, соответствовать региональным правилам, не нарушать возрастные рейтинги, учитывать лицензионные соглашения. Модель не может просто свободно генерировать идентификаторы — каждый шаг декодирования должен проверяться на соответствие этим ограничениям.
Именно здесь и начинаются проблемы. Ограниченное декодирование (constrained decoding) в существующих реализациях работает мучительно медленно. На каждом шаге генерации модель должна свериться с огромным набором допустимых продолжений, отфильтровать недопустимые варианты и перераспределить вероятности. При каталогах в десятки миллионов элементов и сложных комбинаторных ограничениях это превращается в вычислительный кошмар. Предыдущие подходы использовали древовидные структуры данных — префиксные деревья (tries), — но они плохо масштабируются при наложении множественных пересекающихся ограничений и практически не поддаются эффективной параллелизации на GPU.
STATIC (Sparse maTrix frAmework for consTraIned deCoding) предлагает принципиально иной подход. Вместо того чтобы обходить деревья, фреймворк переводит всю логику ограничений в язык операций с разреженными матрицами. Каждое ограничение — будь то фильтр по дате публикации, географии или категории — представляется в виде разреженной матрицы, а их комбинация сводится к стандартным матричным операциям: умножению, пересечению, объединению. Это даёт два критических преимущества. Во-первых, разреженные матричные операции великолепно оптимизированы на современных GPU и TPU — десятилетия работы над линейной алгеброй в машинном обучении создали для этого мощную инфраструктуру. Во-вторых, такой подход позволяет элегантно комбинировать произвольное количество ограничений без экспоненциального роста сложности.
Цифра ускорения в 948 раз заслуживает отдельного комментария. В исследованиях по оптимизации часто встречаются впечатляющие множители, которые на поверку оказываются результатом сравнения с намеренно слабым базовым решением. Однако в случае STATIC речь идёт о сравнении с реальными, используемыми в продакшене методами ограниченного декодирования. Такой порядок ускорения означает, что операция, занимавшая минуты, теперь укладывается в доли секунды — а это разница между теоретически интересной и практически применимой технологией.
Последствия для индустрии рекомендательных систем могут быть весьма значительными. До сих пор генеративный поиск оставался во многом исследовательской концепцией именно из-за сложности соблюдения бизнес-ограничений в реальном времени. Компании, управляющие каталогами в сотни миллионов единиц, просто не могли позволить себе задержку в декодировании. STATIC потенциально снимает это ограничение, открывая путь к замене традиционных двухбашенных моделей с приближённым поиском ближайших соседей на полностью генеративные пайплайны. Это, в свою очередь, может улучшить качество рекомендаций — генеративные модели способны улавливать более сложные паттерны пользовательских предпочтений, чем статические эмбеддинги.
Есть и более широкий контекст. Ограниченное декодирование — это проблема не только рекомендательных систем. Она возникает в структурированной генерации текста, в системах, где языковые модели должны выдавать валидный JSON, SQL-запросы или код, соответствующий формальной грамматике. Если подход STATIC окажется обобщаемым, его принципы могут найти применение далеко за пределами рекомендаций.
Google продолжает методично превращать языковые модели из инструментов для генерации текста в универсальные вычислительные движки. STATIC — это не громкий анонс нового чат-бота, а инфраструктурная инновация, которая может тихо, но радикально изменить архитектуру систем, с которыми взаимодействуют миллиарды пользователей ежедневно. Именно такие работы — незаметные для широкой публики, но критически важные для инженеров — в конечном счёте определяют, насколько умными и быстрыми будут сервисы, которыми мы пользуемся.