Главная/Блог/Обзор/Кластер из 8 NVIDIA DGX Spark:…
Обзор10 мин чтения · 7 июля 2026 г.

Кластер из 8 NVIDIA DGX Spark: Эксперимент с LLM, сетью и болью

Полный разбор эксперимента по созданию кластера из 8 мини-серверов NVIDIA DGX Spark для запуска огромных LLM. Разбор проблем с сетью QSFP, настройка RoCE, бенчмарки токенов/с и вывод о целесообразности такого хаоса.

Кластер из 8 NVIDIA DGX Spark: Эксперимент с LLM, сетью и болью

У меня есть хорошие новости и плохие новости. Хорошая новость: у меня есть кластер из четырех работающих устройств NVIDIA DGX Spark, объединенных в единую систему. Плохая новость: это действительно адски жарко. Воздух выдувается с такой силой, что если направить его неправильно, можно отключить камеры. Но зачем вообще нужно объединять эти устройства? Каждая единица DGX Spark оснащена 128 ГБ памяти, доступной для обучения и инференса больших языковых моделей (LLM). Объединяя их, я получаю 512 ГБ (а в расширенной версии — до 1 ТБ) общей памяти, что позволяет запускать модели, которые физически не помещаются в один чип.

Но это не просто «больше памяти». Это использование интерфейса NVIDIA ConnectX-7, который стоит сам по себе от 1000 до 1500 долларов. Без этого интерфейса у нас не было бы безумно быстрого соединения, необходимого для тензорного параллелизма. Тензорный параллелизм — это техника, при которой веса модели распределяются между несколькими GPU. В обычных сетях (например, Ethernet) добавление новых машин замедляет систему из-за задержек. Но с поддержкой RDMA (Remote Direct Memory Access) масштабирование работает иначе: чем больше машин, тем быстрее система обрабатывает запросы, так как данные передаются напрямую между памятью серверов, минуя процессоры.

01Начало пути: Ошибки, кабели и первые тесты

Первая проблема, с которой я столкнулся, была банальной, но дорогой. Я купил кучу кабелей QSFP, не понимая разницы между стандартами. QSFP28 и QSFP56 имеют одинаковые разъемы, но скорость у них разная. QSFP56 обеспечивает двойную скорость. Кроме того, существуют коннекторы двойной плотности (double density), которые мне и требовались для соединения четырех устройств. Я купил неправильные кабели и несколько месяцев использовал QSFP28, хотя цель была в QSFP56.

Крупный план серверного оборудования с кабелем
Крупный план серверного оборудования с кабелем

Для соединения устройств нужен был коммутатор. Я купил MicroTik CRS812, самый дорогой свитч, который у меня когда-либо был, за 1300 долларов. Он имеет два порта 400 GbE. Используя разветвляющий кабель (breakout cable), я подключил один порт к четырем Spark-ам, создав mesh-сеть. Теперь устройства могут пинговать и подключаться по SSH друг к другу без паролей, что критично для кластера.

Четыре модуля NVIDIA DGX Spark в ряд
Четыре модуля NVIDIA DGX Spark в ряд

Однако, когда я запустил утилиту ethtool для проверки скорости соединения между узлами, результат оказался шокирующим: 50 Гбит/с. Это была не 100 Гбит/с, как ожидалось, и не 200 Гбит/с, как заявлено для интерфейса. Оказалось, что я использовал кабель QSFP28, который физически ограничивает скорость. Я заказал новый кабель QSFP56 на Amazon, который стоил всего 185 долларов (что считается дешевизной в этом сегменте), и заменил его.

Результаты бенчмарка LLM на терминале
Результаты бенчмарка LLM на терминале
⚠️
Важно: Подвох с кабелями. Часто продавцы на Amazon указывают, что кабель QSFP56, но на самом деле коннекторы на концах могут быть QSFP28. В моем случае Amazon продал мне кабель, который заявлялся как 400G PAM4, но физически ограничивал скорость. Единственный способ проверить — это измерить реальную пропускную способность через ethtool илиiperf, а не верить описанию товара.

02Настройка сети: Роковой баг коммутатора

Даже после замены кабеля на правильный QSFP56 скорость оставалась на уровне 50 Гбит/с. Я перезагружал устройства, проверял кабели, но результат был прежним. Здесь на помощь пришел AI-ассистент (Claude), который помог проанализировать ситуацию. Оказалось, что проблема не в кабелях, а в настройках самого коммутатора MicroTik.

Терминалы с мониторингом GPU и процессами
Терминалы с мониторингом GPU и процессами

MicroTik CRS812 — это управляемый коммутатор (managed switch). Через веб-интерфейс или SSH можно зайти в его настройки. Оказалось, что порт, к которому я подключил кабель, был жестко зафиксирован на скорости 50 Гбит/с. Это не баг, а особенность конфигурации по умолчанию или предыдущих настроек. Я изменил конфигурацию порта на 100 Гбит/с, переподключил кабель, и скорость выросла до 100 Гбит/с. Затем я подключил остальные узлы, и каждый порт теперь работал на 100 Гбит/с. Учитывая, что у каждого Spark есть два физических порта, каждый из которых поддерживает 200 Гбит/с, но виртуально разделен на два интерфейса по 100 Гбит/с, мы получили суммарную пропускную способность 200 Гбит/с на узел.

Два сервера NVIDIA DGX Spark с кабелями
Два сервера NVIDIA DGX Spark с кабелями
💡
Совет: Настройка RoCE. Для работы кластера критически важно использовать RoCE (RDMA over Converged Ethernet). Это позволяет обходить сетевой стек ОС и передавать данные напрямую между памятью GPU разных серверов. В моем случае использовалась библиотека NVIDIA Collective Communications Library (NCCL, произносится как "nickel"). Чтобы убедиться, что RoCE работает корректно, создатель решения (пользователь Yuger с форумов NVIDIA) рекомендовал использовать флаг NCCL_DEBUG=INFO или специальные утилиты для проверки задержки.

03Бенчмарки: Llama-Benchy и реальность

Для тестирования я использовал утилиту llama-benchy, которая более реалистична, чем llama-bench, так как взаимодействует с сервером через сеть. Первым тестом стала модель Qwen3 34B (полная версия BF16, не квантованная). На одном узле скорость генерации составляла 51 токен/с. При подключении всех четырех узлов скорость обработки промпта (prompt processing, PP) взлетела до 6367 токенов/с (при контексте 2048), а генерация токенов показала прирост.

Терминал с командой проверки скорости сети кластера
Терминал с командой проверки скорости сети кластера

Однако, после настройки сети на 100 Гбит/с результаты оказались парадоксальными. Скорость генерации токенов выросла всего на 7% (что находится в пределах погрешности), а вот скорость обработки промпта упала на 19%. Почему? Оказалось, что на скорости 50 Гбит/с задержки были выше, но алгоритмы распределения нагрузки могли работать эффективнее в определенных условиях. На скорости 100 Гбит/с задержка снизилась, но это не дало ожидаемого скачка в производительности для этой конкретной модели и конфигурации.

Кабели подключены к серверным узлам DGX Spark
Кабели подключены к серверным узлам DGX Spark

Для сравнения: - 1 узел: 23 токена/с (генерация) - 2 узла: 35 токенов/с (генерация) - 4 узла: ~40-45 токенов/с (генерация, с учетом 100 Гбит/с сети)

Обработка промпта (pre-fill) на 4 узлах показала почти 8000 токенов/с, что является огромным преимуществом кластера. Это означает, что вы можете загрузить очень длинный контекст (например, всю книгу) за доли секунды.

Страница настройки DGX Spark с инструкциями
Страница настройки DGX Spark с инструкциями
📌
Факт: Задержка (Latency). Я провел тест задержки между узлами. Через коммутатор задержка составила 3 микросекунды. При прямом соединении двух Spark-ов (без свитча) задержка упала до 1 микросекунды. Эта разница в 2 микросекунды критична для маленьких моделей, где коммуникация между GPU происходит чаще. Для больших моделей, где доминирует вычислительная нагрузка, разница менее заметна, но все же важна.

04Масштабирование: От Qwen3 32B к Qwen3.5 397B

Самый интересный вопрос: зачем все это нужно, если прирост скорости генерации не всегда огромен? Ответ — размер модели. Некоторые модели просто не помещаются в память одного устройства. Я начал с Qwen3 VL 32B (66 ГБ на диске). На одном узле скорость была 3.58 токена/с. На двух узлах — 6.14 токена/с. На четырех узлах — 11.36 токена/с. Масштабирование здесь линейное и предсказуемое. Память на каждом узле заполняется почти полностью (63 ГБ из 128 ГБ), так как модель делится, но также требуется память для KV-кэша и операционных систем.

Сервер NVIDIA DGX Spark крупным планом
Сервер NVIDIA DGX Spark крупным планом

Затем я расширил кластер до 8 узлов, добавив еще один коммутатор MicroTik CRS804 (с 4 портами 400 GbE) и новые кабели. Настройка заняла много времени: пришлось настраивать SSH-меш (64 соединения между 8 машинами), копировать модели через rsync, настраивать jumbo frames (MTU 9000) для оптимизации пакетов. В итоге я получил кластер из 8 DGX Spark.

Белый сетевой коммутатор MikroTik с портами
Белый сетевой коммутатор MikroTik с портами

Тест на Qwen3 4B (8 ГБ на диске) показал, что для маленьких моделей кластер из 8 узлов избыточен. Скорость генерации выросла с 61 до 64 токенов/с — прирост всего 10%. Модель слишком мала, чтобы распределить нагрузку эффективно, и накладные расходы на коммуникацию нивелируют выгоду.

Интерфейс NVIDIA ConnectX-7
Интерфейс NVIDIA ConnectX-7

Но настоящий триумф случился с моделью Qwen3.5 397B (Active 17B). Эта модель весит 800 ГБ на диске. Ее невозможно запустить даже на Mac Studio с 512 ГБ памяти. Но мой кластер из 8 Spark-ов (общая память 1 ТБ) справился с задачей. Модель была разрезана (sharded) на все 8 узлов. Загрузка памяти на каждом узле составила 112 ГБ из 128 ГБ. Скорость генерации составила 24 токена/с. Для модели такого уровня (SOTA, mixture of experts) это приемлемый результат. Это позволило запустить модель, которая иначе была бы недоступна.

Кабели QSFP28 и QSFP56
Кабели QSFP28 и QSFP56

05Технические детали и подводные камни

В процессе работы я столкнулся с рядом технических нюансов, которые стоит учитывать энтузиастам:

Коммутатор MikroTik CRS812
Коммутатор MikroTik CRS812
  • Тепловыделение: Кластер из 8 устройств генерирует огромное количество тепла. Мне пришлось открыть окно, так как выдуваемый горячий воздух быстро нагревал помещение. Шум от вентиляторов коммутаторов также заметен, хотя они тише серверных.
  • Стоимость: Помимо самих Spark-ов (185$ за штуку), затраты на сеть огромны. Коммутаторы MicroTik, кабели QSFP56, разветвляющие кабели — все это складывается в серьезную сумму. Только сеть обошлась в несколько тысяч долларов.
  • Программное обеспечение: Для работы кластера используется Docker-контейнер с vLLM. Также активно используется репозиторий пользователя Yuger, который упростил настройку кластеризации без необходимости глубокого погружения в Docker-сети. Важно использовать NCCL для коммуникации между GPU.
  • Операционная система: Все узлы работают под управлением Linux (вероятно, Ubuntu или специализированной сборки NVIDIA). Настройка SSH без паролей и синхронизация времени критичны для стабильной работы.
💡
Совет: Выбор модели. Не пытайтесь запускать маленькие модели (до 13B параметров) на большом кластере. Вы не получите прироста скорости, а только усложните инфраструктуру. Кластеризация имеет смысл для моделей размером от 30B параметров и выше, где память одного устройства становится узким местом, или для задач, требующих огромного контекстного окна (pre-fill).

06Выводы: Кому что подойдёт

Эксперимент с кластером из 8 NVIDIA DGX Spark показал, что технически возможно объединить эти мини-серверы в мощную систему для инференса LLM. Однако это не «plug-and-play» решение. Оно требует глубоких знаний в настройке сетей, коммутаторов и распределенных вычислений.

Результат ethtool: 50 Гбит/с
Результат ethtool: 50 Гбит/с

Кому это подходит: - Энтузиастам и исследователям, которые хотят запустить модели размером 30B+ параметров на домашнем или офисном оборудовании. - Тем, кому нужен огромный контекст (pre-fill) для обработки больших документов. - Тем, кто готов потратить время на настройку сети и решение проблем с задержками.

Настройка порта коммутатора
Настройка порта коммутатора
Мониторинг кластера nvtop
Мониторинг кластера nvtop
График производительности Llama-Benchy
График производительности Llama-Benchy
Тест задержки (Latency)
Тест задержки (Latency)

Кому это НЕ подходит: - Обычным пользователям, которым нужна просто быстрая генерация текста. Один Spark или даже два справятся лучше, чем 8 узлов с низкой скоростью генерации на токен. - Тем, кто не готов разбираться в сетях, RoCE, NCCL и настройке коммутаторов.

Главный вывод: масштабирование по памяти работает отлично, позволяя запускать модели, которые иначе невозможно запустить. Масштабирование по скорости генерации (token generation) имеет пределы и зависит от архитектуры модели и эффективности сети. Для моделей типа Mixture of Experts (MoE), таких как Qwen3.5 397B, кластеризация — это единственный способ их запуска. Для других задач лучше рассмотреть более простые решения, такие как использование нескольких GPU в одном корпусе или облачные сервисы.

Этот проект стал уроком терпения и внимательности к деталям. От неправильных кабелей до настроек коммутатора — каждый шаг требовал проверки. Но результат — работающая система, способная запустить 800-гигабайтную модель — того стоил. Если вы решитесь на такой путь, будьте готовы к тому, что ваш дом станет жарким, а счета за электричество вырастут, но вы получите доступ к миру больших моделей, который раньше был доступен только корпорациям.

Источник: видео-разбор (YouTube) ↗