Масштабирование заданий Stream Analytics с помощью функций Студии машинного обучения (классической)

Совет

Для повышения производительности и надежности настоятельно рекомендуется вместо UDF Студии машинного обучения (классической) использовать UDF Машинного обучения Azure.

Внимание

Поддержка Машинное обучение Azure Studio (классическая) завершится 31 августа 2024 г. Мы рекомендуем перейти на Машинное обучение Azure по этой дате.

По состоянию на 1 декабря 2021 г. нельзя создавать новые ресурсы Машинное обучение Studio (классический) (рабочая область и план веб-службы). До 31 августа 2024 г. вы можете продолжать использовать существующие эксперименты Машинное обучение Studio (классические) и веб-службы. Дополнительные сведения см. в разделе:

Машинное обучение Studio (классическая) документация не обновляется и может не обновляться в будущем.

В этой статье описывается эффективное масштабирование заданий Azure Stream Analytics, в которых используются функции Студии машинного обучения (классической). Общие сведения о масштабировании заданий Stream Analytics см. в статье Масштабирование заданий.

Что такое функция Студии в Stream Analytics?

Функция Студии машинного обучения в Stream Analytics может использоваться как обычный вызов функции в языке запросов Stream Analytics. Однако на самом же деле вызовы функций являются запросами веб-службы Студии.

Пропускную способность запросов веб-службы Студии можно повысить, выполнив пакетную обработку сразу нескольких строк в одном вызове API веб-службы. Такая группировка называется мини-пакетом. Дополнительные сведения см. в разделе Веб-службы Студии машинного обучения (классической). Поддержка Студии в Stream Analytics.

Настройка задания Stream Analytics с помощью функций Студии

Существует два параметра для настройки функции Студии, используемой в вашем задании Stream Analytics:

  • Размер пакета вызовов функций Студии.
  • Количество единиц потоковой передачи (SU), подготовленных для задания Stream Analytics.

Чтобы определить необходимое количество SU, решите, что вы хотите оптимизировать — задержку задания Stream Analytics или пропускную способность каждой SU. К заданию всегда можно добавить SU для увеличения пропускной способности оптимально секционированного запроса Stream Analytics. Дополнительные SU увеличивают стоимость выполнения задания.

Определите предельную задержку для задания Stream Analytics. С увеличением размера пакета увеличивается задержка запросов Студии и задержка задания Stream Analytics.

Увеличение размера пакета позволяет заданиям Stream Analytics обрабатывать больше событий с тем же количеством запросов веб-службы Студии. Увеличение задержки веб-службы Студии обычно следует за увеличением размера пакета.

В любой ситуации необходимо учитывать наиболее экономичный размер пакета для веб-службы Студии. Размер пакета для запросов веб-служб по умолчанию — 1000. Размер по умолчанию можно изменить с помощью REST API Stream Analytics или клиента PowerShell для Stream Analytics.

Определившись с размером пакета, вы сможете указать количество единиц потоковой передачи (SU) в зависимости от количества событий, которые функция должна обрабатывать в секунду. Дополнительные сведения о единицах потоковой передачи см. в статье Масштабирование заданий Azure Stream Analytics для повышения пропускной способности базы данных.

Каждые 6 SU получают 20 одновременных подключений к веб-службе Студии. При этом одно задание SU и 3 задания SU получают по 20 одновременных подключений.

Если приложение создает 200 000 событий в секунду, а размер пакета — 1000, то задержка веб-службы составляет 200 мс. Это означает, что каждое подключение может отправлять в веб-службу Студии пять запросов в секунду. С 20 соединениями задание Stream Analytics может обрабатывать 20 000 событий за 200 мс и 100 000 событий в секунду.

Чтобы обрабатывать 200 000 событий в секунду, заданию Stream Analytics требуется 40 одновременных подключений, что соответствует 12 SU. На следующей схеме показан запрос из задания Stream Analytics к конечной точке веб-службы машинного обучения. На каждые 6 SU приходится не более 20 одновременных подключений к веб-службе Студии.

Scale Stream Analytics with Studio (classic) Functions two job example

В общем случае, если B — размер пакета, а L — задержка веб-службы при размере пакета B в миллисекундах, то пропускная способность задания Stream Analytics с N SU будет составлять:

Scale Stream Analytics with Studio (classic) Functions Formula

Вы также можете настроить параметр "Макс. количество одновременных вызовов" в веб-службе Студии. Рекомендуется использовать для этого параметра максимальное значение (сейчас это 200).

Дополнительные сведения об этом параметре см. в статье Масштабирование веб-службы Студии машинного обучения.

Пример: анализ мнений

В следующем примере показано задание Stream Analytics с функцией Студии для анализа мнений, как описано в руководстве Учебник по интеграции Stream Analytics и Студии машинного обучения.

Запрос представляет собой простой полностью секционированный запрос, за которым следует функция sentiment, как показано в следующем примере:

    WITH subquery AS (
        SELECT text, sentiment(text) as result from input
    )

    Select text, result.[Score]
    Into output
    From subquery

Рассмотрим конфигурацию, необходимую, чтобы создать задание Stream Analytics, выполняющее анализ тональности твитов со скоростью 10 000 твитов в секунду.

Достаточно ли 1 SU, чтобы это задание Stream Analytics могло обработать такой объем трафика? Задание должно справиться с входными данными, если использовать размер пакета по умолчанию (1000). Задержка веб-службы Студии, выполняющей анализ тональности, по умолчанию (размер пакета по умолчанию 1000) вызывает задержку не больше одной секунды.

Общая (сквозная) задержка задания Stream Analytics обычно составляет несколько секунд. Изучите это задание Stream Analytics более подробно, особенно вызовы функций Студии. При размере пакета 1000 и пропускной способности 10 000 событий количество запросов к веб-службе составляет примерно 10. Даже при одной единице хранения количество одновременных подключений будет достаточным для обработки этого входящего трафика.

Но что делать, если частота входящих событий увеличится в 100 раз, а задание Stream Analytics должно обрабатывать 1 000 000 твитов в секунду? Выполнить увеличения масштаба можно двумя способами.

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

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

Для второго варианта нужно будет подготовить дополнительные SU, чтобы увеличить число параллельных запросов к веб-службе Студии. Увеличение числа SU приведет к повышению стоимости задания.

Рассмотрим масштабирование, используя для каждого размера пакета следующие значения задержки:

Задержка Размер пакета
200 мс Пакеты по 1000 или меньше событий
250 мс Пакеты по 5000 событий
300 мс Пакеты по 10 000 событий
500 мс Пакеты по 25 000 событий
  1. Использование первого варианта (без подготовки дополнительных единиц SU). Размер пакета можно увеличить до 25 000. Такое увеличение размера пакета позволит заданию обрабатывать 1 000 000 событий при 20 одновременных подключениях к веб-службе Студии (с задержкой 500 мс на один вызов). Поэтому дополнительная задержка задания Stream Analytics (из-за того, что функция анализа мнений выполняет запросы к веб-службе Студии) увеличится с 200 до 500 мс. Однако размер пакета не может увеличиваться бесконечно: в веб-службах Студии допускается размер полезных данных запроса не более 4 МБ, так как веб-службе запросов требуется время ожидания после 100 секунд работы.
  2. Если используется второй вариант, то размер пакета остается неизменным (1000) и при задержке веб-службы в 200 мс каждые 20 одновременных подключений к веб-службе смогут обрабатывать 1000 * 20 * 5 событий, то есть 100 000 событий в секунду. Таким образом, для обработки 1 000 000 событий в секунду заданию потребуется 60 SU. По сравнению с первым вариантом задание Stream Analytics будет создавать больше пакетных запросов к веб-службе, что приведет к увеличению затрат.

Ниже приведена таблица пропускной способности (количества событий в секунду) задания Stream Analytics для разного количества SU и размеров пакета.

Размер пакета (задержка службы машинного обучения) 500 (200 мс) 1000 (200 мс) 5000 (250 мс) 10 000 (300 мс) 25 000 (500 мс)
1 единица хранения 2500 5,000 20,000 30,000 50,000
3 единицы хранения 2500 5,000 20,000 30,000 50,000
6 единиц хранения 2500 5,000 20,000 30,000 50,000
12 единиц хранения 5 000 10 000 40 000 60 000 100,000
18 единиц хранения 7500 15 000 60 000 90 000 150 000
24 единицы хранения 10,000 20,000 80 000 120 000 200 000
... ... ... ... ... ...
60 единиц хранения 25,000 50,000 200 000 300 000 500,000

Теперь у вас есть четкое представление о том, как работают функции Студии в Stream Analytics. Скорее всего, вы также знаете, что задания Stream Analytics извлекают данные из источников данных и каждая операция извлечения возвращает пакет событий, которые обрабатывает задание Stream Analytics. Каким образом эта модель извлечения данных влияет на запросы к веб-службе Студии?

Как правило, размер пакета, заданный для функций Студии, не делится точно на количество событий, возвращаемых каждой операцией извлечения, которую выполняет задание Stream Analytics. Когда это происходит, веб-служба Студии вызывается с помощью "частичных" пакетов. Применение частичных пакетов позволяет избежать дополнительных затрат на задержку задания при объединении событий из разных операций извлечения.

В области мониторинга задания Stream Analytics добавлены три дополнительные метрики, связанные с функциями. Это Запросы функций, События функций и Запросы функций со сбоем, как показано на следующем рисунке.

Scale Stream Analytics with Studio (classic) Functions Metrics

Для определения используется такой код:

Запросы функций— количество запросов функций.

События функций— количество событий в запросах функций.

Запросы функций со сбоем— количество запросов функций, завершившихся сбоем.

Общие выводы

Чтобы масштабировать задание Stream Analytics с помощью функций Студии, учтите следующие факторы:

  1. Частота входящих событий.
  2. Допустимая задержка для выполняющегося задания Stream Analytics (и, соответственно, размер пакета для запросов веб-службы Студии).
  3. Количество подготовленных единиц SU Stream Analytics и количество запросов веб-службы Студии (дополнительные расходы, связанные с использованием функций).

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

Следующие шаги

Дополнительные сведения о службе Stream Analytics см. в следующих статьях: