← На главную

LLM становятся сложными — помогает композируемость FlexAttention

20.06.2026 01:25 · hackernews

В 2022–2023 годах в Meta развивались два больших направления машинного обучения. LLM вроде Llama строились на чистом стеке из повторяющихся трансформеров. А графы рекомендательных систем (recsys) выглядели пугающе сложными. С тех пор индустрия «починила» эту ситуацию — сделала LLM гораздо запутаннее.

Себ Рашка ведёт отличную галерею архитектур моделей. Можно взять и сравнить двух лучших представителей своих эпох: Llama 3 и Nemotron 3 Ultra. Attention может быть всем, что тебе нужно, но современные модели используют кучу его вариаций: query grouping, compressed, sparse, linear, sliding-window. Mixture-of-Experts добавил выборочную маршрутизацию в feed-forward слои, а потом этим же занялись везде — от блоков attention до residual stream. Визуальные и аудиоэнкодеры перестали быть «прикрученными» и стали встроенными. Модели разрослись до инференса на нескольких GPU, что добавило операций связи прямо посередине архитектуры.

Всё это очень похоже на то, что случилось с recsys. Их базовая архитектура лет десять была простой двухбашенной нейросетью. Сложность возникала из-за конфликта: надо постоянно наращивать возможности, но оставаться эффективными, особенно на инференсе.

Может показаться, что агенты всё починят: скормишь своё PyTorch или JAX определение «Клоду Теленовела» или кому-то ещё, и он сгенерирует оптимально слитые ядра. Но для этого нужен фиксированный, рабочий baseline, чтобы проверять — правильно ли сгенерировано.

В recsys разрыв между тем, когда производительность была просто оптимизацией, и когда она стала необходимостью, стал очень маленьким. Теоретически можно держать чистую модель как baseline. На практике обучение и тестирование жрут кучу ресурсов, и улучшения производительности становятся несущими конструкциями.

Если хочешь заменить вариант attention A на вариант B, ты можешь простить B десятипроцентное замедление. Но не порядковое ухудшение. Если A уже слит и оптимизирован, тебе нужна хотя бы частично слитая версия B, чтобы понять, стоит ли её вообще исследовать. Цикл исследований требует гибкости, а не просто «оптимизируй эту известную штуку». Нельзя всё время спаивать ядра вручную — слишком дорого. Нельзя генерировать новое без baseline для проверки. Выход один — проектировать композируемость с самого начала.

Один из лучших примеров — FlexAttention в PyTorch. Он взял целый класс операций attention и позволил генерировать для них ядра через шаблоны Triton. В основе — огромный пласт работы по attention-ядрам. Всё спроектировано композируемым и проверяемым: можно экспериментировать с минимальным ударом по производительности.

Андрей Карпати недавно пришёл в Anthropic, чтобы развивать авто-исследовательские циклы на переднем крае. Но, как он показывал последние пару лет, умение резать архитектуры до сути и делать их композируемыми — не менее важно, чем хитрая агентная обвязка.

Читать оригинал →