Перейти к содержанию
Публикация AiManual

Апгрейд AI-сервера на EPYC 7551 и 2×RTX 3090: третья видеокарта или новый CPU за $800

Qwen3-Flash-Next на 177B выдаёт 38 tok/s в один поток и проседает до 4 tok/s при двух запросах. Разбираем, что снимет узкое место в бюджете $800: третья RTX 309

Коротко

Что будет в материале

  1. 01

    Короткий ответ: что важнее для MoE-модели на llama.cpp

  2. 02

    Почему при двух параллельных запросах скорость падает до 4 tok/s

  3. 03

    Третья RTX 3090: что она даст на самом деле

  4. 04

    Замена CPU на EPYC Rome: что изменится

Короткий ответ: что важнее для MoE-модели на llama.cpp

Для одного длинного запроса больше даст третья RTX 3090: 72 ГБ VRAM вместо 48 ГБ. Для нескольких параллельных AI-агентов сильнее окажется замена EPYC 7551 на EPYC Rome. Причина в том, где именно стоит стенка: у одного потока она в системной памяти и кэше экспертов, у двух и более потоков к ней добавляется процессор.

Ваши цифры складываются в читаемую картину. Qwen3-Flash-Next в IQ4_XS имеет около 6B активных параметров, это примерно 3,2 ГБ активных весов на каждый токен. Восемь каналов DDR4-2133 дают 2133 × 8 байт × 8 каналов = 136 ГБ/с, а значит потолок генерации при чтении всех активных экспертов из RAM равен 136 / 3,2 ≈ 42 tok/s. Вы видите 38 tok/s, то есть почти упираетесь в этот потолок. PCIe 3.0 x16 на практике выдаёт 13-14 ГБ/с. Те же 3,2 ГБ, протянутые по шине, это 0,24 с на токен, около 4 tok/s. Ровно та скорость, которую вы получаете при двух параллельных запросах.

Оговорка: это оценки порядка величины, а не замеры. Доля активных весов, точный битрейт квантования, размер KV-кэша и версия llama.cpp сдвигают числа. Но два совпадения подряд указывают на одно: в один поток вы упираетесь в пропускную способность DDR4-2133, а при двух потоках часть весов начинает ездить через PCIe. Значит, до покупки нужно измерить, какая из стенок ближе, иначе $800 уйдут не туда.

Логика выбора по сценариям: максимальная скорость одного запроса и работа с более крупными моделями - третья RTX 3090; предсказуемая работа 2-4 агентов и быстрый разбор длинных промптов - EPYC Rome. Ниже разбор, почему так, и что проверить на своей сборке.

Почему при двух параллельных запросах скорость падает до 4 tok/s

Как MoE-модель использует VRAM и системную RAM

Веса Qwen3-Flash-Next в IQ4_XS занимают около 95 ГБ (177B × 4,25 бита на вес). В 48 ГБ VRAM помещается примерно половина, поэтому llama.cpp приходится выбирать между тремя режимами работы с экспертами.

  1. Веса экспертов лежат в VRAM и считаются на GPU. Самый быстрый режим, пока набор активных экспертов влезает в память.
  2. Веса экспертов лежат в RAM и считаются на CPU. Медленнее, но ограничены 136 ГБ/с памяти, а не 13 ГБ/с шины.
  3. Веса подтягиваются в VRAM по PCIe на каждом токене. Самый медленный режим, разница с первым доходит до порядка.

Один поток живёт в первом или втором режиме: маршрутизатор выбирает небольшой набор экспертов, кэш работает, промахов мало. Два параллельных запроса удваивают набор активных экспертов за шаг. Кэш начинает вытеснять горячие блоки по LRU, доля промахов растёт, и трафик PCIe на шаг увеличивается быстрее, чем производительность. Каждый промах стоит примерно в десять раз дороже чтения того же веса из RAM, поэтому суммарная скорость не держится на месте, а падает с 38 до 8 tok/s.

KV-кэш усугубляет картину. Каждому параллельному слоту нужен свой KV, и при большом контексте он конкурирует с экспертами за те же 48 ГБ. Чем больше слотов, тем меньше места под кэш экспертов и тем чаще происходят промахи. Если KV не помещается и уезжает в RAM, каждый токен дополнительно читает и пишет его через PCIe. Похожие режимы выгрузки экспертов разобраны в материале про tiered expert offload на двух Radeon AI PRO R9700.

Ещё один слой проблемы - prefill. Когда llama-server получает новый запрос, его промпт обрабатывается в общем батче вместе с генерацией остальных слотов. Если эксперты считаются на CPU, prefill упирается в вычислительную мощность процессора и на время блокирует вторую сессию. У агентов промпты длинные: системная инструкция, схемы инструментов, выдержки из RAG. Обработка такого промпта на CPU с экспертами в RAM измеряется секундами, и всё это время второй агент ждёт.

Роль PCIe и пропускной способности памяти

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

Путь данныхПропускная способностьЧто это значит
VRAM RTX 3090 (GDDR6X)936 ГБ/сЭксперты в VRAM: лучший вариант
8 каналов DDR4-2133136 ГБ/сЭксперты в RAM, счёт на CPU
8 каналов DDR4-3200 (Rome)205 ГБ/сПлюс 50% к скорости чтения экспертов
PCIe 3.0 x1615,75 ГБ/с теоретически, 13-14 на практикеПерекачка экспертов в VRAM: потолок около 4 tok/s
PCIe 3.0 x87,9 ГБ/сЕсли слот распаян как x8, потолок падает вдвое

EPYC 7551 отдаёт 128 линий PCIe 3.0, и этого хватает на три слота x16. Реальную ширину задаёт разводка платы: часть слотов на серверных платах распаяна как x8, а иногда линии делятся при заполнении соседнего слота. Проверьте по мануалу Supermicro H11SSL-i, какие слоты остаются x16, и сверите режим разделения в BIOS. Если третий слот окажется x8, потолок перекачки весов упадёт вдвое, и третья карта принесёт меньше, чем вы ждёте.

Отдельный момент: H11SSL-i - плата PCIe 3.0, PCIe 4.0 там нет. Замена CPU на Rome даёт DDR4-3200 и удвоение векторной производительности, но шину не ускоряет. PCIe 4.0 появился на H12SSL, и это уже другая плата и другой бюджет. Как платформа ведёт себя в multi-GPU, видно по тесту Intel Core Ultra 270K и Z890: там PCIe P2P не работает, а на EPYC и AM5 ведёт себя предсказуемо. llama.cpp копирует активации между картами и при слоевом разделении, так что поведение шины всё равно стоит учитывать, хотя полноценного tensor parallel, как в vLLM, он не делает.

Третья RTX 3090: что она даст на самом деле

Плюс 24 ГБ VRAM это плюс 50% к объёму кэша экспертов. Если промахи вызваны именно нехваткой памяти, третья карта снимает узкое место: часть экспертов осядет в VRAM, трафик PCIe упадёт, и просадка при двух запросах станет меньше. Если же веса и сейчас считаются на CPU, а узким местом остаётся процессор, вы получите заметный прирост только на prefill, потому что внимание и батчи считаются на GPU.

Есть ограничение, о котором вспоминают редко: llama.cpp распределяет модель по слоям, а не по тензорам. При tensor split карты считают слои по очереди, одна за другой, поэтому три GPU не дают кратного роста скорости одного токена. Дополнительная карта добавляет объём, а не вычислительную мощность на поток.

Совместимость с Supermicro H11SSL-i и блоком питания

По линиям запас есть: у Naples 128 линий PCIe 3.0. Дальше начинаются физика и электрика.

  • Плата и слоты. Проверьте по мануалу H11SSL-i, какие слоты распаяны как x16, а какие как x8, и хватит ли места физически. RTX 3090 занимает два или три слота, три карты в обычный корпус не встают, нужен райзер, открытый стенд или стойка.
  • Райзер. Дешёвый райзер без экранирования даёт ошибки повторов на шине и съедает часть и без того узкого канала PCIe. Берите экранированный, рассчитанный на x16 Gen3.
  • Питание. Три RTX 3090 по 350 Вт это 1050 Вт только на видеокарты, плюс 180 Вт EPYC 7551 и около 100 Вт на плату, память и диски. Реальный минимум это блок на 1500 Вт с шестью-восемью разъёмами 8-pin. Учтите короткие импульсные броски потребления, которые у 3090 заметно выше паспортных 350 Вт.
  • Ограничение мощности. Для инференса, который упирается в память, снижение лимита до 280-300 Вт на карту стоит единиц процентов производительности, зато снимает требования к блоку питания и тепловыделению.
  • Охлаждение. 1050 Вт тепла в закрытом корпусе означают троттлинг. Турбинные версии или вода решают вопрос, обычные трёхвентиляторные карты вплотную друг к другу - нет.
  • NVLink не поможет. Мост соединяет только пару карт, и llama.cpp его для распределения вычислений не использует.

Если цель добрать именно видеопамять, стоит посмотреть и на альтернативы: на вторичке встречаются схемы вроде двух RTX 3080 20GB вместо одной 3090, где 40 ГБ обходятся дешевле 24 ГБ. Сравнение платформ для multi-GPU с тремя картами и раскладку по линиям PCIe мы разбирали в материале про 3× RX 9060 XT против 3× RTX 5060 Ti.

Как третья GPU повлияет на параллельные запросы

Здесь всё зависит от диагноза. Если nvidia-smi показывает, что во время генерации по шине идут гигабайты в секунду, кэш экспертов действительно вытесняется, и третья карта это прямое лечение. Если трафик PCIe при двух запросах остаётся низким, а процессор загружен на 100%, деньги уйдут впустую.

Есть и более практичный вариант использования третьей карты: отдать её под плотную модель на 7-14B, которая обслужит рутинные шаги агентов (маршрутизация, суммаризация, извлечение сущностей, эмбеддинги, распознавание речи). Такая схема часто полезнее, чем 24 ГБ в общем пуле: большая MoE-модель дёргается только на сложных задачах, а мелочи закрывает модель, целиком помещающаяся в VRAM.

Замена CPU на EPYC Rome: что изменится

Zen 2 против Zen 1 даёт то, что как раз упирается в потолок при offload экспертов на CPU. FMA-блоки становятся 256-битными вместо 128-битных, то есть пиковая FP32-производительность на гигагерц удваивается. Добавьте рост IPC примерно на 15% и более высокие частоты, и суммарно по векторному счёту выходит двукратный запас. Для prefill, где CPU считает FFN экспертов, это главный рычаг.

Какие модели EPYC Rome совместимы с H11SSL-i

H11SSL-i работает с EPYC 7002 после обновления BIOS. Перед покупкой сверьте текущую версию прошивки и матрицу поддерживаемых процессоров Supermicro: без нужного BIOS Rome не стартует.

МодельЯдраЧастотаL3TDP
EPYC 7402242,8-3,35 ГГц128 МБ180 Вт
EPYC 7F72243,2-3,7 ГГц192 МБ240 Вт
EPYC 7502322,5-3,35 ГГц128 МБ180 Вт
EPYC 7702642,0-3,35 ГГц256 МБ200 Вт
EPYC 7742642,25-3,4 ГГц256 МБ225 Вт

Выбор между 24 быстрыми и 64 медленными ядрами определяется сценарием. Для одного-двух потоков и минимальной задержки лучше 7F72 с его 3,7 ГГц и 192 МБ L3. Для нескольких агентов, работающих одновременно, 7702 с 64 ядрами даёт больше суммарной пропускной способности, хотя базовая частота всего 2,0 ГГц. Учтите и охлаждение: 7F72 на 240 Вт требует кулера SP3, рассчитанного на такую нагрузку, иначе он уйдёт в троттлинг и весь выигрыш от частоты исчезнет.

Влияние на пропускную способность памяти и NUMA

Rome поддерживает DDR4-3200 при одном модуле на канал, то есть 205 ГБ/с против 136 ГБ/с у текущей конфигурации. Рост на 50% для задачи, которая упирается в чтение весов, это много.

Но есть неприятная часть. Ваши DDR4-2133 на Rome тоже будут работать на 2133, потому что частота задаётся модулями. Замена только процессора не добавит ни одного гигабайта в секунду к пропускной способности памяти: вы получите прирост по вычислениям и кэшу L3, но не по скорости чтения экспертов. Чтобы выжать 205 ГБ/с, нужны модули с рейтингом 3200 и заполненные восемь каналов. Naples официально поддерживает до 2666, так что ваши 2133, скорее всего, определяются модулями, а не платформой. Проверьте SPD.

Про NUMA: в одном сокете режим NPS1 (один узел, полное чередование) обычно даёт максимальную пропускную способность на поток, а NPS4 снижает задержку, но дробит память на узлы. Для чтения экспертов важна именно пропускная способность, поэтому сравнение NPS1 и NPS4 стоит провести самому, благо переключатель в BIOS.

Стоит ли увеличивать объём и частоту RAM

Модель на 95 ГБ в 128 ГБ памяти помещается, и остаётся около 30 ГБ на KV-кэш, вычислительные буферы, mlock и систему. Этого хватает для одного-двух коротких контекстов и становится тесно, когда агентов трое-четверо с длинными системными промптами.

Признаки, что объём пора увеличивать: своп при загрузке модели, необходимость поднимать контекст за счёт слоёв, ошибки выделения памяти при росте batch size. Переход на 8×32 ГБ даёт 256 ГБ, что снимает вопрос на годы.

Если модель уже помещается, приоритет у частоты, а не у объёма. Для MoE с offload экспертов чтение весов идёт постоянно, и каждая лишняя сотня мегагерц памяти работает на скорость. Два правила при апгрейде: заполнять все восемь каналов (четыре модуля дают половину пропускной способности) и не смешивать модули разных частот, потому что система выровняется по самому медленному.

По бюджету: CPU и память вместе в $800, скорее всего, не уложатся, если только не брать младший Rome и скромный набор модулей. Порядок такой: сначала процессор, если страдают агенты; память второй в очереди, и брать её имеет смысл уже с рейтингом 3200, иначе смысла в апгрейде нет.

Сценарий с несколькими AI-агентами: что выбрать

Агентские нагрузки устроены иначе, чем чат с человеком. Промпты у них длинные и почти неизменные (системная инструкция, описания инструментов, выдержки из RAG), а ответы короткие. Основную работу делает prefill, и именно он упирается в CPU, когда эксперты считаются из RAM. Это довод за Rome, причём сильный: удвоение векторной производительности бьёт точно в узкое место.

Параллелизм в llama-server задаётся числом слотов и режимом continuous batching, который включён по умолчанию. Один батч смешивает prefill нового запроса с генерацией активных, поэтому новый агент тормозит уже работающих. Отсюда два практичных вывода.

  • Кэш префикса и --cache-reuse дают больше, чем любой апгрейд, если у агентов общая системная инструкция. Один раз посчитанный префикс переиспользуется всеми слотами.
  • Квантование KV-кэша освобождает VRAM под эксперты. Это самый дешёвый способ уменьшить промахи кэша без покупки третьей карты.

Если агенты в основном маршрутизируют, форматируют и делают короткие вызовы, дешевле отдать им плотную модель на 7-14B, целиком помещающуюся в VRAM, а тяжёлую MoE звать только на сложные задачи. Держать низкую задержку у модели на 177B при 136 ГБ/с памяти сложно, и $800 этого не меняют.

Практические шаги: как выжать максимум из текущего железа

Начните с измерений, иначе выбор между GPU и CPU останется гаданием. nvidia-smi dmon -s u,t показывает загрузку и трафик PCIe по каждой карте, htop и numastat показывают, где упирается процессор, а free и vmstat - есть ли своп. Числа нужны за два прогона: один поток и два параллельных запроса.

Дальше проверьте конфигурацию llama.cpp. Флаги, которые сильнее всего влияют на вашу схему:

  • -ngl (n-gpu-layers) задаёт, сколько слоёв уходит на GPU. Слишком высокое значение приводит к перекачке весов по PCIe, слишком низкое оставляет GPU простаивать.
  • --n-cpu-moe и -ot (--override-tensor) управляют размещением экспертов. Regex вида exps=CPU оставляет экспертные FFN на CPU, а внимание и общие слои отдаёт GPU, убирая перекачку весов через шину. Синтаксис и поведение зависят от сборки, сверьтесь с --help.
  • -b и -ub (batch и micro-batch) определяют, сколько токенов обрабатывается за шаг. Меньший ubatch снижает пиковую нагрузку на память, больший ускоряет prefill.
  • -ctk и -ctv переводят KV-кэш в q8_0 или q4_0. Экономия VRAM идёт напрямую в кэш экспертов.
  • -np задаёт число параллельных слотов, -c делит контекст между ними. Прежде чем увеличивать -np, убедитесь, что VRAM выдержит суммарный KV.
  • --cache-reuse и переиспользование префикса экономят prefill у агентов.
  • --mlock и --no-mmap удерживают модель в RAM, но требуют запаса по объёму.
  • --flash-attn и свежая сборка llama.cpp: работа с MoE и кэшем экспертов заметно менялась между версиями.

Практический разбор MoE с выгрузкой экспертов и подбором батча есть в гайде про запуск модели на 204 ГБ на одной видеокарте. Там же видно, как выбор флагов меняет скорость сильнее, чем замена железа.

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

Из альтернатив: vLLM и TensorRT-LLM хороши на параллельных запросах, но требуют, чтобы веса поместились в VRAM. С 48 ГБ модель на 95 ГБ туда не влезает, так что llama.cpp с offload экспертов остаётся практичным вариантом. Аренда облачного GPU - честная альтернатива $800 капитальных затрат, если нагрузка не постоянная.

Итог: что выбрать при бюджете $800

Что важнееАпгрейдПочему
Скорость одного длинного запросаТретья RTX 3090Плюс 24 ГБ кэша экспертов, меньше трафика по PCIe
Несколько агентов, длинные промптыEPYC Rome (7F72 или 7702)Вдвое больше векторной производительности, больше ядер и L3
Рост пропускной способности RAMRome плюс DDR4-3200205 ГБ/с против 136 ГБ/с, но нужны подходящие модули
Максимум пользы без замены CPUТретья карта под плотную модельРутинные шаги агентов закрывает модель, целиком помещающаяся в VRAM

Практический порядок действий без покупок такой. Сначала замерьте трафик PCIe при одном и двух параллельных запросах. Если шина загружена, добавьте -ot или --n-cpu-moe и посмотрите, что изменится: часто просадку убирает сама настройка. Если после этого упор переходит в процессор и память, берите EPYC Rome. Если кэш экспертов всё равно не помещается и шина остаётся горячей, третья RTX 3090 даст больше.

Покупая Rome, проверьте версию BIOS и матрицу совместимости H11SSL-i, а заодно посчитайте, хватит ли бюджета на модули DDR4-3200: без них процессор ускорит счёт, но не чтение весов. Покупая третью карту, заранее решите вопросы блока питания, райзера и охлаждения, иначе троттлинг съест прирост.

Подписаться на канал