🌍 Читайте іншими мовами: Deutsch | Español | Français | Italiano | 日本語 | 简体中文 | 繁體中文 | Русский | Українська | Português | 한국어 | العربية | Tiếng Việt | Türkçe
Позначка про AI-переклад: Цей файл перекладено за допомогою ШІ на основі README.md. У ньому можуть бути помилки, і він може відставати від англомовної версії. Якщо є сумніви, орієнтуйтеся на англійський README.
Ваш Nvidia DGX Spark не повинен бути ще одним побічним проєктом. Його варто реально використовувати. Це Docker-базований стек інференсу для обслуговування великих мовних моделей (LLM) за допомогою NVIDIA vLLM та розумного керування ресурсами. Стек надає завантаження моделей на вимогу з автоматичним вимкненням у разі простою, одну основну лінію планування для main-model з необов'язковим utility-helper та єдиний API gateway.
Мета проєкту — дати домашній сервер інференсу. Після місяця тестування та додавання нових моделей я вирішив опублікувати його для спільноти. Будь ласка, враховуйте, що це hobby-проєкт, і будь-яка конкретна допомога для покращення дуже вітається. Він спирається на інформацію, яку я знайшов в інтернеті та на форумах NVIDIA. Дуже сподіваюся, що це допоможе рухати вперед homelab-сценарії. Основний фокус — один DGX Spark, і за замовчуванням усе має працювати саме на ньому, але підтримка двох пристроїв теж вітається.
- Архітектура і як це працює - Зрозуміти стек, сервіс waker і потік запитів.
- Конфігурація - Змінні середовища, мережеві налаштування та тюнінг waker.
- Посібник з вибору моделей - Поточний каталог моделей, швидкий вибір і статус валідації.
- Інтеграції - Інструкції для Cline (VS Code) і OpenCode (термінальний агент).
- Безпека та віддалений доступ - Посилення SSH і налаштування обмеженого port forwarding.
- Діагностика та моніторинг - Налагодження, логи та розв'язання типових помилок.
- Розширене використання - Додавання нових моделей, власні конфігурації та постійна робота.
- Базова лінія runtime - Які локальні image-track очікує репозиторій і як їх перебудувати.
- Інструменти та validation harness - Підтримувані smoke, soak, inspection і manual probe скрипти.
- Нотатки TODO - Ідеї про те, що робити далі.
-
Склонуйте репозиторій
git clone <repository-url> cd dgx-spark-inference-stack
-
Створіть потрібні каталоги
mkdir -p models vllm_cache_huggingface manual_download/openai_gpt-oss-encodings_fix
-
Завантажте потрібні tokenizer'и (КРИТИЧНО) Для GPT-OSS моделей стек вимагає вручну завантажити файли
tiktoken.wget https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken -O manual_download/openai_gpt-oss-encodings_fix/cl100k_base.tiktoken wget https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken -O manual_download/openai_gpt-oss-encodings_fix/o200k_base.tiktoken
-
Зберіть кастомні Docker-образи (ОБОВ'ЯЗКОВО) Стек використовує оптимізовані vLLM-образи, які варто збирати локально для максимальної продуктивності.
- Час: Закладайте приблизно 20 хвилин на один образ.
- Автентифікація: Потрібно увійти до NVIDIA NGC, щоб тягнути базові образи.
- Створіть акаунт розробника в NVIDIA NGC Catalog (не з країни під санкціями).
- Виконайте
docker login nvcr.ioзі своїми обліковими даними. Команди збирання:
# Build Avarok image (General Purpose) - MUST use this tag to use local version over upstream. # Build from the repo root so the manually downloaded tokenizer files are included. docker build -t avarok/vllm-dgx-spark:v11 -f custom-docker-containers/avarok/Dockerfile . # If you want compose services that default to the pinned upstream Avarok image # to use your local rebuild instead, export this override for the current shell # or place it in .env before running docker compose. export VLLM_TRACK_AVAROK=avarok/vllm-dgx-spark:v11 # Build the repo MXFP4 track used by GPT-OSS. # This bakes the manually downloaded tiktoken files into the image. docker build -t vllm-node-mxfp4 -f custom-docker-containers/vllm-node-mxfp4/Dockerfile . # Build the refreshed TF5 track used by GLM 4.7. docker build -t local/vllm-node-tf5:cu131 -f custom-docker-containers/vllm-node-tf5/Dockerfile . # Build the upstream-style TF5 track used by Gemma 4 and newer TF5 recipe imports. # The active Gemma compose services expect this exact local image tag. git clone https://github.com/eugr/spark-vllm-docker tmp/spark-vllm-docker 2>/dev/null || git -C tmp/spark-vllm-docker pull --ff-only (cd tmp/spark-vllm-docker && bash build-and-copy.sh --pre-tf)
- Примітка:
vllm-node-tf5зараз не збирається з локального Dockerfile цього репозиторію. Якщо ви плануєте запускати Gemma 4 або новіші TF5-варіанти Qwen, зберіть його явно через upstream helper flow вище. Див. docs/runtime-baseline.md для точних кроків і мережевих вимог під час збирання.
-
Запустіть стек
# Start gateway and waker only (models start on-demand) docker compose up -d # Pre-create all enabled model containers once the required local track images exist docker compose --profile models up --no-start
-
Перевірте API
# Request to the shipped utility helper curl -X POST http://localhost:8009/v1/chat/completions\ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${VLLM_API_KEY:-63TestTOKEN0REPLACEME}" \ -d '{ "model": "qwen3.5-0.8b", "messages": [{"role": "user", "content": "Привіт!"}] }'
-
Використовуйте підтримуваний validation harness Після першого успішного ручного
curlпереходьте на bring-up flow, який підтримується в репозиторії, замість ad hoc скриптів:bash tools/validate-stack.sh bash tools/smoke-gateway.sh
Команди bring-up, smoke, soak і manual probe для конкретних моделей дивіться в tools/README.md.
- Спочатку прочитайте docs/architecture.md, потім tools/README.md.
- Вважайте tools/README.md разом із models.json поточним операційним джерелом правди.
- Вважайте цей README короткою точкою входу, а не повним каталогом моделей. Для ширшого каталогу використовуйте docs/models.md.
- Docker 20.10+ з Docker Compose
- NVIDIA GPU з підтримкою CUDA та NVIDIA Container Toolkit
- Linux-хост (перевірено на Ubuntu)
Pull request'и дуже вітаються. :) Але для стабільності я дотримуюся суворого Pull Request Template.
Цей README тепер коротко показує лише поточні рекомендовані варіанти за замовчуванням для стека.
- Валідовані основні моделі:
gpt-oss-20b,gpt-oss-120bіglm-4.7-flash-awq - Валідований utility helper:
qwen3.5-0.8bдля заголовків і метаданих сесії - Усе інше: Є в репозиторії, але не вважається вибором за замовчуванням для цього README, доки не буде повторно перевірене поточним harness
Для ширшого каталогу моделей, експериментальних шляхів і ручних сценаріїв використовуйте docs/models.md і models.json.
Для клієнтських застережень, особливостей runtime і нотаток з troubleshooting використовуйте docs/integrations.md та docs/troubleshooting.md.
Окрема подяка учасникам спільноти, чиї Docker-образи й робота над рецептами вплинули на цей стек:
- Thomas P. Braun з Avarok: За універсальний vLLM image (
avarok/vllm-dgx-spark) з підтримкою non-gated activations (Nemotron), гібридних моделей і публікації на кшталт https://blog.avarok.net/dgx-spark-nemotron3-and-nvfp4-getting-to-65-tps-8c5569025eb6. - Christopher Owen: За оптимізований для MXFP4 vLLM image (
christopherowen/vllm-dgx-spark), який робить можливим високопродуктивний inference на DGX Spark. - eugr: За оригінальний community-репозиторій vLLM для DGX Spark (
eugr/spark-vllm-docker), його кастомізації та чудові дописи на форумах NVIDIA. - Patrick Yi / scitrera.ai: За SGLang-рецепт utility-model, який вплинув на локальний шлях helper-моделі
qwen3.5-0.8b. - Raphael Amorim: За community-форму AutoRound-рецепта, яка вплинула на експериментальний локальний шлях
qwen3.5-122b-a10b-int4-autoround. - Bjarke Bolding: За форму AutoRound-рецепта для довгого контексту, яка вплинула на експериментальний локальний шлях
qwen3-coder-next-int4-autoround.
Проєкт поширюється за ліцензією Apache License 2.0. Деталі див. у файлі LICENSE.