NVIDIA DGX Spark получил неофициальную поддержку NixOS

NVIDIA DGX Spark получил неофициальную поддержку NixOS

GitHub-пользователь graham33 опубликовал проект NixOS-DGX-Spark, набор инструментов Nix для NVIDIA DGX Spark, специализированного настольного компьютера для локального запуска ИИ-моделей. Проект работает как на самом DGX Spark, так и на совместимом устройстве Asus Ascent GX10.

Есть два уровня использования. Первый, «плейбуки» и dev-окружения (devshells) на базе Nix, которые можно запускать прямо поверх штатной DGX OS (Ubuntu), без установки NixOS: ставится Nix через официальный инсталлятор или Determinate Nix Installer, включаются флаги experimental-features, а для доступа собранных Nix CUDA-приложений к драйверам GPU служит утилита nix-gl-host, плейбуки на её основе подключают её автоматически. Второй уровень, полная замена ОС: репозиторий собирает загрузочный USB-образ (командой nix build .#usb-image) для установки NixOS вместо DGX OS.

Перед установкой NixOS нужно обновить прошивку через DGX OS: с заводской прошивки загружается только DGX OS, NixOS, нет. USB-образ даёт выбор из двух ядер в загрузочном меню GRUB: специализированное ядро NVIDIA для DGX Spark (вариант по умолчанию, с полной поддержкой GPU и рабочим Ethernet) или стандартное ядро NixOS версии 6.17, у которого, как указано в документации проекта, есть проблемы с Ethernet. Конфигурация ядра NVIDIA генерируется автоматически из Debian-аннотаций NVIDIA и сверяется с настройками NixOS по умолчанию, в итоге хранится только компактный файл с отличиями, что сокращает объём конфигурации примерно на 82%.

После установки NixOS модуль hardware.dgx-spark включается в конфигурацию системы одной опцией и поднимает, помимо прочего, веб-панель DGX Dashboard на localhost:11000 с телеметрией GPU и мониторингом системы. Проект также распространяется как flake, который можно подключить к собственной конфигурации NixOS, и предлагает готовый шаблон для быстрого старта.

Для ускорения сборки CUDA-пакетов (cudatoolkit, NCCL, cuDNN, PyTorch и других) используется бинарный кеш Flox для архитектуры aarch64-linux, который распространяет их с разрешения NVIDIA, плюс собственный кеш Cachix автора для пакетов самого репозитория. Автор также добавил экспериментальную удалённую установку через nixos-anywhere по SSH, в документации она прямо помечена как непроверенная и используемая на свой риск. О проекте автор рассказал в пятиминутном докладе на митапе Planet Nix.

Ключевые факты

  • Проект NixOS-DGX-Spark даёт Nix-инструменты для NVIDIA DGX Spark и совместимого Asus Ascent GX10
  • Два режима: Nix-плейбуки поверх штатной DGX OS без переустановки или полный переход на NixOS через загрузочный USB-образ
  • USB-образ предлагает выбор ядра: специализированное ядро NVIDIA (по умолчанию, полный GPU и рабочий Ethernet) или стандартное ядро NixOS 6.17 (проблемы с Ethernet)
  • Конфигурация ядра NVIDIA генерируется автоматически и хранит только отличия от настроек NixOS по умолчанию, это сокращает её объём примерно на 82%
  • Удалённая установка через nixos-anywhere по SSH пока не протестирована и помечена автором как экспериментальная

Почему это важно

DGX Spark, компактный настольный компьютер NVIDIA для локального запуска ИИ-моделей, который штатно поставляется с Ubuntu-основанной DGX OS. Настройка CUDA-окружений и GPU-драйверов на таком железе обычно хрупкая и плохо воспроизводимая: версии драйверов, библиотек и системных пакетов легко разъезжаются между машинами. NixOS-DGX-Spark переносит на эту нишевую платформу подход Nix, декларативные, воспроизводимые конфигурации системы и окружений разработки, и добавляет специализированное ядро с поддержкой GPU и Ethernet под конкретное железо.

Кому это важно

В первую очередь, владельцам NVIDIA DGX Spark и совместимого Asus Ascent GX10, которые уже пользуются Nix или NixOS и хотят воспроизводимые CUDA-окружения вместо ручной настройки DGX OS. Также полезно инженерам, которым нужно быстро поднять dev-окружение с PyTorch и CUDA-библиотеками на этом железе без полной переустановки системы.

Как это применить

Не обязательно переустанавливать систему: можно поставить Nix поверх штатной DGX OS (через официальный инсталлятор или Determinate Nix Installer), включить экспериментальные флаги nix-command и flakes и пользоваться готовыми devshells и плейбуками из репозитория, драйверы GPU для них подключает утилита nix-gl-host автоматически. Для полного перехода на NixOS сначала нужно обновить прошивку DGX Spark через штатную DGX OS (иначе NixOS не загрузится с заводской прошивки), затем собрать загрузочный USB-образ, отключить Secure Boot и установить систему по инструкции из руководства NixOS; после установки модуль hardware.dgx-spark подключается одной опцией конфигурации.

Можно ли доверять

Это некоммерческий проект одного разработчика (GitHub-пользователь graham33), распространяемый с открытым исходным кодом по лицензии MIT; в тексте нет указаний на то, что NVIDIA официально причастна к проекту или одобряет его. Документация прямо и честно помечает недоработанные части: например, установка через nixos-anywhere описана как непроверенная.

Риски и подводные камни

Стандартное ядро NixOS 6.17 (альтернатива ядру NVIDIA) имеет проблемы с Ethernet, по факту рабочим вариантом остаётся кастомное ядро NVIDIA. Прошивку DGX Spark нужно обновлять заранее через DGX OS, иначе NixOS не установится с заводской прошивки. Удалённая безголовая установка через nixos-anywhere пока не протестирована и прямо помечена автором как используемая на свой риск. Поскольку это хобби-проект одного человека без официальной поддержки NVIDIA, для критичных задач стоит проверять совместимость с текущими версиями DGX OS и следить за обновлениями репозитория.