Skip to content
sikkatu edited this page Oct 22, 2026 · 4 revisions

Частые вопросы (FAQ)

English | Русский | 中文

Почему веса экспертов уходят в RAM хоста, а не «просто помещаются»?

Модель на 384 эксперта × 69 слоёв имеет ~118 GiB весов экспертов на TP rank. Четыре карты по 96 GB дают ~384 GB суммарно, но нужен ещё KV cache, CUDA graphs, активации и резерв. Без NVLink единственный разумный путь offload — PCIe в закреплённую память хоста (UVA). Балансировка экспертов решает, что остаётся резидентным.

Что такое UVA?

Unified Virtual Addressing: GPU может читать закреплённую память хоста по PCIe напрямую, без явного ядра копирования. run-tp4-uva.sh запускает vLLM с --offload-backend uva. Холодные эксперты живут в UVA; горячие — в настоящей памяти устройства.

Почему пропускная способность памяти GPU — не узкое место?

Часто это так и есть: холодные hits ограничены PCIe (этот хост: слоты PCIe 4.0, ~25 ГБ/с на карту). Планировщик минимизирует холодные hits; dynamic-режим поднимает долю горячих ещё выше. Смотрите строку лога hot/cold hit-rate.

GLM-5.3-Flash не стартует на vLLM — что не так?

Известный блокер. glm5_next использует rope-free MLA (qk_rope_head_dim=0), и ванильный vLLM падает на SM120 (RTX PRO 6000): assert "pe_dim must be 64 for fp8_ds_mla" (vLLM issues #53963, #55773). Кандидаты в фиксы — PR #55277 / #55778 / FlashInfer #4802 — ещё не влиты в upstream. Рецепт честно документирует блокер; математика баланса готова и протестирована — запуск заработает, как только фикс попадёт в upstream.

Нужен ли NVLink?

Нет. Все четыре рецепта спроектированы для TP4 только через PCIe. NUMA-размещение (HOTSPLIT_NUMA_POLICY = preferred / bind) помогает держать память хоста локально относительно PCIe root complex карты.

Static или dynamic?

  • Static: предсказуемо, нулевой оверхед, из вашей гистограммы трафика.
  • Dynamic (по умолчанию): адаптируется к живому трафику, мизерная цена перестановки, лучший hit-rate со временем. Измеримо: hot/cold hit-rate на каждом обновлении.

Почему лаунчер отказывается стартовать (IMAGE / MODEL_REVISION / API_KEY)?

Намеренно. Три параметра обязательны:

  • IMAGE — обязательно с @sha256:<digest>; плавающие теги отклоняются.
  • MODEL_REVISION (40-символьный commit SHA) требуется при загрузке модели по id.
  • API_KEY требуется даже на 127.0.0.1 — только ALLOW_NO_AUTH=1 отключает его, и только на loopback. Лаунчер не будет «на авось» запускать неправильно настроенный сервер. См. Быстрый старт.

Какова граница доверия (манифест, remote-code, docker inspect)?

Три вещи, которые нужно понимать до первого запуска:

  1. patches/MANIFEST.sha256 ловит случайные правки и наивные подмены, но манифест лежит в том же дереве, что и патчи. Злоумышленник с доступом на запись может заменить и то, и другое. Закрепите ревизию git, которую вы ревьюили (git rev-parse HEAD), и сверяйтесь с ней.
  2. --trust-remote-code позволяет модели исполнять собственный Python. Фиксация MODEL_REVISION предотвращает незаметные изменения при повторных загрузках, но не делает сам код безопасным. Изучите remote-code модели до первого запуска.
  3. API-ключ едет в окружении контейнера (VLLM_API_KEY). Любой, кто может запустить docker inspect, его увидит. Доступ к docker эквивалентен root — ограничивайте его.

API открыт наружу?

По умолчанию BIND=127.0.0.1 (только loopback). Для доступа из сети задайте BIND=0.0.0.0 и API_KEY — лаунчеры отказываются от не-loopback адреса без ключа (ALLOW_NO_AUTH=1 принимается только на loopback).

Как понять, что после запуска всё реально работает?

scripts/check-hotsplit-tp4.sh <container> <dynamic|static> — каждый rank должен отчитаться dynamic_hook=ACTIVE (dynamic) и hotsplit done. Затем smoke-тест /v1/chat/completions. Полные процедуры измерений (TTFT/TPOT, трафик PCIe, проверка гонок под compute-sanitizer): см. README рецепта (раздел «Проверка») и check-скрипты.

Могу ли я внести вклад?

Да — issues и PR приветствуются в sikkatu/recipes. Контракт: указывайте точно, что запускалось и на чём, сохраняйте sha256-пины патчей, перечисляйте известные ограничения и честно помечайте, что проверено, а что нет. Если публикуете что-то на основе этого репозитория — ссылайтесь на него (см. «Атрибуция» в README).

Clone this wiki locally