Управление бэкендом инференса
GPUStack позволяет администраторам настраивать бэкенды инференса и версии серверной части.
Эта статья служит руководством по работе со страницей Inference Backend. Информацию о поддерживаемых встроенных бэкендах и их возможностях см. в разделе Встроенные бэкенды вывода.
Рекомендации по настройке пользовательских серверных частей и примеры пользовательских серверных частей, работа которых проверена, см. в разделе Пользовательские серверные части.
Бэкэнд-исходники
GPUStack поддерживает три типа серверных модулей вывода:
- Встроенные: предварительно настроенные серверные части, поддерживаемые GPUStack (например, vLLM, MindIE, VoxBox). Их нельзя удалить.
- Сообщество: бэкенды, доступные на торговой площадке бэкендов сообщества. Вы можете включить их по мере необходимости.
- Пользовательский: серверные части, которые вы создаете со своими собственными конфигурациями. Их можно свободно добавлять, редактировать и удалять.
Списки «Встроенные» и «Сообщество» обновляются «по беспроводной сети», без обновления GPUStack. Вы также можете указать любой список на собственный документ. См. Обновления контента OTA.
Описание параметра
| Имя параметра | Описание | Обязательно |
|---|---|---|
| Имя | Имя бэкенда инференса | Да |
| Путь проверки работоспособности | Путь проверки работоспособности, используемый для проверки работоспособности серверной части и ее ответа. По умолчанию: /v1/models (совместим с OpenAI). | Нет |
| Команда выполнения по умолчанию | Команда/аргументы запуска контейнера. Например (vLLM): vllm serve {{model_path}} --port {{port}} --served-model-name {{model_name}} --host {{worker_ip}}. Заполнители {{model_path}}, {{model_name}}, {{port}}, {{worker_ip}}, {{gpu_count}}, {{gpu_ids}} и {{VAR_NAME}} (для переменных среды) автоматически заменяются, когда развертывание запланировано для воркера; после замены заполнителя аргументы разделяются в стиле POSIX. {{gpu_count}} и {{gpu_ids}} отражают графические процессоры, назначенные одному запланированному воркеру (пользовательские серверные части не поддерживают вывод нескольких воркеров). Заключайте значения в кавычки с пробелами и избегайте операторов оболочки. | Нет |
| Точка входа по умолчанию | Переопределение точки входа в контейнер. Если установлено, оно заменяет точку входа изображения для этого бэкенда. Аргументы разделяются в стиле POSIX. | Нет |
| Переменные среды по умолчанию | Переменные среды, которые нужно установить для всех версий этого бэкенда. На него можно ссылаться в командах, используя синтаксис {{VAR_NAME}}. Переменные среды, зависящие от версии, имеют приоритет. | Нет |
| Параметры серверной части по умолчанию | Предварительно заполните раздел «Дополнительные параметры серверной части» во время развертывания; вы можете настроить их перед запуском | Нет |
| Формат флага | Управляет тем, как отображается каждая пара --key value при сборке команды запуска серверной части: Space Separated (--key value) или Equal Sign (--key=value). Оставьте пустым, чтобы отключить нормализацию (параметры сохраняются точно в том виде, в каком они были введены). Параметры с несколькими значениями всегда остаются разделенными пробелами. См. Формат флага. | Нет |
| Общие параметры серверной части | Список часто используемых параметров для этой серверной части, показанный в виде предложений во входных данных Backend Parameters во время развертывания для быстрого ввода. В отличие от Default Backend Parameters, они предлагаются только для быстрого выбора и не заполняются предварительно при открытии формы развертывания. Не влияет на поведение во время выполнения. | Нет |
| Описание | Описание | Нет |
| Конфигурации версий | Настройка доступных версий этого бэкенда | Да |
| Версия по умолчанию | Выбирается заранее во время развертывания. Если вы не выбираете версию, используется ее изображение | Нет |
Переменные среды
Вы можете определить переменные среды на двух уровнях:
- Уровень серверной части (
Default Environment Variables): применяется ко всем версиям серверной части. - Уровень версии (
Environment Variables): специфично для версии, переопределяет переменные внутреннего уровня.
На переменные среды можно ссылаться в командах, используя синтаксис {{VAR_NAME}}.
Пример:
В этом примере:
MODEL_CACHE_DIRустановлено на/cacheна внутреннем уровне- Версия
v1заменяет его на/custom-cache LOG_LEVELостаётсяinfoдля всех версий- Обе переменные упоминаются в команде с использованием синтаксиса
{{VAR_NAME}}.
Описание параметра конфигурации версии:
| Имя параметра | Описание | Обязательно |
|---|---|---|
| Версия | Имя версии отображается в раскрывающемся списке «Версия серверной части» во время развертывания | Да |
| Имя изображения | Имя образа контейнера для серверной части (например, ghcr.io/org/image:tag) | Да |
| Framework (custom_framework) | Внутренняя структура (внутренний идентификатор: custom_framework). Развертывание и планирование фильтруются по поддерживаемым платформам | Да |
| Переменные среды | Переменные среды, специфичные для этой версии. Переопределяет внутренний уровень Default Environment Variables. На него можно ссылаться в Execution Command, используя синтаксис {{VAR_NAME}}. | Нет |
| Точка входа | Переопределение точки входа контейнера для конкретной версии. Если опущено, используется Default Entrypoint. Аргументы разделяются в стиле POSIX. | Нет |
| Команда выполнения | Команда запуска для конкретной версии. Если этот параметр опущен, используется команда выполнения по умолчанию. Правила синтаксического анализа и разделения идентичны Default Execution Command. | Нет |
Формат флага
Flag Format управляет тем, как GPUStack отображает каждую пару --key value при сборке команды запуска бэкенда. Он настраивается на внутреннем уровне, применяется ко всем развертываниям модели, использующим этот серверный интерфейс, и вступает в силу, когда воркер собирает команду запуска контейнера.
Доступные значения:
Space Separated (--key value): разделены пробелом и отображаются как--key value.Equal Sign (--key=value): к ним присоединяется=, отображается как--key=value.- Пусто (по умолчанию): без нормализации; параметры сохраняются точно так, как введено в
Backend Parameters.
Используйте это поле, чтобы обеспечить согласованный стиль параметров, когда анализатор командной строки движка инференса принимает только одну из двух форм, без переписывания каждого параметра вручную.
Пример:
Если для Flag Format бэкенда установлено значение Equal Sign (--key=value), развертывание с использованием этого бэкенда со следующим Backend Parameters:
нормализуется в команде запуска как:
--tensor-parallel-size и --max-model-len преобразуются в форму со знаком равенства, а --lora-modules сохраняет форму, разделенную пробелами, поскольку она содержит несколько значений.
Примечание
- Параметры с несколькими значениями (например,
--lora-modules) всегда остаются разделенными пробелами независимо от выбранного формата. Преобразование их в форму--key=valueменяет семантику argparse, поскольку последующие значения обычно перезаписывают предыдущие. - Короткие опции, состоящие из одного тире (например,
-n,-nglи-mв llama.cpp) сохраняются дословно, а не преобразуются в формы с двойным тире, такие как--n.
Добавить пользовательский бэкенд инференса
- Нажмите кнопку «Добавить серверную часть» в правом верхнем углу.
- Вы можете добавить собственный бэкенд инференса, заполнив форму или вставив определение YAML. Значения полей см. в описании параметров выше.
- Имя серверной части нельзя изменить после создания. Имена пользовательских серверов должны заканчиваться на «-custom» (заранее заполненный в форме).
- Нажмите «Сохранить», чтобы отправить.
Есть два способа добавить собственный бэкенд инференса:
- Через форму пользовательского интерфейса: перейдите на страницу Служба модели > Серверы вывода и нажмите кнопку Добавить пользовательский бэкенд инференса.
- Через конфигурацию YAML: импортируйте файл YAML, содержащий конфигурацию серверной части.
Включить серверную часть Community Inference
По сути, это пользовательские серверные части с меткой источника «сообщество», позволяющие быстро создавать собственные серверные части без ручной настройки.
- На странице бэкенда инференса нажмите кнопку «Добавить серверную часть» в правом верхнем углу.
- Выберите опцию «Сообщество», чтобы просмотреть доступные серверные части сообщества на торговой площадке.
- Найдите серверную часть, которую вы хотите использовать, и нажмите «Включить» в меню действий карты.
- После включения серверная часть становится доступной для развертывания модели. Чтобы отключить, удалите серверную часть со страницы Inference Backend.
Редактирование бэкенда инференса или добавление пользовательской версии.
- На странице Серверная часть вывода найдите целевую серверную часть. В правом верхнем раскрывающемся меню карты выберите «Изменить».
- Измените свойства серверной части (имя не может быть изменено) или добавьте новую версию.
- Для встроенных бэкендов пользовательские версии должны заканчиваться на «-custom» (заранее заполненный в форме).
- Нажмите «Сохранить», чтобы отправить.
Пример: добавление пользовательской версии во встроенный движок инференса vLLM.
- На странице Серверная часть вывода найдите бэкенд инференса vLLM. В правом верхнем раскрывающемся меню карты выберите «Изменить».
- В разделе «Конфигурации версий» нажмите «Добавить версию».
- Заполните поля следующим образом:
- Версия:
0.19.0 - Имя изображения:
vllm/vllm-openai:v0.19.0 - Рамка:
cuda - Переопределить точку входа изображения:
vllm serve - Команда выполнения:
{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}
- Нажмите «Сохранить», чтобы отправить.
Примечание
vLLM изменила точку входа своего образа Docker с версии 0.11.1. Поэтому при добавлении пользовательской версии vLLM v0.11.1 или новее необходимо указать поля Override Image Entrypoint и Execution Command; в противном случае модель не запустится. Если вы используете более новые версии изображений gpustack/runner, вам не нужно задавать поле Execution Command.
Для бэкендов, которые предоставляют исполняемый файл через Override Image Entrypoint (например, vLLM и SGLang), Execution Command должен содержать только аргументы. Не помещайте исполняемый файл (например, vllm serve или python -m vllm ...) в Execution Command, иначе он будет добавлен после точки входа и создаст дублированный префикс, например vllm serve python -m vllm ....
Пример: добавление пользовательской версии во встроенный движок инференса SGLang.
- На странице модуля вывода найдите бэкенд инференса SGLang. В правом верхнем раскрывающемся меню карты выберите «Изменить».
- В разделе «Конфигурации версий» нажмите «Добавить версию».
- Заполните поля следующим образом:
- Версия:
0.5.10 - Имя изображения:
lmsysorg/sglang:v0.5.10 - Рамка:
cuda - Переопределить точку входа изображения:
sglang serve - Команда выполнения:
--model-path {{model_path}} --host {{worker_ip}} --port {{port}}
- Нажмите «Сохранить», чтобы отправить.
Удалить пользовательский бэкенд инференса
- На странице Inference Backend найдите целевой сервер и выберите «Удалить» в правом верхнем раскрывающемся меню карты.
- Встроенные бэкенды удалить нельзя.
- Нажмите «Удалить» в диалоговом окне подтверждения.
Список версий бэкенда инференса
На странице бэкенда инференса щелкните в любом месте карточки серверной части (кроме кнопок действий), чтобы открыть модальное окно, в котором вы можете просмотреть все встроенные и добавленные пользователем версии.
Гибкое развертывание тестирования
Используйте этот режим для быстрой проверки или настройки образа и команды запуска без редактирования определения серверной части.
- Перейдите на страницу «Развертывания», нажмите кнопку «Развернуть модель» и выберите любой источник модели.
- На вкладке «Основные» откройте раскрывающийся список «Бэкэнд» и выберите «Пользовательский» в разделе «Встроенный».
- Появятся два поля:
image_nameиrun_command. Они переопределяют серверную конфигурацию только для этого развертывания. - Просмотрите оставшиеся необходимые настройки и отправьте развертывание.
Ограничения пользовательских бэкендов инференса
Пользовательские бэкенды инференса не поддерживают распределённый инференс между несколькими воркерами.