Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API обученных моделей машинного обучения

API развертывания обученной модели

Новая справка по API

Для получения самых актуальных данных по API обратитесь к API обученных моделей машинного обучения.

Запускает развертывание новой обученной модели.

Запрос

POST _ml/trained_models/<model_id>/deployment/_start

Предварительные условия

Требуется привилегия кластера manage_ml. Эта привилегия включена в встроенную роль machine_learning_admin.

Описание

В настоящее время для развертывания поддерживаются только модели pytorch. После развертывания модель может использоваться процессором вывода Inference processor в конвейере приема или непосредственно в API Infer trained model.

Модель можно развернуть несколько раз, используя идентификаторы развертывания. Идентификатор развертывания должен быть уникальным и не должен совпадать с другим идентификатором развертывания или идентификатором модели, если только это не идентификатор той модели, которая развертывается. Если deployment_id не задан, по умолчанию используется model_id.

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

Ручное масштабирование производительности вывода можно выполнить, задав параметры number_of_allocations и threads_per_allocation.

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

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

Распределения моделей распределяются по узлам машинного обучения. Все распределения, назначенные узлу, используют одну и ту же копию модели в памяти. Чтобы избежать перегрузки потоков, что негативно сказывается на производительности, распределения моделей распределяются таким образом, что общее количество используемых потоков не превышает выделенных процессоров узла.

Параметры пути

<model_id>
(Обязательно, строка) Уникальный идентификатор обученной модели.

Параметры запроса

deployment_id

(Необязательно, строка) Уникальный идентификатор развертывания модели.

По умолчанию используется model_id.

timeout
(Необязательно, время) Управляет временем ожидания развертывания модели. По умолчанию 30 секунд.
wait_for
(Необязательно, строка) Указывает статус распределения, в ожидании которого необходимо возвращаться. По умолчанию started. Значение starting указывает, что развертывание начинается, но еще не запущено ни на одном узле. Значение started указывает, что модель запущена хотя бы на одном узле. Значение fully_allocated указывает, что развертывание запущено на всех корректных узлах.

Тело запроса

adaptive_allocations

(Необязательно, объект) Объект конфигурации адаптивных распределений. Если включено, количество распределений модели устанавливается в зависимости от текущей нагрузки процесса. При высокой нагрузке автоматически создается новый ресурс выделения модели (учитывая значение max_number_of_allocations, если оно задано). При низкой нагрузке автоматически удаляется ресурс выделения модели (учитывая значение min_number_of_allocations, если оно задано). Если adaptive_allocations включено, количество распределений вручную не задавайте.

enabled
(Необязательно, Булево) Если true, то adaptive_allocations включено. По умолчанию false.
max_number_of_allocations
(Необязательно, целое число) Указывает максимальное количество распределений для масштабирования. Если задано, оно должно быть больше или равно min_number_of_allocations.
min_number_of_allocations
(Необязательно, целое число) Указывает минимальное количество распределений для масштабирования. Если задано, оно должно быть больше или равно 0. Если не определено, развертывание масштабируется до 0.
cache_size
(Необязательно, значение в байтах) Размер кэша вывода (в памяти вне кучи JVM) на узел для модели. В серверлессе кэш по умолчанию отключен. В противном случае, значение по умолчанию равно размеру модели, указанному в поле model_size_bytes в API Get trained models statistics API. Для отключения кэша можно указать 0b.
number_of_allocations
(Необязательно, целое число) Общее количество распределений, назначенных этой модели по узлам машинного обучения. Увеличение этого значения, как правило, увеличивает пропускную способность. По умолчанию 1. Если adaptive_allocations включено, не устанавливайте это значение, так как оно устанавливается автоматически.
priority

(Необязательно, строка) Приоритет развертывания. Значение по умолчанию - normal. Существует две настройки приоритета:

  • normal: Используйте для развертываний в рабочей среде. Распределения развертывания распределяются таким образом, чтобы процессоры узлов не были перегружены.
  • low: Используйте для тестирования функциональности модели. Предполагается, что этим развертываниям не будет отправлено большое количество входных данных. Развертывание должно иметь одно распределение с одним потоком. Развертывания с низким приоритетом могут быть назначены на узлах, которые уже используют все свои процессоры, но им будет присвоен более низкий приоритет ЦП, чем обычным развертываниям. Развертывания с низким приоритетом могут быть удалены для удовлетворения большего количества распределений развертываний с обычным приоритетом.

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

queue_capacity
(Необязательно, целое число) Управляет тем, сколько запросов вывода разрешено в очереди одновременно. Каждый узел машинного обучения в кластере, где может быть выделена модель, имеет очередь такого размера; когда количество запросов превышает общее значение, новые запросы отклоняются с ошибкой 429. По умолчанию 10000. Максимально допустимое значение 100000.
threads_per_allocation
(Необязательно, целое число) Устанавливает количество потоков, используемых каждым распределением модели во время вывода. Это, как правило, увеличивает скорость каждого запроса вывода. Процесс вывода - это процесс, ограниченный вычислениями; threads_per_allocations не должен превышать количество доступных выделенных процессоров на узел. По умолчанию 1. Должно быть степенью двойки. Максимально допустимое значение 32.

Примеры

В следующем примере запускается новое развертывание для обученной модели elastic__distilbert-base-uncased-finetuned-conll03-english:

resp = client.ml.start_trained_model_deployment(
    model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
    wait_for="started",
    timeout="1m",
)
print(resp)
const response = await client.ml.startTrainedModelDeployment({
  model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
  wait_for: "started",
  timeout: "1m",
});
console.log(response);
POST _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_start?wait_for=started&timeout=1m

API возвращает следующие результаты:

{
    "assignment": {
        "task_parameters": {
            "model_id": "elastic__distilbert-base-uncased-finetuned-conll03-english",
            "model_bytes": 265632637,
            "threads_per_allocation" : 1,
            "number_of_allocations" : 1,
            "queue_capacity" : 10000,
            "priority": "normal"
        },
        "routing_table": {
            "uckeG3R8TLe2MMNBQ6AGrw": {
                "routing_state": "started",
                "reason": ""
            }
        },
        "assignment_state": "started",
        "start_time": "2022-11-02T11:50:34.766591Z"
    }
}

Использование идентификаторов развертывания

В следующем примере запускается новое развертывание для обученной модели my_model с идентификатором my_model_for_ingest. Идентификатор развертывания может использоваться в вызовах API вывода или в процессорах вывода.

resp = client.ml.start_trained_model_deployment(
    model_id="my_model",
    deployment_id="my_model_for_ingest",
)
print(resp)
const response = await client.ml.startTrainedModelDeployment({
  model_id: "my_model",
  deployment_id: "my_model_for_ingest",
});
console.log(response);
POST _ml/trained_models/my_model/deployment/_start?deployment_id=my_model_for_ingest

Обученная модель my_model может быть развернута снова с другим идентификатором:

resp = client.ml.start_trained_model_deployment(
    model_id="my_model",
    deployment_id="my_model_for_search",
)
print(resp)
const response = await client.ml.startTrainedModelDeployment({
  model_id: "my_model",
  deployment_id: "my_model_for_search",
});
console.log(response);
POST _ml/trained_models/my_model/deployment/_start?deployment_id=my_model_for_search

Настройка адаптивных распределений

В следующем примере запускается новое развертывание обученной модели my_model с идентификатором my_model_for_search и включаются адаптивные распределения с минимальным количеством 3 распределений и максимальным 10.

resp = client.ml.start_trained_model_deployment(
    model_id="my_model",
    deployment_id="my_model_for_search",
    adaptive_allocations={
        "enabled": True,
        "min_number_of_allocations": 3,
        "max_number_of_allocations": 10
    },
)
print(resp)
const response = await client.ml.startTrainedModelDeployment({
  model_id: "my_model",
  deployment_id: "my_model_for_search",
});
console.log(response);
POST _ml/trained_models/my_model/deployment/_start?deployment_id=my_model_for_search
{
  "adaptive_allocations": {
    "enabled": true,
    "min_number_of_allocations": 3,
    "max_number_of_allocations": 10
  }
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/start-trained-model-deployment.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API