Instalación y ejecución del contenedor de análisis espacial (versión preliminar)

El contenedor de análisis espacial permite analizar vídeo en streaming en tiempo real para comprender las relaciones espaciales entre las personas, su movimiento y las interacciones con objetos de los entornos físicos. Los contenedores le ayudan a cumplir requisitos específicos de control de datos y seguridad.

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita
  • La cuenta de Azure debe tener asignado un rol Cognitive Services Contributor a fin de que pueda aceptar los términos de IA responsable y crear un recurso. Para asignar este rol a su cuenta, siga los pasos descritos en la documentación Asignación de roles o póngase en contacto con el administrador.
  • Una vez que tenga la suscripción de Azure, create a Computer Vision resource para el nivel Estándar S1 en Azure Portal con el fin de obtener la clave y el punto de conexión. Tras su implementación, seleccione Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que se crea para ejecutar el contenedor de análisis espacial. Los usará más adelante.

Requisitos del contenedor de análisis espacial

Para ejecutar el contenedor de análisis espacial, necesita un dispositivo de cómputo con una GPU NVIDIA CUDA con una capacidad de cómputo de 6.0 o superior (por ejemplo, NVIDIA Tesla T4, A2, 1080Ti o 2080Ti). Se recomienda usar Azure Stack Edge con aceleración de GPU; sin embargo, el contenedor se ejecuta en cualquier otra máquina de escritorio que cumple con los requisitos mínimos. Haremos referencia a este dispositivo como el equipo host.

Azure Stack Edge es una solución de hardware como servicio y un dispositivo informático perimetral habilitado para inteligencia artificial que cuenta con funcionalidades de transferencia de datos de red. Para instrucciones detalladas sobre la preparación y configuración, consulte la documentación de Azure Stack Edge.

Requisito Descripción
Cámara El contenedor de análisis espacial no está enlazado con una marca de cámara específica. Los requisitos del dispositivo de cámara son los siguientes: debe admitir el Protocolo de streaming en tiempo real (RTSP) y codificación H.264, debe ser accesible para el equipo host y debe admitir streaming con una resolución de 15 FPS y 1080p.
SO Linux Ubuntu Desktop 18.04 LTS debe estar instalado en el equipo host.

Configuración del equipo host

Se recomienda usar un dispositivo Azure Stack Edge para el equipo host. Seleccione Máquina de escritorio si va a configurar otro tipo de dispositivo, o Máquina virtual si va a usar una máquina virtual.

Configuración del proceso en el portal de Azure Stack Edge

El análisis espacial usa las características de proceso de Azure Stack Edge para ejecutar una solución de inteligencia artificial. Para habilitar las características de proceso, asegúrese de que se cumple lo siguiente:

  • Conectó y activó el dispositivo Azure Stack Edge.
  • Tiene un sistema cliente de Windows que ejecuta PowerShell 5.0 o posterior para acceder al dispositivo.
  • Para implementar un clúster de Kubernetes, debe configurar el dispositivo Azure Stack Edge mediante la UI local en Azure Portal:
    1. Habilite la característica de proceso en el dispositivo Azure Stack Edge. Para habilitar el proceso, vaya a la página Proceso en la interfaz web del dispositivo.
    2. Seleccione una interfaz de red que quiera habilitar para el proceso y, después, elija Habilitar. Se creará un conmutador virtual en el dispositivo, en esa interfaz de red.
    3. Deje en blanco las direcciones IP de los nodos de prueba de Kubernetes y las de los servicios externos de Kubernetes.
    4. Seleccione Aplicar. Esta operación puede tardar unos dos minutos.

Configure compute

Configuración de un rol de Azure Stack Edge y creación de un recurso de IoT Hub

En Azure Portal, vaya al recurso de Azure Stack Edge. En la página Información general o en la lista de navegación, seleccione el botón Comenzar del proceso de Edge. En el icono Configurar el proceso de Edge, seleccione Configurar.

Link

En la página Configurar proceso de Edge, elija una instancia existente de IoT Hub o elija crear una nueva. De manera predeterminada, se usa un plan de tarifa Estándar (S1) para crear un recurso de IoT Hub. Para usar un recurso de IoT Hub de nivel Gratis, cree uno y selecciónelo. El recurso de IoT Hub usa la misma suscripción y el mismo grupo de recursos que el recurso de Azure Stack Edge.

Seleccione Crear. La creación del recurso de IoT Hub puede tardar un par de minutos. Después de crear el recurso de IoT Hub, el icono Configurar proceso de Edge se actualizará para mostrar la configuración nueva. Para confirmar que se ha configurado el rol de proceso perimetral, seleccione Configuración de vista en el icono Configurar proceso.

Cuando el rol de proceso de Edge está configurado en el dispositivo de Edge, este crea dos dispositivos: uno IoT y el otro IoT Edge. Ambos se pueden ver en el recurso de IoT Hub. El entorno de ejecución de Azure IoT Edge ya estará en ejecución en el dispositivo IoT Edge.

Nota

Habilitación de MPS en Azure Stack Edge

Siga estos pasos para conectarse de forma remota desde un cliente de Windows.

  1. Ejecute una sesión de Windows PowerShell como administrador.

  2. Asegúrese de que el servicio Administración remota de Windows se ejecuta en el cliente. En el símbolo del sistema, escriba:

    winrm quickconfig
    

    Para más información, vea Instalación y configuración de Administración remota de Windows.

  3. Asigne una variable a la cadena de conexión utilizada en el archivo hosts.

    $Name = "<Node serial number>.<DNS domain of the device>"
    

    Reemplace <Node serial number> y <DNS domain of the device> por el número de serie del nodo y el dominio DNS del dispositivo. Puede obtener los valores del número de serie del nodo en la página Certificates (Certificados) y el dominio DNS en la página Device (Dispositivo) de la interfaz de usuario web local del dispositivo.

  4. Para agregar esta cadena de conexión del dispositivo a la lista de hosts de confianza del cliente, escriba el siguiente comando:

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. Inicie una sesión de Windows PowerShell en el dispositivo:

    Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    

    Si ve un error que tiene que ver con la relación de confianza, compruebe que la cadena de firma del certificado de nodo cargado en el dispositivo también esté instalada en el cliente que tiene acceso al dispositivo.

  6. Proporcione la contraseña cuando se le solicite. Use la misma contraseña que se emplea para iniciar sesión en la interfaz de usuario web local. La contraseña de la interfaz de usuario web local predeterminada es Password1. Cuando se conecte correctamente al dispositivo mediante PowerShell remoto, verá la siguiente salida de ejemplo:

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS C:\WINDOWS\system32> winrm quickconfig
    WinRM service is already running on this machine.
    PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
    PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    
    WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
    [1HXQG13.wdshcsso.com]: PS>
    

Manifiesto de implementación de IoT

Para optimizar la implementación del contenedor en varios equipos host, puede crear un archivo de manifiesto de implementación para especificar las opciones de creación del contenedor y las variables de entorno. Encontrará un ejemplo de un manifiesto de implementación para Azure Stack Edge, otras máquinas de escritorio y Azure VM con GPU en GitHub.

En la tabla siguiente se muestran las distintas variables de entorno que usa el módulo IoT Edge. También puede establecerlas en el manifiesto de implementación vinculado anteriormente, mediante el atributo env en spatialanalysis:

Nombre de la opción de configuración Valor Descripción
ARCHON_LOG_LEVEL Info; Verbose (Información; Detallado) Nivel de registro, seleccione uno de los dos valores
ARCHON_SHARED_BUFFER_LIMIT 377487360 Sin modificar
ARCHON_PERF_MARKER false Establézcalo en true para el registro del rendimiento; de lo contrario, debe ser false.
ARCHON_NODES_LOG_LEVEL Info; Verbose (Información; Detallado) Nivel de registro, seleccione uno de los dos valores
OMP_WAIT_POLICY PASSIVE Sin modificar
QT_X11_NO_MITSHM 1 Sin modificar
APIKEY Su clave de API Recopile este valor en Azure Portal del recurso de Visión. Puede encontrarlo en la sección Clave y punto de conexión del recurso.
FACTURACIÓN Su URI de punto de conexión Recopile este valor en Azure Portal del recurso de Visión. Puede encontrarlo en la sección Clave y punto de conexión del recurso.
EULA accept Este valor se debe establecer en accept para que el contenedor se ejecute
PANTALLA :1 Este valor debe ser igual que la salida de echo $DISPLAY en el equipo host. Los dispositivos Azure Stack Edge no tienen pantalla. Esta configuración no es aplicable
KEY_ENV Clave de cifrado ASE Agregue esta variable de entorno si Video_URL es una cadena ofuscada
IV_ENV Vector de inicialización Agregue esta variable de entorno si Video_URL es una cadena ofuscada

Importante

Para poder ejecutar el contenedor, las opciones Eula, Billing y ApiKey deben estar especificadas; de lo contrario, el contenedor no se iniciará. Para obtener más información, vea Facturación.

Una vez que actualice el manifiesto de implementación para los dispositivos Azure Stack Edge, la máquina de escritorio o Azure VM con GPU con su propia configuración y selección de operaciones, use el comando siguiente de la CLI de Azure para implementar el contenedor en el equipo host, como un módulo IoT Edge.

sudo az login
sudo az extension add --name azure-iot
sudo az iot edge set-modules --hub-name "<iothub-name>" --device-id "<device-name>" --content DeploymentManifest.json --subscription "<name or ID of Azure Subscription>"
Parámetro Descripción
--hub-name Nombre de la instancia de Azure IoT Hub.
--content Nombre del archivo de implementación.
--target-condition Nombre del dispositivo IoT Edge para el equipo host.
-–subscription Nombre o id. de la suscripción.

Este comando iniciará la implementación. Vaya a la página de la instancia de Azure IoT Hub en Azure Portal para ver el estado de la implementación. El estado se puede mostrar como 417: La configuración de la implementación del dispositivo no se ha establecido hasta que el dispositivo termine de descargar las imágenes de contenedor y empiece a ejecutarse.

Comprobación de una implementación correcta

Hay varias maneras de comprobar que el contenedor está en ejecución. Localice Estado en tiempo de ejecución en Configuración de módulo IoT Edge del módulo de análisis espacial en la instancia de Azure IoT Hub en Azure Portal. Compruebe que el valor deseado y el valor notificado del estado en tiempo de ejecución sea En ejecución.

Example deployment verification

Una vez que se complete la implementación y que el contenedor esté en ejecución, el equipo host empezará a enviar eventos a Azure IoT Hub. Si usó la versión .debug de las operaciones, verá una ventana del visualizador para cada cámara que configuró en el manifiesto de implementación. Ahora puede definir las líneas y zonas que quiere supervisar en el manifiesto de implementación y siga las instrucciones para volver a realizar la implementación.

Configuración de las operaciones realizadas por el análisis espacial

Deberá usar operaciones de análisis espacial para configurar el contenedor para usar las cámaras conectadas, configurar las operaciones, etc. Para cada dispositivo de cámara que configure, las operaciones para el análisis espacial generarán un flujo de salida de mensajes JSON enviados a la instancia de Azure IoT Hub.

Uso de la salida generada por el contenedor

Si quiere empezar a usar la salida generada por el contenedor, consulte los artículos siguientes:

  • Use el SDK de Azure Event Hubs del lenguaje de programación elegido para conectarse al punto de conexión de Azure IoT Hub y recibir los eventos. Para más información, consulte Leer mensajes del dispositivo a la nube desde el punto de conexión integrado.
  • Configure el enrutamiento de mensajes en la instancia de Azure IoT Hub para enviar los eventos a otros puntos de conexión o guardar los eventos en Azure Blob Storage, etc.

Solución de problemas

Si tiene problemas al iniciar o ejecutar el contenedor, siga los pasos para solucionar problemas comunes que aparecen en el artículo Telemetría y solución de problemas. En este artículo también se incluye información sobre cómo generar y recopilar registros y sobre la recopilación del estado del sistema.

Si tiene problemas al ejecutar un contenedor de servicios de Azure AI, puede intentar usar el contenedor de diagnósticos de Microsoft. Utilice este contenedor para diagnosticar errores comunes en su entorno de implementación que podrían impedir que los contenedores de Azure AI funcionen como se espera.

Para obtener el contenedor, use el comando docker pull siguiente:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

A continuación, ejecute el contenedor. Reemplace {ENDPOINT_URI} por el punto de conexión y {API_KEY} por la clave del recurso:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

El contenedor prueba la conectividad de red con el punto de conexión de facturación.

Facturación

El contenedor de análisis espacial envía información de facturación a Azure mediante el uso de un recurso de Visión en la cuenta de Azure. Actualmente, el uso del análisis espacial en la versión preliminar pública es gratis.

Los contenedores de Azure AI no tienen licencia para ejecutarse si no están conectados al punto de conexión de medición o facturación. Siempre debe habilitar los contenedores para comunicar la información de facturación con el punto de conexión de facturación. Los contenedores Azure AI no envían datos del cliente, como el vídeo o la imagen que se está analizando, a Microsoft.

Resumen

En este artículo, aprendió los conceptos y el flujo de trabajo para la descarga, instalación y ejecución del contenedor de análisis espacial. En resumen:

  • El análisis espacial es un contenedor de Linux para Docker.
  • Las imágenes del contenedor se descargan desde Microsoft Container Registry.
  • Las imágenes de contenedor se ejecutan como módulos de IoT en Azure IoT Edge.
  • La configuración del contenedor y su implementación en una máquina host.

Pasos siguientes