Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API ›API вывода

Интеграция ELSER с Inference

Справочник нового API

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

Создаёт конечную точку вывода для выполнения задачи вывода с помощью сервиса elser. Вы также можете развернуть ELSER, используя интеграцию Elasticsearch с Inference.

  • В вашем развертывании Elasticsearch есть настроенная по умолчанию конечная точка вывода ELSER, вам нужно будет создать конечную точку с помощью API только если вы хотите настроить её параметры.
  • Запрос API автоматически загрузит и развернёт модель ELSER, если она ещё не загружена.

Устарело в 8.16

Сервис elser устарел и будет удалён в будущих выпусках. Используйте интеграцию Elasticsearch с Inference вместо него, с model_id, включённым в service_settings.

Запрос

PUT /_inference/<task_type>/<inference_id>

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

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

(Обязательно, строка) Тип задачи вывода, которую будет выполнять модель.

Доступные типы задач:

  • sparse_embedding.

Тело запроса

chunking_settings

(Необязательно, объект) Объект конфигурации фрагментации. Обратитесь к Настройка фрагментации, чтобы узнать больше о фрагментации.

max_chunk_size
(Необязательно, целое число) Указывает максимальный размер фрагмента в словах. По умолчанию 250. Это значение не может быть больше 300 или меньше 20 (для стратегии sentence) или 10 (для стратегии word).
overlap
(Необязательно, целое число) Только для стратегии фрагментации word. Указывает количество перекрывающихся слов для фрагментов. По умолчанию 100. Это значение не может быть больше половины от max_chunk_size.
sentence_overlap
(Необязательно, целое число) Только для стратегии фрагментации sentence. Указывает количество перекрывающихся предложений для фрагментов. Может быть либо 1, либо 0. По умолчанию 1.
strategy
(Необязательно, строка) Указывает стратегию фрагментации. Может быть либо sentence, либо word.
service
(Обязательно, строка) Тип сервиса, поддерживаемый для указанного типа задачи. В этом случае elser.
service_settings

(Обязательно, объект) Параметры, используемые для установки модели вывода.

Эти параметры специфичны для сервиса elser.

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.
num_allocations
(Обязательно, целое число) Общее количество распределений, назначенных этой модели на узлах машинного обучения. Увеличение этого значения, как правило, увеличивает пропускную способность. Если adaptive_allocations включено, не устанавливайте это значение, так как оно устанавливается автоматически.
num_threads
(Обязательно, целое число) Устанавливает количество потоков, используемых каждым распределением модели во время вывода. Это, как правило, увеличивает скорость каждого запроса вывода. Процесс вывода является процессом ограниченным вычислениями; threads_per_allocations не должно превышать количество доступных выделенных процессоров на узел. Должно быть степенью двойки. Максимальное разрешённое значение 32.

Пример сервиса ELSER с адаптивными распределениями

При включенных адаптивных распределениях количество распределений модели автоматически устанавливается на основе текущей нагрузки.

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

В следующем примере показано, как создать конечную точку вывода с именем my-elser-model для выполнения задачи типа sparse_embedding и настроить адаптивные распределения.

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

resp = client.inference.put(
    task_type="sparse_embedding",
    inference_id="my-elser-model",
    inference_config={
        "service": "elser",
        "service_settings": {
            "adaptive_allocations": {
                "enabled": True,
                "min_number_of_allocations": 3,
                "max_number_of_allocations": 10
            },
            "num_threads": 1
        }
    },
)
print(resp)
const response = await client.inference.put({
  task_type: "sparse_embedding",
  inference_id: "my-elser-model",
  inference_config: {
    service: "elser",
    service_settings: {
      adaptive_allocations: {
        enabled: true,
        min_number_of_allocations: 3,
        max_number_of_allocations: 10,
      },
      num_threads: 1,
    },
  },
});
console.log(response);
PUT _inference/sparse_embedding/my-elser-model
{
  "service": "elser",
  "service_settings": {
    "adaptive_allocations": {
      "enabled": true,
      "min_number_of_allocations": 3,
      "max_number_of_allocations": 10
    },
    "num_threads": 1
  }
}

Пример сервиса ELSER без адаптивных распределений

В следующем примере показано, как создать конечную точку вывода с именем my-elser-model для выполнения задачи типа sparse_embedding. Дополнительную информацию см. в документации модели ELSER.

Если вы хотите оптимизировать конечную точку ELSER для приема данных, установите количество потоков на 1 ("num_threads": 1). Если вы хотите оптимизировать конечную точку ELSER для поиска, установите количество потоков на значение больше 1.

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

resp = client.inference.put(
    task_type="sparse_embedding",
    inference_id="my-elser-model",
    inference_config={
        "service": "elser",
        "service_settings": {
            "num_allocations": 1,
            "num_threads": 1
        }
    },
)
print(resp)
const response = await client.inference.put({
  task_type: "sparse_embedding",
  inference_id: "my-elser-model",
  inference_config: {
    service: "elser",
    service_settings: {
      num_allocations: 1,
      num_threads: 1,
    },
  },
});
console.log(response);
PUT _inference/sparse_embedding/my-elser-model
{
  "service": "elser",
  "service_settings": {
    "num_allocations": 1,
    "num_threads": 1
  }
}

Пример ответа:

{
  "inference_id": "my-elser-model",
  "task_type": "sparse_embedding",
  "service": "elser",
  "service_settings": {
    "num_allocations": 1,
    "num_threads": 1
  },
  "task_settings": {}
}

При использовании консоли Kibana в ответе может отображаться ошибка 502 bad gateway. Эта ошибка обычно просто отражает таймаут, в то время как модель загружается в фоновом режиме. Вы можете проверить процесс загрузки в пользовательском интерфейсе Machine Learning. Если используете Python-клиент, вы можете установить параметр timeout на более высокое значение.

© 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/infer-service-elser.html

Spec-Zone.ru

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