Управление маршрутами моделей
GPUStack позволяет управлять маршрутами моделей: задавать псевдонимы моделей, распределять трафик, обеспечивать аварийное переключение и единую точку входа для общедоступных и частных моделей.
Создать маршрут
- Перейдите на страницу
Routes. - Нажмите
Add Route. - В поле
Nameмаршрута укажите имя, под которым модель будет доступна клиентам. - Выберите один или несколько
Route Targets. - Нажмите кнопку
Save.
Управление целями маршрута
- Перейдите на страницу
Routes. - Разверните модельный маршрут, для которого вы хотите управлять целями.
- Нажмите кнопку
Deleteв столбцеOperationsдля цели, которую вы не хотите сохранять. - Нажмите кнопку
Editв столбцеOperations. На странице редактирования маршрута добавьте или удалите цели для модельного маршрута или отрегулируйте вес трафика для целей. - На странице редактирования маршрута выберите резервную цель для этого маршрута или снимите её выбор.
Балансировка нагрузки
Если у маршрута модели несколько целей, плагин балансировки нагрузки (LB) на шлюзе GPUStack выбирает цель для каждого запроса. Поведение определяется конфигурацией маршрута: веса целей и включённые плагины политик (привязка сеанса, наименьшее число обрабатываемых запросов, маршрутизация через службу принятия решений) вместе задают отображаемый режим Route By.
Способ маршрутизации
Столбец Route By показывает, как запросы распределяются между целями маршрута. GPUStack вычисляет его при каждом изменении маршрута по весам целей и включённым плагинам политик; клиент не задаёт это значение.
| Маршрут по | Форма конфигурации | Поведение маршрутизации |
|---|---|---|
Target Weight | Каждая цель имеет вес больше 0 | Разделить трафик между целями по весу; каждая цель должна иметь вес больше 0 |
Policy | Веса не заданы; включён хотя бы один плагин политики (привязка сеанса, наименьшее число обрабатываемых запросов, маршрутизация через службу принятия решений) | Цель выбирают включённые плагины политик |
| (циклически) | Ни у одной цели нет веса и ни одна политика не включена | Цели выбираются по очереди (round-robin) |
Примечания:
- Веса и политики взаимно исключаются: вес должен быть задан либо у каждой цели, либо ни у одной. При смешанной конфигурации маршрут недоступен — задайте всем целям вес больше 0 или всем вес 0.
- Резервные цели не участвуют в выборе кандидатов; при определении режима их вес игнорируется.
- Этот режим описывает форму конфигурации, а не работоспособность действующего экземпляра — полностью взвешенный маршрут остается
Target Weight, пока его экземпляры не работают.
Плагины политик
Плагины политик участвуют в маршрутизации Policy: каждый оценивает все цели, а шлюз выбирает цель с наилучшей взвешенной суммой оценок. Параметр Weight каждого плагина (положительное число, в том числе дробное) определяет его вклад в сумму. Если параметр не задан, используется встроенное значение плагина по умолчанию.
Привязка сеанса
Направляет запросы одного сеанса к одной цели, сохраняя промпты в кэше для повторного использования. Сеанс определяется упорядоченной цепочкой ключей.
Session Keys (Ordered, First Match Wins)— упорядоченная цепочка источников ключа; используется первый источник, вернувший значение. Запись может быть заголовком запросаHeader(например,session-id) или ключом телаBody Key(например,prompt_cache_key). При включённой привязке сеанса нужен хотя бы один ключ.
Наименьшее число обрабатываемых запросов
Оценивает цели по числу запросов, которые они сейчас обрабатывают, и предпочитает цель с наименьшим числом таких запросов.
Когда включены оба плагина, привязка сеанса повышает оценку закреплённой за сеансом цели, а наименьшее число обрабатываемых запросов — свободной цели. Сеанс переходит на другую цель, только если разница оценок второго плагина превышает преимущество от привязки. При весах по умолчанию это легко происходит в маршрутах с 2–3 целями и никогда — с 5 и более. Настройте Weight плагинов, чтобы изменить баланс; расчёты и примеры см. в разделе Маршрутизация с политиками LB.
Маршрутизация службы принятия решений
Оценивает цели по сложности задачи: усечённый запрос вместе с вопросом о выборе модели отправляется Jev-совместимой службе принятия решений — провайдеру TypeSafe Decision Service (Jev) на странице Model - Provider. Ответ становится взвешенной оценкой. При сбое решения, тайм-ауте или ответе вне диапазона 2xx управление без уведомления передаётся остальным плагинам.
Настройки:
Decision Service— поставщик услуг принятия решений (обязательно).Decision Model— модель принятия решений на уровне маршрута, необходимая, если эта политика включена. Опции считываются из движков, кэшированных в выбранном провайдере; если не установлено или недействительно, маршрутизация решений пропускается и запросы возвращаются к другим плагинам.Instructions— дополнительные указания по вопросу выбора модели, отправленные в службу принятия решений.Model Criteria— имя модели → описание возможностей: основа, которую служба принятия решений использует для выбора модели. Требуется хотя бы один критерий; записи могут быть созданы из целей маршрута.Weight— вес вклада в сумму при сочетании с другими политиками; если не задан, используется встроенное значение по умолчанию (10).
См. Маршрутизация с использованием политик LB, где приведен пример сквозной маршрутизации между маленькой и большой моделью.
Резервные цели (fallback_status_codes) обрабатываются отдельным плагином аварийного переключения и не участвуют в выборе кандидатов LB. Маршрут может одновременно распределять трафик между кандидатами LB и использовать резервные цели для аварийного восстановления.
Разрешить доступ к маршруту
- Перейдите на страницу
Routes. - Найдите маршрут, для которого вы хотите изменить настройку авторизации.
- Нажмите кнопку
Access Settingsв столбцеOperations. - При необходимости измените
Access Scope. - В области
Allowed Usersвыберите пользователей, которым хотите авторизовать этот маршрут, и нажмите>для подтверждения. - Нажмите кнопку
Save.
Редактировать маршрут
- Перейдите на страницу
Routes. - Найдите маршрут, который хотите изменить.
- Нажмите кнопку
Editв столбцеOperations. - При необходимости измените имя, категорию модели, описание и цели маршрута.
- Нажмите кнопку
Save.
Удалить маршрут
- Перейдите на страницу
Routes. - Найдите маршрут, который хотите удалить.
- Нажмите кнопку
Deleteв столбцеOperations. - Подтвердите удаление.