v.5.157.0#
Изменения
-
SDK обновлен до версии
5.36.1.В данной версии были обновлены:
- эстиматор
DeepFakeдо версии11; - эстиматор
OneShotLivenessдо версии14.
- эстиматор
-
Внутренняя библиотека лицензирования обновлена до версии
1.14.0. -
Обновлена версия InfluxDB — базы данных, используемой по умолчанию для мониторинга работы LP, с 2.0.8 до 2.9.1.
-
Логин учетной записи администратора по умолчанию изменен на нейтральный
root@example.com(вместоroot@visionlabs.ai).Новый логин используется только при установке LP с нуля. При обновлении системы логин администратора остаётся прежним.
Подробнее см. в разделе "Аккаунты, токены и способы авторизации".
-
Расширены возможности фильтрации для поля
metaв событиях (events) и поляeventв обобщенных событиях (general events).Добавлен новый тип данных
json— позволяет передавать JSON-объекты и массивы в качестве значений для фильтрации. Значения должны быть URL-encoded JSON-строками.Для работы с типом данных
jsonдобавлены новые операторы:contains— проверяет, что все элементы переданного массива содержатся в массиве события;ncontains— отрицаниеcontains;overlaps— проверяет, что хотя бы один элемент из массива присутствует в массиве события;noverlaps— отрицаниеoverlaps.
Пример:
GET /events?meta.tags__contains:json=%5B%22urgent%22%5D, где%5B%22urgent%22%5D— это URL-encoded строка для массива["urgent"](поиск событий с тегом "urgent").Существующие операторы eq, neq, in, nin теперь также поддерживают тип
json, что позволяет точно сопоставлять JSON-объекты и массивы и проверять наличие элементов.Примечание. Для ускорения запросов с использованием новых операторов рекомендуется использовать GIN-индексы. Подробнее см. в разделе "User defined data (meta)" документации разработчика.
-
Добавлена поддержка работы с полем
source_groupдля событий (events).Ранее это поле было доступно только для обобщенных событий (
general events).Теперь группа источника событий поддерживается при создании, фильтрации, получении событий, выполнении длительных задач, подписке через WebSocket и в операциях сравнения.
См. раздел "Работа с группами источников событий".
-
В структуру потока добавлена поддержка поля
event_metaдля хранения пользовательских данных.Теперь при создании или обновлении потока (а также групп потоков) можно указать произвольные JSON-данные в поле
event_metaвнутри блокаanalytics. Эти данные будут добавлены в каждое событие, которое генерирует аналитика, или переопределят существующие поля события при совпадении имён.Важные ограничения:
- поля
event_id,stream_id,track_idзапрещены для переопределения; - поля с массивами значений заменяются полностью (без объединения элементов);
- если в
event_metaи в событии есть поле с одинаковым именем, приоритет у значения изevent_meta.
См. описание
analytics.event_metaв запросах: create stream, create group, put stream и get streams. - поля
-
В сервисе Python Matcher ускорено сравнение по небольшим спискам лиц.
В группу параметров DESCRIPTORS_CACHE (секция
cached_data > faces_lists) добавлен параметрlarge_list_batch_threshold. Он определяет порог для группировки запросов на сравнение в один вызов плагина Cached Matcher. Если запрос содержит список, количество лиц в котором превышает этот порог, применяется пакетная обработка. -
В сервис Lambda добавлена возможность ограничения ресурсов лямбд.
В конфигурацию сервиса добавлена новая группа параметров LAMBDA_RESOURCE_LIMITS, которая позволяет задать ограничения на ресурсы для каждого пространства имен (namespace) Kubernetes:
cpu_limit— максимальное количество CPU на lambda (в единицах, где 1 = 1/1000 ядра процессора);ram_limit— максимальный объём использования RAM на lambda (в ГБ);gpu_availability— доступность GPU;labels— пользовательские метки.
При создании, обновлении и импорте lambda теперь можно использовать параметр
deploy_parameters > check_resources. Если он включён (значениеtrue), перед созданием lambda выполняется проверка запрошенных ресурсов на соответствие ограничениям изLAMBDA_RESOURCE_LIMITS. При превышении лимитов возвращается ошибка с кодом42022.Это позволяет предотвратить неограниченное потребление ресурсов из-за некорректных настроек lambda и не тратить время на сборку lambda, которая всё равно не сможет развернуться из-за конфликта с лимитами Kubernetes.
Проверить заданные ограничения ресурсов можно с помощью запроса lambda resource limits.
Важно! Ограничения на уровне Kubernetes могут быть строже, чем заданные в
LAMBDA_RESOURCE_LIMITS, что может привести к невозможности запуска lambda.См. подробную информацию в разделе Ограничение ресурсов lambda.
-
В сервис Lambda добавлен клиент "Lambdas internal api client", позволяющий лямбдам взаимодействовать друг с другом.
Теперь из одной lambda можно отправить запрос к другой lambda, указав её идентификатор (
lambda_id) или имя (lambda_name).В документацию разработчика добавлены "примеры для Standalone-lambda":
- взаимодействие двух lambda с обращением по ID и по имени;
- взаимодействие с использованием
user_configдля передачи идентификатора другой lambda.
Подробнее см. в разделе "Luna client services".
-
Добавлена возможность работы
Agent-lambdaв автономном режиме (Autonomous Mode) — управление потоками напрямую, без сервиса Video Manager.Ограничения: в автономном режиме недоступны некоторые функции (разделяемые потоки, шаблоны расписаний, распределение потоков между агентами, группировка потоков, автоматический перезапуск). Кроме того, все потоки, логи и данные теряются при перезапуске агента.
Подробнее см. раздел Автономный режим работы сервиса Video Agent.
-
В руководство разработчика сервиса Lambda добавлен новый раздел Lambda reference table, содержащий справочную информацию по всем функциям, классам и константам для разработки лямбд.
-
В руководство разработчика сервиса Lambda добавлен пример Standalone-lambda обработки запроса с типом содержимого
multipart/form-data.Пример демонстрирует, как обрабатывать такой запрос, в котором передаются данные в формате JSON и два файла изображений.
См. подробную информацию в разделе Standalone-lambda.
-
Теперь при регистрации пользовательского сервиса через запрос
create serviceсервиса Admin можно настроить проверку его работоспособности, указав следующие параметры:healthcheck— включить или отключить проверку;route— путь к эндпоинту для проверки (по умолчанию /healthcheck);interval— интервал между проверками в секундах (по умолчанию 10);timeout— таймаут запроса проверки в секундах (по умолчанию 3).
Это позволяет балансировщику нагрузки Traefik отслеживать состояние сервисов и направлять пользовательские запросы только на работающие экземпляры, исключая ошибки из-за недоступности отдельных адресов.
Помимо этого, с помощью запросов
get serviceилиget servicesможно отследить состояние каждого адреса сервиса (полеhealthсо значениями up, down, unavailable, disabled).Также в сервисы API и Serving добавлены настройки
BALANCER_API_ADDRESSиBALANCER_API_TIMEOUTS, которые определяют параметры подключения к API балансировщика Traefik. -
В механизм сборки Docker-образов лямбд сервисом Builder добавлена задержка перед удалением подов сборщиком мусора.
Это предотвращает ситуации, когда сборки со статусом
Pendingили со статусом, отличным отRunning, удалялись до того, как их статус будет считан.
Исправленные ошибки
-
Исправлена ошибка в сервисе Events при пакетном создании обобщенных событий.
Ранее при передаче в одном запросе нескольких событий с разными идентификаторами аккаунта все события сохранялись в БД с
account_idот первого события в списке. Теперь каждому событию присваивается его собственныйaccount_id.См. запрос create new general events.
-
Исправлена ошибка, из-за которой параметры с пустыми значениями не отображались в ответе на запрос "get service configuration".
Теперь такие параметры отображаются с пустым массивом, что позволяет явно видеть их текущее состояние.
-
Исправлена ошибка агрегации данных для мониторинга Clickhouse.
Ранее средние значения и показатели по медленным запросам могли быть неточными — расчёт выполнялся по данным из одного случайного интервала вместо усреднения по всем.
-
Исправлена некорректная обработка ошибок переполнения хранилища MinIO при создании лямбды в процессе загрузки архива.
Ранее при переполнении хранилища пользователь получал неинформативную ошибку с кодом 11009. Теперь возвращается ошибка с кодом 42023, что позволяет диагностировать проблему как связанную с загрузкой архива, в том числе с переполнением хранилища.
-
Исправлена ошибка, из-за которой в контейнере lambda типа Agent не запускался медиасервер MediaMTX, что делало невозможным использование механизма ретрансляции потоков ("Retransmission fallback").
Примечание. Для корректной работы механизма в Agent-lambda необходимо настроить следующие параметры ядра на уровне узлов Kubernetes:
fs.inotify.max_user_instances- 1280fs.inotify.max_user_watches- 655360
Важно! Меньшие значения недостаточны для стабильной работы механизма.
-
Исправлена ошибка, из-за которой при обновлении базового образа lambda через запрос update lambda имя lambda некорректно заменялось на её идентификатор
lambda_id.Теперь имя lambda остаётся корректным.