InferSim для LLM: адаптация под российские GPU | Гайд 2026 | AiManual
AiManual Logo Ai / Manual.
24 Апр 2026 Гайд

Моделирование загрузки промышленных GPU для LLM: доработка InferSim от Alibaba под российские реалии

Полный гайд по адаптации симулятора InferSim от Alibaba для российских GPU: микро-бенчмарки, метрики TTFT/TPOT/MFU, пошаговая настройка под серые A100 и китайск

Вы когда-нибудь покупали промышленный GPU вслепую? Я да. И каждый раз это было как игра в русскую рулетку с бюджетом отдела. Однажды мы закупили партию L40s под инференс Mixtral 8x22B, а через месяц поняли: мощность есть, а latency такой, что пользователи успевали сходить за кофе, пока модель генерировала ответ. Ошибка стоила $120 000. И это мягко говоря.

Проблема в том, что типичный подход «купим побольше, а там разберёмся» — дорогой и неэффективный. Особенно в российских реалиях, где легальные поставки H100 перекрыты, а на рынке рулят «серые» A100, китайские Moore Threads и перегретые L20. Как заранее понять, сколько пользователей выдержит одна карта? Где bottleneck: память или compute? Ответ даёт симуляция. И лучший opensource-инструмент для этого — InferSim от Alibaba.

Почему InferSim и что с ним не так?

InferSim — это двухфазный симулятор. Первая фаза (profiling) собирает микро-бенчмарки: сколько времени занимает attention, feed-forward, embedding на конкретном GPU. Вторая (simulation) генерирует метрики: TTFT (time to first token), TPOT (tokens per output token), MFU (model flops utilization). По сути, можно виртуально прогнать любой LLM через железо, которое ещё не куплено.

Нюанс: из коробки InferSim заточен под эталонные китайские дата-центры с H800 и бешеной пропускной способностью NVLink. У нас — сборная солянка из карт, подключенных через PCIe 3.0 и общающихся по Ethernet. Оригинальные профили дают погрешность 30-40%. Нам придётся дорабатывать симулятор под своё железо.

Важно: InferSim не умеет моделировать связки из разных GPU (например, A100 + L20 в одной ноде). В этой статье будем считать, что кластер однородный. Разнородные конфигурации — тема отдельного расследования.

Пошаговый план: как адаптировать InferSim под российские GPU

1 Установка и первичный запуск

InferSim лежит на GitHub Alibaba. Клонируем репозиторий, ставим зависимости. Лучше использовать Python 3.11+ и CUDA 12.4 (актуально на апрель 2026).

git clone https://github.com/alibaba/infersim.git
cd infersim
pip install -r requirements.txt
python -m infersim --help

Попробуйте запустить встроенную модель на тестовом профиле — всё должно отработать. Если нет — проверьте, что nvidia-smi видит карты.

2 Запуск микро-бенчмарков

Нам нужен свой профиль для конкретного GPU. Создаём конфиг для бенчмаркинга. Пример для L20 (48GB, Ada Lovelace):

# benchmark_config.yaml
gpu: "NVIDIA L20"
model: "Qwen2.5-32B-Instruct"
batch_sizes: [1, 4, 8, 16, 32]
input_lengths: [128, 512, 1024]
output_lengths: [256, 512, 1024]
precision: "fp16"

Запускаем сбор:

python -m infersim.profiler --config benchmark_config.yaml --output l20_profile.json

Это займёт несколько часов. На выходе получим файл с таймингами каждой операции. Совет: не выключайте тепловые троттлинги — они часть реальности. Если карта греется до 85°C на длинных прогонах, профиль это покажет.

3 Доработка симулятора: правим профили под российскую сеть

Теперь самое интересное. У нас узкий межсерверный канал (10GbE вместо 800GB/s NVLink). InferSim по умолчанию считает, что все GPU общаются с бесконечной пропускной способностью. Придётся вручную добавить penalty на пересылку тензоров.

Открываем l20_profile.json и добавляем секцию network_latency:

{
  "gpu_name": "NVIDIA L20",
  "network_bandwidth_gbps": 10,
  "network_latency_us": 50,
  "tensor_parallel_overhead": 0.15
}

Поле tensor_parallel_overhead (15%) — это моя эмпирическая добавка для шины PCIe 3.0 x16. Без неё симуляция будет показывать TTFT в 2 раза лучше реальности. Проверено на стенде из 4-GPU фермы на X299.

Грабли: если вы используете китайские GPU (например, Moore Threads MT300), в профиле нужно заменить измерение памяти на HBM2e. Референсных значений нет — замеряйте сами. Иначе MFU упадёт на 20% из-за неверного времени загрузки кэша.

4 Симуляция и анализ метрик

Запускаем симуляцию с созданным профилем:

python -m infersim.simulator --profile l20_profile.json --model-config qwen32b.json --serve-config serve_config.yaml

На выходе — таблица с метриками. Пример для одного GPU L20, Qwen2.5-32B (int8), batch=1:

МетрикаЗначениеДопустимо?
TTFT (prefill)1.2 сВысоковато
TPOT (decode)32 мс/токенНорма
MFU38%Низкий

Как видите, TTFT вышел 1.2 с — для real-time чата это провал (должно быть < 500 мс). Причина: долгий prefill на маленьком batch. Решение: увеличить batch до 4. Дальше можно подбирать количество GPU через моделирование, не покупая железо.

5 Калибровка под реальную нагрузку

Симуляция — это всё же модель. Обязательно сверьтесь с реальными замерами на тестовом инференсе. Запустите Llama 3.2 90B (самая популярная модель 2026 года) на вашем L20 и замерьте actual TTFT. Если расхождение > 15%, вернитесь к профилю и проверьте параметры compute_capability и memory_bandwidth.

В моём опыте, чтобы попасть в 10%, пришлось три раза перемерять bandwidth GPU при помощи bandwidthTest из CUDA Samples и вручную вписать среднее значение. Автоматический сбор часто занижает bandwidth из-за фоновых процессов.

Частые ошибки и как их не допустить

  • Забыли про NUMA. InferSim не знает о привязке GPU к CPU нодам. На двухсокетных системах (особенно на AMD EPYC) задержка межсокетного обмена может быть 300 нс вместо 80 нс. Последствия — TPOT скачет. Решение: в профиле добавьте флаг numa_aware: true и укажите topology.
  • Не учитываете снижение частоты из-за температуры. Российские ЦОДы не всегда имеют идеальное охлаждение. Если карты работают при 85°C, частоты падают на 10-15%. В профиле можно задать thermal_throttle_percent: 0.15. Это спасёт от переоценки производительности.
  • Смешиваете batch modes. InferSim ожидает, что все запросы приходят в один batch. На практике бывает continuous batching (vLLM). Укажите в конфиге batching: continuous — это изменит симуляцию.

Неочевидный совет: зачем вам симуляция, если есть облако?

Да, можно арендовать GPU в облаке и померить. Но, во-первых, это стоит денег уже на этапе планирования (час L20 — от $1.5). Во-вторых, вы не сможете легко перебрать десятки сценариев: разное количество пользователей, разные модели, различные степени квантизации. Симуляция даёт рычаг: меняете один параметр и через минуту видите, как меняются метрики. Это как шахматы, где можно ходить вслепую, не теряя фигуры.

Кстати, если вы всё же предпочитаете облачную аренду для финальной проверки, присмотритесь к агрегатору GPU-инстансов — там часто есть промокоды на первую аренду. Проверка одного сценария обойдётся в пару тысяч рублей. А вот на VPS для мелких экспериментов можно сэкономить, если модель небольшая.

💡
Честный прогноз: к концу 2026 года сообщество соберёт open-source профили для всех популярных GPU, включая китайские. Но сегодня, в апреле 2026, вы — тот самый первопроходец, который вручную калибрует симулятор. Не запутайтесь в параметрах и помните: лучше три часа просидеть за настройкой профиля, чем три месяца — за перерасходом бюджета на GPU.

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