Чтобы использовать анализ в режиме реального времени, необходимо создать расширения Индексатора видео Azure (VI) и управлять ими, поддерживающими его. Используйте следующие инструкции, чтобы создать, обновить или удалить расширение Индексатора видео для анализа в режиме реального времени.
После создания расширения с помощью сведений в этой статье подключите камеры к нему для анализа видео в режиме реального времени. Дополнительные сведения см. в разделе "Добавление или удаление камер для использования с расширением VI" для анализа в режиме реального времени.
Необходимые условия
Перед началом работы ознакомьтесь со следующими предварительными условиями, чтобы убедиться, что они выполнены.
- У вас должна быть учетная запись индексатора видео Azure AI . Дополнительные сведения см. в руководстве по созданию учетной записи индексатора видео .
- У вас должен быть запущен кластер Kubernetes (K8s), подключенный к Azure Arc. Дополнительные сведения см. в разделе "Подключение существующего кластера Kubernetes". Анализ в режиме реального времени был проверен в локальной среде Azure, но совместим с любой инфраструктурой Kubernetes, поддерживающей следующие требования.
- Класс хранилища read-write-many (RWX).
- Контроллер входящего трафика должен разрешить внешним клиентам подключаться к приложению.
- По крайней мере один узел с поддержкой GPU NVIDIA в кластере.
- К поддерживаемым дистрибутивам Kubernetes (K8s) относятся следующие требования:
- Убедитесь, что у вас имеется допустимый поток RTSP. Вам нужен URL-адрес RTSP.
- При необходимости можно развернуть расширение Azure IoT для операций в кластере Azure Arc Kubernetes. Установка расширений AIO и VI должна находиться в одном кластере.
- У вас должна быть последняя версия Azure CLI. Однако это требование можно пропустить, если вы используете облачную оболочку Azure.
- Как отмечалось ранее, идентификатор подписки Azure уже должен быть утвержден. Если ваша учетная запись еще не одобрена, вы можете зарегистрироваться в приложении для работы с индексатором видео Azure AI, поддерживаемом Arc — анализ видео в режиме реального времени.
Мы рекомендуем включить автоматическое обновление версий для расширения кластера Kubernetes с поддержкой Arc, чтобы у вас всегда были последние исправления безопасности и новые возможности. Дополнительные сведения см. в статье "Развертывание и управление расширением кластера Kubernetes с поддержкой Azure Arc".
Развертывание расширения Индексатора видео Azure AI
Выберите метод, который вы хотите использовать для создания расширения Индексатора видео Azure AI. Создайте расширение с помощью портала Azure, с помощью Azure CLI или с помощью шаблона Bicep в зависимости от предпочтений и среды.
Чтобы создать расширение Индексатора видео, которое поддерживает анализ в режиме реального времени на портале Azure, выполните следующие действия.
На портале Azure перейдите в кластер Kubernetes, подключенный к Azure Arc.
В кластере Kubernetes в разделе "Параметры" выберите "Расширения".
Выберите Добавить>Индексатор видео ИИ Azure Arc Extension.
Нажмите кнопку "Создать".
На вкладке "Базовый" укажите следующие сведения:
| Поле |
Ценность |
| Subscription |
Выберите подписку для расширения. |
| Группа ресурсов |
Выберите группу ресурсов для расширения. |
| Регион |
Выберите регион, чтобы создать расширение. |
| Подключенный кластер K8S |
Выберите кластер Kubernetes, подключенный к Azure Arc. |
| Имя расширения |
Введите имя расширения. |
| Идентификатор учетной записи индексатора видео |
Выберите учетную запись Индексатора видео Azure AI, к которому подключается расширение. |
| Конечная точка входящего трафика |
Введите конечную точку кластера( IP-адрес или DNS-имя), чтобы использовать ее в качестве конечной точки API. |
| Имя класса хранилища |
Укажите класс хранилища, поддерживаемый дистрибутивом Kubernetes. Например, используйте azurefile-cli для AKS. Дополнительные сведения см. в разделе "Классы хранилища в AKS". Сведения о других дистрибутивах см. в документации по Kubernetes. |
| Тип контента |
Выберите следующие параметры: • Прямое видео для включения анализа в режиме реального времени • Загрузка мультимедиа для загрузки файлов мультимедиа в расширение |
Нажмите кнопку Далее.
На вкладке "Обработка + ИИ" укажите следующие сведения:
| Поле |
Описание |
| Агентивные возможности |
Включает расширенные возможности исследования видео. Требуется два выделенных GPU H100. Переключение, чтобы включить или отключить. |
| Возможности суммирования |
Включает расширенные возможности сводки событий визуального зрения. Требуется выделенный GPU H100. Переключите, чтобы включить или выключить. |
| Обработка |
-
Для динамического видео требуется четыре единицы GPU: один выделенный для потоковой передачи в реальном времени, два для возможностей агента и один для возможностей сводных данных.
-
Для отправки мультимедиа требуется одна единица GPU для возможностей суммирования.
|
| Ключ толерации для GPU |
Введите ключ толерации для узлов GPU (например, nvidia.com/gpu). Требуется для рабочих нагрузок GPU. |
| Селектор узлов (необязательно) |
Если существует несколько типов узлов GPU, можно добавить селектор узлов, чтобы выбрать нужный узел. Укажите имя узла и значение для каждого из следующих (необязательно): - Потоковая трансляция видео
- Агентивные возможности
- Возможности суммирования
|
Выберите Просмотреть и создать>Создать.
Используйте следующий шаблон Bicep, чтобы создать расширение Индексатора видео, которое поддерживает анализ в режиме реального времени. Шаблон включает все необходимые параметры и конфигурации для развертывания расширения в подключенном кластере Kubernetes Azure Arc. Назовите файл vi.arcextension.template.bicep.
param accountId string = '<enter_vi_account_id>'
param videoIndexerEndpointUri string = '<enter_endpoint_uri>'
param arcConnectedClusterName string = '<enter_arc_cluster_name>'
param extensionName string = '<extension_name>'
param releaseTrain string = 'preview'
param version string = '1.2.53'
param useGpuForSummarization bool = false
param nodeSelectorForSummarization object = { }
param nodeSelectorForLiveSummarization object = { }
param deepstreamNodeSelector string = ''
param tolerationsKeyForGpu string = 'nvidia.com/gpu'
param liveSummarizationEnabled bool = true
var storageClass = '<storage_class_name>'
var baseConfigProperties = {
'videoIndexer.endpointUri': videoIndexerEndpointUri
'videoIndexer.accountId': accountId
'videoIndexer.mediaFilesEnabled': string(true)
'videoIndexer.liveStreamEnabled': string(true)
'mediaServerStreams.enabled': string(true)
'storage.storageClass': storageClass
'storage.accessMode': 'ReadWriteMany'
'ViAi.gpu.enabled': string(useGpuForSummarization)
'ViAi.gpu.tolerations.key': tolerationsKeyForGpu
'ViAi.LiveSummarization.enabled': string(liveSummarizationEnabled)
}
var summarizationNodeSelectorProps = reduce(
items(nodeSelectorForSummarization),
{},
(cur, next) => union(cur, {'ViAi.gpu.nodeSelector.${next.key}': next.value})
)
var liveSummarizationNodeSelectorProps = reduce(
items(nodeSelectorForLiveSummarization),
{},
(cur, next) => union(cur, {'ViAi.LiveSummarization.gpu.nodeSelector.${next.key}': next.value})
)
var deepstreamNodeSelectorProps = !empty(deepstreamNodeSelector) && deepstreamNodeSelector != ' ' ? {
'viai.deepstream.nodeselector': deepstreamNodeSelector
} : {}
var extensionConfigPropertiesWithSelector = union(
baseConfigProperties,
summarizationNodeSelectorProps,
liveSummarizationNodeSelectorProps,
deepstreamNodeSelectorProps
)
resource connectedCluster 'Microsoft.Kubernetes/connectedClusters@2024-01-01' existing = {
name: arcConnectedClusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2022-11-01' = {
name: extensionName
scope: connectedCluster
identity: {
type: 'SystemAssigned'
}
properties: {
extensionType: 'microsoft.videoindexer'
autoUpgradeMinorVersion: false
releaseTrain: releaseTrain
version: version
scope: {
cluster: {}
}
configurationSettings: extensionConfigPropertiesWithSelector
}
}
output result string = extension.properties.provisioningState
Изменить параметры
После сохранения файла Bicep измените следующие параметры:
|
Параметр |
Тип |
Description |
|
<Идентификатор учетной записи> |
string |
Введите идентификатор учетной записи индексатора видео |
|
<URI конечной точки> |
string |
Введите кластер Kubernetes, подключенный к URL-адресу конечной точки Azure Arc |
|
<имя кластера> |
string |
Введите имя подключенного кластера Arc |
|
<Имя расширения> |
string |
Присвойте имя созданному расширению |
Используйте следующие параметры в качестве входных данных для команды создания расширения:
|
Параметр |
Тип |
Description |
|
<группа ресурсов> |
String |
Введите имя группы ресурсов |
|
<шаблон-файл> |
String |
Введите полный путь к расположению файла шаблона на компьютере |
Создание расширения
Чтобы создать расширение VI для анализа в режиме реального времени, выполните следующую команду с параметрами:
az deployment group create -g \<resource group\> --template-file \<template file\>
Используйте Azure CLI для создания расширения Индексатора видео, поддерживающего анализ в режиме реального времени. В команду создания расширения входят следующие параметры:
|
Параметр |
Тип |
Значение по умолчанию |
Description |
|
<extension_name> |
String |
|
Имя расширения Индексатора видео |
|
<Пространство имен релиза> |
String |
default |
Пространство имен Kubernetes, в котором установлено расширение |
|
<имя кластера> |
String |
|
Имя экземпляра Azure Arc Kubernetes |
|
<группа ресурсов> |
String |
|
Имя группы ресурсов Kubernetes в Azure Arc |
|
<account_Id> (идентификатор аккаунта) |
String |
|
Идентификатор учетной записи индексатора видео |
|
<конечная точка> |
String |
|
DNS-имя индексатора видео, используемое в качестве конечной точки портала |
| ViAi.gpu.tolerations.key |
String |
|
Поддержка по умолчанию для GPU |
| videoIndexer.mediaFilesEnabled |
Boolean |
true |
Включение отправки файлов мультимедиа |
| ViAi.gpu.nodeSelector.workload |
String |
|
GPU для суммирования медиафайлов |
| videoIndexer.liveStreamEnabled |
Boolean |
false |
Включение потоковой передачи в реальном времени |
| ViAi.LiveSummarization.enabled |
Boolean |
false |
Включите динамическое резюмирование записей |
| ViAi.LiveSummarization.gpu.nodeSelector.workload |
String |
|
Селектор узлов для динамической суммирования |
Чтобы создать расширение Индексатора видео для анализа в режиме реального времени, выполните следующую команду с параметрами, как описано в предыдущей таблице.
az k8s-extension create
--name <extension_name>
--extension-type "Microsoft.videoIndexer"
--scope cluster
--release-namespace "video-indexer"
--cluster-name <cluster_name>
--resource-group <cluster_resource_group>
--cluster-type "connectedClusters"
--version "1.2.0"
--release-train "preview"
--auto-upgrade-minor-version "false"
--config "videoIndexer.accountId=<account_id>"
--config "videoIndexer.endpointUri=<endpoint>"
--config AI.nodeSelector."beta\.kubernetes\.io/os"=linux
--config "storage.storageClass=azurefile-csi"
--config "storage.accessMode=ReadWriteMany"
--config "ViAi.gpu.enabled=true"
--config "ViAi.gpu.tolerations.key=nvidia.com/gpu"
--config videoIndexer.liveStreamEnabled=true
--config videoIndexer.mediaFilesEnabled=true
--config "ViAi.LiveSummarization.enabled=true"
--config "ViAi.LiveSummarization.gpu.nodeSelector.workload=summarization"
--config "ViAi.gpu.nodeSelector.workload=summarization"
Прочие параметры
Ниже приведены некоторые другие параметры, которые можно использовать для точного контроля над созданием расширения:
| Parameter |
Default |
Описание |
| AI.nodeSelector |
- |
Метка селектора узла, на которой модули POD ИИ (речь и перевод) получают назначение resource.requests.mem |
| videoIndexer.webapi.resources.requests.cpu |
0.5 |
Запрашиваемое число ядер для модуля pod веб-API |
| videoIndexer.webapi.resources.requests.mem |
4Gi |
Емкость памяти запроса для модуля pod веб-API |
| videoIndexer.webapi.resources.limits.cpu |
1 |
Ограничение числа ядер для web API pod |
| videoIndexer.webapi.resources.limits.mem |
6Gi |
Ограничения емкости памяти для модуля pod веб-API |
| videoIndexer.webapi.resources.limits.mem |
6Gi |
Ограничения емкости памяти для модуля pod веб-API |
| storage.storageClass |
"" |
Используемый класс хранилища |
| storage.useExternalPvc |
false |
определяет, используется ли внешний ПВХ. Если значение true, PVC VideoIndexer не устанавливается |
Пример сценария развертывания
az k8s-extension create --name videoindexer \
--extension-type Microsoft.videoindexer \
.......
--config AI.nodeSelector."beta\\.kubernetes\\.io/os"=linux
--config "videoIndexer.webapi.resources.requests.mem=4Gi"\
--config "videoIndexer.webapi.resources.limits.mem=8Gi"\
--config "videoIndexer.webapi.resources.limits.cpu=1"\
--config "storage.storageClass=azurefile-csi"
Обновление расширения VI с помощью ИНТЕРФЕЙСА командной строки
Чтобы обновить расширение, добавьте любой из параметров на вкладке Create with CLI со своими новыми значениями, если вы хотите изменить их в следующем примере.
В этом примере он обновляет конечную точку расширения.
az k8s-extension update --name $extension_name --extension-type "Microsoft.videoIndexer" --scope cluster \
--release-namespace "video-indexer" \
--cluster-name $cluster_name \
--resource-group $cluster_resource_group \
--cluster-type "connectedClusters" \
--version $version \
--release-train "preview" \
--config "videoIndexer.endpointUri=$endpoint"
Удаление расширения VI с помощью CLI
Используйте следующие параметры в качестве входных данных для команды удаления расширения:
|
Параметр |
Тип |
Description |
|
<имя кластера> |
String |
Имя экземпляра Kubernetes Azure Arc |
|
<группа ресурсов> |
String |
Имя группы ресурсов Kubernetes Azure Arc |
|
<extension-name> |
String |
Введите имя расширения VI, который вы хотите удалить |
Чтобы получить имя расширения, выполните следующую команду:
az k8s-extension list --cluster-name <cluster-name>
--cluster-type connectedClusters --resource-group <resource-group> --query "[?extensionType == 'microsoft.videoindexer'] | [0]"
Выполните следующую команду, чтобы удалить расширение VI:
az k8s-extension delete --cluster-name <cluster-name> --cluster-type connectedclusters --resource-group <resource-group> --name <extension-name> --yes
Связанный контент