Понаблюдайте неделю за разговорами о локальных агентах — и рисунок проявится сам. Кто-то спрашивает, какое железо нужно, чтобы гонять команду кодящих агентов. Кто-то отвечает цифрой токенов в секунду — один поток, один чат, чистый декод. Спрашивали про рой; ответили про солиста.
Я понимаю, откуда это берётся. Декод одного потока — число, которое печатает каждый обзор, по которому строит рейтинг каждое сравнение спецификаций, вокруг которого спорит каждый тред на форуме. И для заданного вопроса оно почти бесполезно, потому что рой агентов — это не один быстрый разговор. Это много медленных одновременно, и каждый из них в основном ждёт свои инструменты, а работу выбрасывает пачками в непредсказуемые моменты. Выживет ли ваша коробка, решает не то, как быстро декодирует один поток. А то, как растёт ожидание, когда потоки складываются в стопку, — и где оно перестаёт быть терпимым.
Мы измерили этот рост на собственном железе — один, четыре, восемь одновременных потоков на коробке со 128 ГБ — и форма кривой удивила меня сильнее самих значений. Ожидание растёт не линейно. Оно держится ровно достаточно долго, чтобы убаюкать, а потом ломается. Четыре параллельных чата не отличались от одного; восемь были другой машиной. Числа и границы их применимости — в отчёте о конкурентной ёмкости, а та же история со ставками повыше — модель на 284 миллиарда параметров, собирающая дюжину потоков на двух DGX Spark, — в ответе покупателю. Но спорить я здесь хочу не о значениях. О метрике.
У «агентов на коробку» есть физическая причина быть правильной единицей для нынешнего поколения железа. MoE-модели на одном потоке не выбирают полосу памяти до дна: шина, на которой голодает декод, одним разговором не насыщается. Конкурентность — способ выкупить этот запас обратно. Коробка, посредственная в однопоточном обзоре, может оказаться тихо великолепной на четырёх потоках, а две коробки с одинаковыми сольными числами — разойтись под нагрузкой в разные стороны. Бенчмарк солиста не видит ничего из этого. Он не врёт — он отвечает на другой вопрос.
Так что вот вопрос, который, на мой взгляд, покупателю стоит задавать вместо этого, — сформулированный так, чтобы на него могло ответить измерение: сколько одновременных потоков держит эта коробка, прежде чем первое видимое слово начнёт приходить дольше, чем терпят мои пользователи? Порог выберите свой — полсекунды, две секунды, сколько переживает цикл обратной связи ваших агентов. И требуйте лестницу, а не точку: ожидание на одном потоке, на четырёх, на восьми, с долей довезённых ответов рядом, — потому что коробка, которая «держит» восемь потоков, молча роняя каждый пятый запрос, не держит ничего.
На коробке этого не печатает никто. Вендор печатает пиковый декод: он льстит кремнию. Обзор печатает один поток: он льстит срокам самого обзорщика. Лестница меряется часами и не даёт одного героического числа — ровно поэтому ей можно верить и ровно поэтому никто с неё не начинает.
Запрос — не сотрудник: настоящие агенты то простаивают, то выстреливают пачку работы разом и вставляют исполинские контексты в самый неудачный момент, так что лестница, снятая в замкнутом цикле, — нижняя граница хаоса, а не прогноз. Но нижняя граница честнее парадного портрета солиста. Если эпоха роёв и правда наступает, спека, которая имеет значение, — агенты на коробку при заданном пороге ожидания. И чем раньше мы начнём о ней спрашивать, тем раньше кто-нибудь начнёт её печатать.
Наши измеренные лестницы, с сырыми прогонами: отчёт о конкурентной ёмкости · три часа под непрерывной нагрузкой · реестр клеймов.