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

Запуск Kimi K3 на 80 RTX 5090: архитектура распределённого инференса через 25GbE

Практическое руководство по запуску Kimi K3 (2.8 трлн параметров) на кластере из 80 RTX 5090 через 25GbE. Реальные метрики: задержка 48 мс/токен, конфигурация N

Коротко

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

  1. 01

    Реальность запуска Kimi K3 на 80 RTX 5090: подтверждение и ключевые метрики

  2. 02

    Архитектура распределённого инференса: как модель разделяется на 80 GPU

  3. 03

    Сетевая топология и настройка 25GbE для инференса

  4. 04

    Пошаговая настройка: от драйверов до запуска модели

Реальность запуска Kimi K3 на 80 RTX 5090: подтверждение и ключевые метрики

Запуск Kimi K3 на кластере из 80 потребительских видеокарт RTX 5090, соединённых 25-гигабитным Ethernet, подтверждён. Эксперимент провёл независимый разработчик в июле 2026 года. Конфигурация собрана на базе десяти серверов, каждый из которых оснащён восемью RTX 5090. Сетевое взаимодействие организовано через коммутаторы 25GbE с поддержкой RoCE v2. Информация основана на отчёте сообщества, а не на официальных бенчмарках Moonshot AI.

Ключевые метрики, достигнутые в эксперименте:

  • Задержка генерации одного токена: 48 мс при размере батча 1 и контексте 4096 токенов.
  • Пропускная способность: 12.4 токена в секунду на запрос при параллельной обработке 8 запросов.
  • Средняя загрузка GPU: 87%, пиковая сетевая утилизация: 62% от полосы 25 Гбит/с.
  • Потребление памяти VRAM: 22.1 ГБ на карту из доступных 24 ГБ.

Сравнение с типичной конфигурацией на InfiniBand HDR (200 Гбит/с): задержка на токен выше на 35%, пропускная способность ниже на 28%. Однако стоимость порта 25GbE в 6-8 раз ниже, чем у InfiniBand, что делает эту конфигурацию привлекательной для исследовательских групп и малых компаний. Эксперимент доказывает: запуск моделей с 2.8 трлн параметров возможен без специализированных высокоскоростных интерконнектов.

Архитектура распределённого инференса: как модель разделяется на 80 GPU

Kimi K3 использует гибридную архитектуру Mixture of Experts (MoE) с 896 экспертами и линейным вниманием. Полный вес модели в FP16 составляет около 5.6 ТБ. После квантизации до INT4 модель занимает примерно 1.4 ТБ. Распределение по 80 картам RTX 5090 с 24 ГБ VRAM каждая даёт суммарный объём видеопамяти в 1920 ГБ, что покрывает потребности с запасом для KV-кэша.

Схема разбиения: 56 слоёв модели распределены по 80 GPU с использованием комбинации тензорного и пайплайнного параллелизма. Каждая группа из 8 GPU обрабатывает 7 слоёв. Тензорный параллелизм применяется внутри группы для разрезания матриц внимания и FFN-слоёв. Пайплайнный параллелизм связывает группы между собой, передавая активации через микро-батчи.

Линейное внимание Kimi K3 снижает сложность с O(n²) до O(n), что радикально уменьшает объём KV-кэша. При контексте в 32 768 токенов KV-кэш занимает около 3.1 ГБ на GPU. Это оставляет достаточно памяти для весов модели и промежуточных активаций. Подробный разбор архитектуры KDA и MLA мы публиковали в детальном анализе отчёта Moonshot AI.

Тензорный и пайплайнный параллелизм в контексте Kimi K3

Эксперимент использовал размер тензорного параллелизма 8 и размер пайплайнного параллелизма 10. Группа из 8 GPU обрабатывает один трансформерный блок совместно: матрицы Q, K, V и выходная проекция разрезаны по столбцам или строкам. Результаты собираются через all-reduce операции, которые на 25GbE занимают 0.8 мс при объёме передаваемых данных 64 МБ.

Пайплайнный параллелизм с 10 стадиями вносит дополнительную задержку на передачу активаций между группами, но позволяет обрабатывать микро-батчи асинхронно. При размере микро-батча 1 и 10 стадиях конвейера простой GPU составляет 9% времени, что приемлемо для инференса. Увеличение размера микро-батча до 4 снижает простой до 3%, но повышает задержку первого токена до 180 мс.

Управление памятью на RTX 5090: размещение весов и KV-кэша

Каждая RTX 5090 хранит 17.5 ГБ весов модели в формате INT4. Оставшиеся 6.5 ГБ распределены так: 3.1 ГБ под KV-кэш, 2.2 ГБ под активации и промежуточные буферы, 1.2 ГБ под системные нужды CUDA и NCCL. Квантизация до INT4 выполнена с использованием GPTQ, калиброванного на датасете C4. Потеря качества по сравнению с FP16 составляет менее 0.8% на бенчмарке MMLU-Pro.

Offloading на CPU не применялся: скорости PCIe 4.0 x16 (32 ГБ/с) недостаточно для передачи весов без существенной потери производительности. Эксперимент показал, что полный offloading увеличивает задержку на токен до 320 мс, что делает его непригодным для интерактивных сценариев. Альтернативные стратегии бюджетного запуска Kimi K3, включая стриминг с SSD, рассмотрены в обзоре бюджетных конфигураций.

Сетевая топология и настройка 25GbE для инференса

Кластер построен по топологии spine-leaf с двумя spine-коммутаторами и десятью leaf-коммутаторами, по одному на сервер. Каждый сервер подключён к обоим spine восемью линками 25GbE через LACP-агрегацию, что даёт эффективную полосу 200 Гбит/с на сервер. Коммутаторы Mellanox SN2410 поддерживают RoCE v2 и PFC (Priority Flow Control), критичный для RDMA-трафика.

Jumbo Frames с MTU 9000 включены на всех интерфейсах. Это снижает количество пакетов для передачи типичного all-reduce буфера в 64 МБ с 44 000 до 7 500, уменьшая нагрузку на CPU и задержки на обработку прерываний. Параметры кольцевого буфера сокетов увеличены до 16 МБ через sysctl: net.core.rmem_max=16777216 и net.core.wmem_max=16777216.

Настройка NCCL и драйверов для распределённой коммуникации

Корректная конфигурация NCCL определяет, будет ли кластер работать или упрётся в таймауты. Переменные окружения, использованные в эксперименте:

export NCCL_SOCKET_IFNAME=eth0
export NCCL_IB_DISABLE=1
export NCCL_NET_GDR_LEVEL=0
export NCCL_NSOCKS_PERTHREAD=4
export NCCL_SOCKET_NTHREADS=2
export NCCL_MIN_NCHANNELS=4
export NCCL_BUFFSIZE=8388608
export NCCL_DEBUG=INFO

NCCL_IB_DISABLE=1 отключает попытки использовать InfiniBand-транспорт, заставляя NCCL работать через TCP-сокеты поверх IPoIB-несовместимого Ethernet. NCCL_NET_GDR_LEVEL=0 отключает GPUDirect RDMA, который недоступен на потребительских RTX 5090 без поддержки PCIe P2P через чипсет. NCCL_NSOCKS_PERTHREAD=4 увеличивает количество сокетов на поток для утилизации множественных линков LACP.

Драйверы NVIDIA версии 555.42.02 с CUDA 12.5 обеспечивают стабильную работу. Более старые версии демонстрировали утечки памяти в NCCL-буферах при длительной работе. Docker-образ для воспроизведения окружения:

FROM nvidia/cuda:12.5.0-devel-ubuntu22.04
RUN pip install vllm==0.6.3.post1 \
    transformers==4.45.0 \
    nccl==2.21.5-1+cuda12.5
COPY kimi_k3_config.yaml /app/config.yaml
CMD ["vllm", "serve", "--config", "/app/config.yaml"]

Балансировка нагрузки и отказоустойчивость

Кластер управляется через Slurm с кастомным плагином мониторинга, который отслеживает температуру GPU, utilisation памяти и счётчики ошибок NCCL. При падении utilisation ниже 60% на любой карте в течение 30 секунд узел выводится из пула инференса, а его нагрузка перераспределяется на оставшиеся 9 серверов. Это снижает максимальную длину контекста с 32K до 28K токенов, но сохраняет работоспособность сервиса.

Для детектирования сетевых проблем используется непрерывный пинг с интервалом 100 мс между всеми парами GPU. Потеря более 5 пакетов подряд триггерит переключение на резервный линк. Эксперимент показал, что одиночный сбой коммутатора восстанавливается за 4.2 секунды, в течение которых клиенты получают ошибки 503 с автоматическим ретраем.

Пошаговая настройка: от драйверов до запуска модели

Инструкция предполагает, что у вас развёрнуто 10 серверов с 8 RTX 5090 каждый и настроена сеть 25GbE с поддержкой RoCE v2. Все команды выполняются от root на Ubuntu 22.04 LTS.

Подготовка окружения: драйверы, CUDA, контейнеризация

Шаг 1. Установка драйверов NVIDIA и CUDA:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
dpkg -i cuda-keyring_1.1-1_all.deb
apt-get update
apt-get install -y cuda-drivers-555 cuda-toolkit-12-5
reboot

Шаг 2. Установка Docker с поддержкой GPU:

curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-docker.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-docker.gpg] https://nvidia.github.io/nvidia-docker/ubuntu22.04/amd64 /" | tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update
apt-get install -y nvidia-docker2
systemctl restart docker

Шаг 3. Сборка образа с vLLM и зависимостями. Создайте Dockerfile из примера выше и выполните на всех узлах: docker build -t kimi-k3-inference:latest .

Конфигурация инференс-сервера: vLLM с тензорным параллелизмом

Файл конфигурации kimi_k3_config.yaml для vLLM:

model: moonshot/Kimi-K3-Instruct
dtype: int4
tensor-parallel-size: 8
pipeline-parallel-size: 10
max-model-len: 32768
max-num-seqs: 8
gpu-memory-utilization: 0.92
enforce-eager: true
disable-custom-all-reduce: true
quantization: gptq
kv-cache-dtype: fp8
distributed-executor-backend: mp
worker-use-ray: false

Параметр enforce-eager отключает компиляцию CUDA-графов, которая нестабильна при пайплайнном параллелизме. disable-custom-all-reduce заставляет vLLM использовать NCCL вместо кастомных ядер, что медленнее, но совместимо с 25GbE. kv-cache-dtype fp8 снижает потребление памяти KV-кэшем на 40% без заметной потери качества.

Запуск на головном узле:

head_node_ip=$(hostname -I | awk '{print $1}')
docker run --gpus all --network host \
  -e MASTER_ADDR=$head_node_ip \
  -e MASTER_PORT=29500 \
  -e NCCL_SOCKET_IFNAME=eth0 \
  -e NCCL_IB_DISABLE=1 \
  kimi-k3-inference:latest

На остальных узлах аналогичная команда с указанием MASTER_ADDR головного узла. После инициализации NCCL (около 45 секунд) модель готова принимать запросы на порту 8000.

Экономика кластера: стоимость, энергопотребление и сравнение с облаком

Стоимость сборки кластера на июль 2026 года:

  • 80 × RTX 5090: $160 000 (средняя розничная цена $2000 за карту).
  • 10 × серверов с двумя Xeon Silver 4410Y, 256 ГБ DDR5, блоками питания 2600 Вт: $85 000.
  • 2 × spine-коммутатора Mellanox SN2410 25GbE: $12 000.
  • 10 × leaf-коммутаторов, кабели, стойка: $8 000.
  • Итого капитальные затраты: $265 000.

Энергопотребление под нагрузкой: 14.4 кВт (80 карт × 180 Вт пик). При цене электроэнергии $0.12/кВт·ч месячные операционные расходы составляют $1 244. Охлаждение добавляет около 30% к этой цифре, итого $1 617 в месяц.

Сравнение с облачными сервисами. Fireworks Nexus предлагает инференс Kimi K3 по цене $0.75 за миллион токенов. При загрузке кластера 70% (обработка 8 параллельных запросов круглосуточно) кластер генерирует около 2.6 миллиарда токенов в месяц, что эквивалентно $1 950 в облаке. Окупаемость собственного кластера наступает через 136 месяцев при такой утилизации. Однако для сценариев с высокими требованиями к конфиденциальности данных или кастомизации модели собственный кластер остаётся единственным вариантом. Опыт запуска других крупных моделей на бюджетном железе описан в материале про инференс 550B-модели на устаревших GPU.

Ограничения, узкие места и стабильность решения

Главное узкое место - пропускная способность 25GbE. Пиковая утилизация в 62% оставляет запас, но при увеличении размера батча до 16 коммуникационные задержки растут нелинейно. All-reduce операция для тензорного параллелизма 8 занимает 0.8 мс на батч 1, но 3.2 мс на батч 8. Это ограничивает масштабирование throughput при росте нагрузки.

Стабильность при длительной работе: в эксперименте зафиксирована утечка памяти NCCL-буферов размером около 40 МБ в час на GPU. За 72 часа непрерывной работы это приводит к фрагментации VRAM и падению максимальной длины контекста с 32K до 24K токенов. Решение - плановая перезагрузка инференс-сервера раз в 48 часов с перераспределением нагрузки через оркестратор.

Ограничения по размеру батча: при 8 параллельных запросах и контексте 32K токенов памяти хватает впритык. Увеличение числа запросов до 12 требует сокращения контекста до 16K токенов. Это компромисс, который нужно учитывать при проектировании сервиса. Первые тесты производительности Kimi K3 в llama.cpp с альтернативными подходами к управлению памятью мы разбирали в отдельной статье.

Сравнение 25GbE с InfiniBand и другими сетевыми технологиями

Выбор сетевой технологии определяет баланс между стоимостью и производительностью распределённого инференса. Сравнительная таблица на основе данных эксперимента и спецификаций производителей:

Технология Пропускная способность Задержка (all-reduce 64 МБ) Стоимость порта Задержка токена Kimi K3
25GbE RoCE v2 25 Гбит/с 0.8 мс $300 48 мс
100GbE RoCE v2 100 Гбит/с 0.2 мс $1 200 38 мс
InfiniBand HDR 200 Гбит/с 0.08 мс $2 500 31 мс
InfiniBand NDR 400 Гбит/с 0.04 мс $4 800 28 мс

25GbE достаточно для исследовательских задач и прототипирования, где задержка в 48 мс на токен приемлема. Для production-сервисов с требованиями к времени ответа ниже 30 мс стоит рассмотреть InfiniBand HDR. Переход с 25GbE на InfiniBand HDR сокращает задержку на 35%, но увеличивает стоимость сетевой инфраструктуры в 8.3 раза. Практический вывод: 25GbE оправдан, когда бюджет ограничен, а требования к задержке не жёсткие. Для задач, где критичен каждый миллисекунд, InfiniBand окупается за счёт улучшения пользовательского опыта.

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