Бөлісу құралы:


Эффективное горизонтальное увеличение масштаба пользовательского навыка

Пользовательские навыки — это веб-API, реализующие конкретный интерфейс. Пользовательский навык можно реализовать на любом доступном для адресации ресурсе. Ниже приведены наиболее распространенные реализации пользовательских навыков:

  • Функции Azure для пользовательских навыков логики;
  • Веб-приложения Azure для простых контейнерных навыков искусственного интеллекта
  • служба Kubernetes Azure для более сложных и крупных навыков.

Конфигурация набора навыков

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

  1. Задайте параметр batchSize пользовательского навыка, чтобы настроить количество записей, отправляемых в навык при одном вызове навыка.

  2. degreeOfParallelism Задайте для калибровки количество одновременных запросов индексатора, выполняющего навык.

  3. Задайте значение для параметра timeout, достаточное для предоставления правильного ответа.

  4. В определении indexer задайте параметр batchSize для количества документов, которые должны считываться из источника данных и обогащаться параллельно.

Рекомендации

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

  • Вызов навыка карта inality: убедитесь, что пользовательский навык выполняется один раз для каждого документа (/document/content) или несколько раз за документ (/document/reviews_text/pages/*). Если это несколько раз на документ, оставайтесь на нижней стороне batchSize и degreeOfParallelism уменьшайте количество операций и попробуйте задать размер пакета индексатора для добавочного увеличения значений для большего масштаба.

  • Координирует пользовательские навыки batchSize и индексатор batchSize, и убедитесь, что вы не создаете узкие места. Например, если размер пакета индексатора равен 5, а размер пакета навыка равен 50, для заполнения пользовательского запроса навыка потребуется 10 пакетов индексатора. В идеале размер пакета навыка должен быть меньше или равен размеру пакета индексатора.

  • Для degreeOfParallelismэтого используйте среднее количество запросов пакет индексатора, чтобы управлять решением о том, как задать это значение. Если инфраструктура, на котором размещен навык, например функция Azure, не поддерживает высокий уровень параллелизма, рассмотрите возможность набора уровней параллелизма. Вы можете протестировать конфигурацию с помощью нескольких документов, чтобы проверить среднее количество запросов.

  • Хотя объект масштабируется и поддерживает большие объемы, тестирование с меньшим примером документов помогает квалифицировать различные этапы выполнения. Например, можно оценить время выполнения навыка относительно общего времени, затраченного на обработку подмножества документов. Это поможет вам ответить на вопрос: тратит ли индексатор больше времени на создание пакета или ожидание ответа от вашего навыка?

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

Обработка ошибок в пользовательском навыке

Пользовательские навыки должны возвращать код состояния успеха (HTTP 200) после успешного выполнения навыка. Если одна или несколько записей в пакете выводят ошибки, попробуйте вернуть код для нескольких состояний (207). Список ошибок или предупреждений для записи должен содержать соответствующее сообщение.

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

Любой код состояния выше 299 оценивается как ошибка, в результате не выполняются все обогащения в документе с ошибкой.

Распространенные сообщения об ошибках

  • Could not execute skill because it did not execute within the time limit '00:00:30'. This is likely transient. Please try again later. For custom skills, consider increasing the 'timeout' parameter on your skill in the skillset. — задайте параметр времени ожидания для навыка, чтобы обеспечить более длительное выполнение.

  • Could not execute skill because Web Api skill response is invalid. — указывает, что навык не возвращает сообщение в формате ответа пользовательского навыка. Это может быть результатом неперехваченного исключения в навыке.

  • Could not execute skill because the Web Api request failed. — вероятнее всего, это вызвано ошибками авторизации или исключениями.

  • Could not execute skill. — обычно результат отклика о навыках сопоставляется с существующим свойством в иерархии документа.

Тестирование пользовательских навыков

Начните с проверки пользовательского навыка с помощью клиента REST API, чтобы убедиться в следующем:

  • навык реализует интерфейс пользовательских навыков для запросов и ответов;

  • навык возвращает допустимый формат JSON с типом MIME application/JSON;

  • возвращается допустимый код состояния HTTP.

Создайте сеанс отладки, чтобы добавить навык в набор, и убедитесь, что он создает допустимое обогащение. Хотя сеанс отладки не позволяет настроить производительность навыка, он позволяет убедиться, что навык настроен с допустимыми значениями и возвращает ожидаемые обогащенные объекты.

Рекомендации

  • Хотя навыки могут принимать и возвращать полезные данные большого размера, рекомендуется ограничить размер ответа до 150 МБ или меньше при возврате JSON.

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

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

  • Оптимизируйте размер пакета индексатора, размер пакета навыков и степень параллелизма, чтобы создать шаблон нагрузки, который нужен для навыка (меньше больших запросов или больше маленьких).

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