Снижение задержки и повышение производительности

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

Уменьшение задержки

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

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

В этом разделе описывается, как устранить различные причины задержки, относящиеся к службе распознавания лиц Azure AI.

Примечание.

Службы ИИ Azure не предоставляют соглашение об уровне обслуживания (SLA) относительно задержки.

Выберите подходящий регион для ресурса Face

Задержка сети, время, необходимое для передачи информации из источника (приложения) в место назначения (ресурс Azure), сильно влияет на географическое расстояние между приложением, выполняющим запросы, и серверОм Azure, отвечающим на эти запросы. Например, если ресурс Face находится в EastUS, он имеет более быстрое время отклика для пользователей в Нью-йорке, а пользователи в Азии испытывают большую задержку.

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

Использование хранилища BLOB-объектов Azure для удаленный URL-адрес

Служба распознавания лиц предоставляет два способа отправки изображений для обработки: отправки необработанных байтовых данных изображения непосредственно в запросе или предоставления URL-адреса удаленному изображению. Независимо от метода служба распознавания лиц должна скачать изображение из исходного расположения. Если подключение от службы распознавания лиц к клиенту или удаленному серверу медленно или плохо, оно влияет на время отклика запросов. Если у вас возникла проблема с задержкой, попробуйте сохранить изображение в Хранилище BLOB-объектов Azure и передать URL-адрес изображения в запросе. Дополнительные сведения о реализации см. в служба хранилища хранения образа в большом двоичном объекте Azure Premium. Пример вызова API:

var faces = await client.Face.DetectWithUrlAsync("https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name>");

Не забудьте использовать учетную запись хранения в том же регионе, что и ресурс Face. Это снижает задержку подключения между службой распознавания лиц и учетной записью хранения.

Использование оптимальных размеров файлов

Если используемые файлы изображений являются большими, это влияет на время отклика службы распознавания лиц двумя способами:

  • Для отправки файла требуется больше времени.
  • Служба занимает больше времени для обработки файла в пропорции к размеру файла.

Компромисс между точностью и скоростью сети

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

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

Другие советы по размеру файла

Обратите внимание на следующие дополнительные советы.

  • При обнаружении лиц при использовании модели DetectionModel.Detection01обнаружения уменьшение размера файла изображения увеличивает скорость обработки. При использовании модели DetectionModel.Detection02обнаружения уменьшение размера файла изображения увеличит скорость обработки, если размер файла изображения меньше 1920x1080 пикселей.
  • Для распознавания лиц уменьшение размера лица увеличит скорость только в том случае, если изображение меньше 200x200 пикселей.
  • Производительность методов обнаружения лиц также зависит от того, сколько лиц находятся на изображении. Служба распознавания лиц может возвращать до 100 лиц для одного изображения. Лица ранжируются по размеру прямоугольника от больших к маленьким.

Параллельное вызов API

Если необходимо вызвать несколько API, рассмотрите возможность параллельного вызова, если проект приложения позволяет ему. Например, если вам нужно обнаружить лица на двух изображениях для сравнения лиц, их можно вызвать в асинхронной задаче:

var faces_1 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1MzAyNzYzOTgxNTE0NTEz/john-f-kennedy---mini-biography.jpg");
var faces_2 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1NDY3OTIxMzExNzM3NjE3/john-f-kennedy---debating-richard-nixon.jpg");

Task.WaitAll (new Task<IList<DetectedFace>>[] { faces_1, faces_2 });
IEnumerable<DetectedFace> results = faces_1.Result.Concat (faces_2.Result);

Сгладить сплой трафик

Производительность службы распознавания лиц может повлиять на пики трафика, что может привести к регулированию, снижению пропускной способности и более высокой задержке. Мы рекомендуем постепенно увеличить частоту вызовов API и избежать немедленных повторных попыток. Например, если у вас есть 3000 фотографий для обнаружения лиц, не отправляйте 3000 запросов одновременно. Вместо этого отправьте 3000 запросов последовательно в течение 5 минут (т. е. около 10 запросов в секунду), чтобы сделать сетевой трафик более согласованным. Если вы хотите уменьшить время завершения, увеличьте количество вызовов в секунду постепенно, чтобы сгладить трафик. Если возникает какая-либо ошибка, обратитесь к разделу "Обработка ошибок", чтобы эффективно обрабатывать ответ.

Эффективная обработка ошибок

Ошибки и 503 могут возникать в вызовах 429 API распознавания лиц по различным причинам. Приложение всегда должно быть готово к обработке этих ошибок. Вот несколько рекомендаций.

Код ошибки HTTP Description Рекомендация
429 Регулирование Вы можете столкнуться с ограничением скорости одновременных вызовов. Следует уменьшить частоту вызовов и повторных попыток с экспоненциальным обратным выходом. Избегайте немедленных повторных попыток и избегайте повторной отправки многочисленных запросов одновременно.

Если вы хотите увеличить ограничение, ознакомьтесь с разделом "Запрос на увеличение " руководства по квотам.
503 Служба недоступна Служба может быть занята и не сможет немедленно отвечать на запрос. Вы должны принять стратегию обратного отключения, аналогичную одной из них для ошибки 429.

Обеспечение надежности и поддержки

Ниже приведены другие советы по обеспечению надежности и высокой поддержки приложения.

  • Создайте уникальный GUID в качестве заголовка HTTP-запроса и отправьте его с каждым запросом client-request-id . Это помогает корпорации Майкрософт более легко исследовать любые ошибки, если вам нужно сообщить о проблеме с корпорацией Майкрософт.
    • Всегда записывайте и ответ, client-request-id полученный при обнаружении неожиданного ответа. Если вам нужна помощь, укажите эти сведения для служба поддержки Майкрософт вместе с идентификатором ресурса Azure и периодом времени, когда возникла проблема.
  • Провести пилотный тест перед выпуском приложения в рабочую среду. Убедитесь, что приложение может правильно и эффективно обрабатывать ошибки.

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

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