Перейти к содержанию

Часто задаваемые вопросы

Матрица поддержки

Поддержка гибридного кластера

GPUStack поддерживает гетерогенные кластеры, включающие процессоры NVIDIA, AMD, Ascend NPU, Hygon DCU, Moore Threads, Iluvatar, MetaX, Cambricon и T-Head PPU, и работает на архитектурах AMD64 и ARM64.

Поддержка распределенного вывода

Несколько GPU на одном узле

  • vLLM
  • SGLang
  • MindIE

Многоузловой мульти-GPU

  • vLLM
  • SGLang
  • MindIE

Установка

Как я могу изменить зарегистрированное имя работника?

Вы можете установить для него собственное имя, используя флаг --worker-name при запуске GPUStack:

1
2
3
4
sudo docker run -d --name gpustack \
    ...
    gpustack/gpustack \
+    --worker-name New-Name

Как я могу изменить зарегистрированный IP-адрес рабочего?

Вы можете установить собственный IP-адрес, используя флаг --worker-ip при запуске GPUStack:

1
2
3
4
sudo docker run -d --name gpustack \
    ...
    gpustack/gpustack \
+    --worker-ip xx.xx.xx.xx

Где хранятся данные GPUStack?

При запуске контейнера GPUStack том Docker монтируется с использованием параметра --volume/-v. Путь к данным по умолчанию находится в каталоге данных Docker, в частности в подкаталоге томов, а путь по умолчанию:

/var/lib/docker/volumes/gpustack-data/_data

Проверить это можно следующим способом:

docker volume ls
docker volume inspect gpustack-data

Если вам нужно изменить его на собственный путь, измените конфигурацию монтирования при запуске контейнера. Например, чтобы смонтировать каталог хоста /data/gpustack:

1
2
3
4
5
6
7
sudo docker run -d --name gpustack \
    ...
    --volume /var/run/docker.sock:/var/run/docker.sock \
-    --volume gpustack-data:/var/lib/gpustack \
+    --volume /data/gpustack:/var/lib/gpustack \
    ...
    gpustack/gpustack

Где хранятся файлы моделей?

При запуске контейнера GPUStack том Docker монтируется с использованием параметра --volume/-v. Путь к кэшу по умолчанию находится в каталоге данных Docker, в частности в подкаталоге томов, а путь по умолчанию:

/var/lib/docker/volumes/gpustack-data/_data/cache

Проверить это можно следующим способом:

docker volume ls
docker volume inspect gpustack-data

Если вам нужно изменить его на собственный путь, измените конфигурацию монтирования при запуске контейнера.

Например, чтобы смонтировать каталог хоста /data/model-cache:

1
2
3
4
5
6
sudo docker run -d --name gpustack \
    ...
    --volume gpustack-data:/var/lib/gpustack \
+    --volume /data/model-cache:/var/lib/gpustack/cache \
    ...
    gpustack/gpustack

Управление моделями

Как я могу развернуть модель из Hugging Face?

Чтобы развернуть модели из Hugging Face, серверный узел и рабочие узлы, на которых запланированы экземпляры модели, должны иметь доступ к Hugging Face, или вы можете использовать зеркало.

Например, настройте зеркало hf-mirror.com:

1
2
3
4
sudo docker run -d --name gpustack \
+    -e HF_ENDPOINT=https://hf-mirror.com \
    ...
    gpustack/gpustack

Как я могу развернуть модель из локального пути?

При развертывании моделей из локального пути убедитесь, что путь к модели доступен целевым рабочим процессам.

Если модель хранится в конкретном работнике, вы можете использовать селектор исполнителя, чтобы развернуть модель для этого работника.

Другой вариант — смонтировать общее хранилище на нескольких узлах.

Файлы модели также должны быть смонтированы в контейнер, а каталог хоста и путь монтирования контейнера должны быть идентичными.

При развертывании моделей Safetensors из локального пути он должен указывать на абсолютный путь к каталогу модели, содержащему *.safetensors, config.json и другие файлы.

При развертывании моделей GGUF из локального пути путь должен указывать на абсолютный путь к файлу .gguf. Для файлов сегментированной модели используйте абсолютный путь к первому файлу .gguf (00001).


Что делать, если модель застряла в состоянии Pending?

Pending означает, что в настоящее время ни один работник не соответствует требованиям модели. Наведите указатель мыши на статус Pending, чтобы увидеть причину.

Сначала проверьте раздел Workers, чтобы убедиться, что статус работника — «Готов».

Далее, каждый бэкэнд имеет свою собственную логику обработки. Например, для vLLM:

vLLM требует, чтобы на всех графических процессорах было доступно более 90 % памяти по умолчанию (контролируется параметром --gpu-memory-utilization). Убедитесь, что имеется достаточно выделяемой памяти графического процессора, превышающей 90%. Обратите внимание: даже если другие модели находятся в состоянии Error или Downloading, память графического процессора уже выделена.

Если на всех графических процессорах доступно более 90 % доступной памяти, но по-прежнему отображается Pending, это указывает на недостаток памяти. Для моделей safetensors требуемую память графического процессора (ГБ) можно оценить как:

GPU Memory (GB) = Model weight size (GB) * 1.2 + 2

Если выделяемая память графического процессора составляет менее 90%, но вы уверены, что модель может работать с меньшим выделением, вы можете настроить параметр --gpu-memory-utilization. Например, добавьте --gpu-memory-utilization=0.5 в Edit Model → Advanced → Backend Parameters, чтобы выделить 50% памяти графического процессора.

Примечание: Если после запуска модели возникает ошибка и в журналах отображается CUDA: out of memory, это означает, что выделенной памяти графического процессора недостаточно. Вам нужно будет дополнительно настроить --gpu-memory-utilization, добавить больше ресурсов или развернуть модель меньшего размера.

Размер контекста модели также влияет на требуемую память графического процессора. Вы можете настроить параметр --max-model-len, чтобы установить меньший контекст. В GPUStack, если этот параметр не установлен, его значение по умолчанию — 8192. Если оно указано в параметрах серверной части, фактическая настройка вступит в силу.

При необходимости вы можете настроить его на меньший контекст, например --max-model-len=2048. Однако имейте в виду, что максимальное количество токенов для каждого запроса на вывод не может превышать значение --max-model-len. Поэтому установка очень маленького контекста может привести к усечению вывода.

Параметр --enforce-eager также помогает снизить использование памяти графического процессора. Однако этот параметр в vLLM заставляет модель выполняться в режиме активного выполнения, что означает, что операции выполняются немедленно по мере их вызова, а не откладываются для оптимизации при выполнении на основе графа (как при отложенном выполнении). Это может замедлить выполнение, но облегчить отладку. Однако это также может снизить производительность из-за отсутствия оптимизации, обеспечиваемой выполнением графа.

SGLang и MindIE следуют аналогичному процессу, отличаясь только своими параметрами. Дополнительную информацию см. в разделе Встроенные механизмы вывода.


Что делать, если модель застряла в состоянии Scheduled?

Попробуйте перезапустить контейнер GPUStack, в котором запланирована модель. Если проблема не устранена, проверьте журналы рабочих процессов здесь, чтобы проанализировать причину.

Что делать, если модель застряла в состоянии Error?

Наведите курсор на статус Error, чтобы увидеть причину. Если есть кнопка View More, нажмите ее, чтобы проверить сообщения об ошибках в журналах модели и проанализировать причину ошибки.

Почему модель не запускается при использовании пользовательской версии серверной части, основанной на официальном образе vLLM с PYPI_PACKAGES_INSTALL?

При развертывании модели с использованием пользовательской версии серверной части vLLM, основанной на официальном образе vLLM, модель может не запуститься, если PYPI_PACKAGES_INSTALL используется для установки дополнительных пакетов Python.

Вы можете увидеть ошибку, похожую на:

/gpustack-command-xxxxxxxx: 40: /path/to/your_model: Permission denied

Это происходит потому, что контейнер запускается с пользовательской команды вместо точки входа изображения по умолчанию.

В Inference Backends → vLLM → Edit → Versions Config отредактируйте соответствующую версию и установите для Override Image Entrypoint значение:

vllm serve

Почему удаление модели не освобождает место на диске?

Это сделано для того, чтобы избежать повторной загрузки модели при повторном развертывании. Вам нужно очистить его в Model Files вручную.


Использование моделей

Как устранить ошибку: в одном запросе может быть предоставлено не более 1 изображения?

Это ограничение vLLM. При необходимости вы можете настроить параметр --limit-mm-per-prompt в Edit Model → Advanced → Backend Parameters. Например, --limit-mm-per-prompt={"image": 4} означает, что он поддерживает до 4 изображений на один запрос вывода, подробности см. здесь.


Управление GPUStack

Как использовать GPUStack через прокси?

Мы рекомендуем передавать стандартные переменные среды прокси-сервера при запуске GPUStack.

В следующем примере показано, как настроить GPUStack для пересылки всех запросов на целевой прокси, за исключением запросов на адреса, указанные в переменной среды NO_PROXY.

1
2
3
4
5
docker run -d --name gpustack \
    -e HTTPS_PROXY="http://proxy-server:port" \
    -e HTTP_PROXY="http://proxy-server:port" \
    -e NO_PROXY="127.0.0.1,10.0.0.0/8,192.168.0.0/16,172.16.0.0/16,localhost,cluster.local" \
    ...

Примечание

  • Замените IP-адрес/адрес прокси-сервера соответствующим образом.
  • Если ваш прокси требует аутентификации, используйте формат http://username:password@proxy-server:port. Имейте в виду, что для специальных символов в паролях может потребоваться кодирование URL.