Exercício - Crie uma imagem de contêiner com o modelo YOLO e implante-a no IoT Edge

Concluído

Antes de começar, certifique-se de que instalou os rerequisitos na sua máquina local.

Criar um registo de contentor do Azure

  1. Abra o Azure Cloud Shell no portal do Azure ao selecionar o ícone do Cloud Shell.

    The illustration shows Azure Cloud Shell.

  2. Você criará um registro de contêiner do Azure com o comando az acr create. Execute o seguinte comando para definir uma variável chamada ACR_NAME. O nome do registo de contentor tem de ser exclusivo no Azure e pode incluir 5 a 50 carateres alfanuméricos.

    ACR_NAME=<enter-registry-name>
    
  3. Insira o seguinte comando no editor do Cloud Shell para criar um novo registro de contêiner.

    az acr create --resource-group <replace-with-resource-group> --name $ACR_NAME --sku Standard
    
  4. Vá para o recurso de registro de contêiner que você acabou de criar e navegue até Chaves de acesso.

  5. Copie o nome do registo, o servidor de início de sessão, o nome de utilizador e a palavra-passe.

    The illustration shows the access keys.

Faça o download do modelo de inferência YOLOv4(miny) TensorFlow Lite

  1. Vá para https://github.com/Azure/live-video-analytics e baixe zip em sua máquina local.

    The illustration shows how to download a project from GitHub.

  2. Vá para o seguinte caminho na pasta baixada.

    live-video-analytics-master/utilities/video-analysis/yolov4-tflite-tiny
    

    The illustration shows the project folder.

  3. Crie um novo diretório em sua máquina e copie todos os arquivos (incluindo as subpastas) dessa pasta do GitHub para um novo diretório.

Criar uma imagem de contêiner com o modelo YOLO

  1. Você verá Dockerfile que fornece instruções de compilação para a imagem de contêiner.

    The illustration shows Dockerfile.

  2. Abra o terminal neste diretório. Execute o seguinte comando docker a partir de uma janela de comando nesse diretório para criar a imagem do contêiner.

    docker build . -t yolov4-tflite-tiny:latest
    

    The illustration shows how to build a docker image.

Enviar a imagem do docker para o Registro de Contêiner do Azure

Agora, você tem uma imagem docker com o modelo YOLO. Antes de enviar uma imagem para o seu registro, você deve marcá-la com o nome totalmente qualificado do seu servidor de login do registro. O nome do servidor de login está no formato azurecr.io (deve ser todo minúsculo).

  1. Na sua máquina local, inicie sessão no Azure com a CLI do Azure.

    az login
    
  2. Faça logon no ACR com a CLI do Azure (o docker também pode ser usado).

    docker login <replace-with-your-acr-login-server>
    

    The illustration shows how to login docker.

  3. Crie uma etiqueta para a imagem com o comando etiqueta do docker. Substitua <o servidor> de login pelo nome do servidor de login da sua instância ACR.

    docker tag <original-image-name:tag> <registry-name>.azurecr.io/<image-name:tag>
    

    The illustration shows how to a docker image.

  4. Use o docker push para enviar a imagem para a instância do Registro. Substitua <o servidor> de login pelo nome do servidor de login da sua instância do Registro.

    docker push <registry-name>.azurecr.io/<image-name:tag>
    

    The illustration shows how to push image to a container registry.

  5. Levará algum tempo para enviar seu modelo conteinerizado para o registro de contêiner do Azure. Depois de enviar a imagem para o registro do contêiner, o URI da imagem seria:

    <registry-name>.azurecr.io/<image-name:tag>
    
  6. Para verificar se a imagem foi enviada por push, você irá para o recurso de registro de contêiner e navegará pelo repositório.

    The illustration shows the containerized model in container registry.

Implantar o modelo YOLO como um módulo do Azure IoT Edge

  1. No portal do Azure, vá para seu recurso do Hub IoT.

  2. No painel esquerdo, selecione IoT Edge em Gerenciamento Automático de Dispositivos.

  3. Selecione o dispositivo IoT Edge que receberá a implantação.

  4. Na barra superior, selecione Definir módulos.

  5. Forneça o seguinte.

    • Nome: Substitua pelo nome do Registro do seu Registro de contêiner do Azure

    • Endereço: Substitua pelo servidor de logon do seu registro de contêiner do Azure

    • Nome de usuário: substitua pelo nome de usuário do seu registro de contêiner do Azure

    • Senha: substitua pela senha do seu registro de contêiner do Azure

    The illustration shows how to edit container credentials.

  6. Selecione Adicionar.

  7. Na seção Módulos do IoT Edge, selecione Adicionar e selecione Módulo IoT Edge no menu suspenso.

    The illustration shows how to add edge module.

  8. Dê um nome ao seu módulo IoT Edge e insira o URL da imagem, que é o caminho abaixo.

    <registry-name>.azurecr.io/<image-name:tag>
    
  9. Selecione Adicionar.

    The illustration shows how to add image path.

Rever + criar

Depois de definir o módulo, selecione Rever + criar. A seção de revisão mostra o manifesto de implantação JSON que foi criado com base nos módulos definidos. Verifique se o módulo definido na seção anterior está definido no manifesto.

The illustration shows the review of deployment.

Verifique o módulo implantado em seu dispositivo de borda

Após a implantação, você pode verificar o módulo em seu dispositivo de borda. Conecte-se à sua máquina virtual e execute o comando docker ps .

docker ps

Agora você tem seu próprio módulo de inferência no dispositivo de borda, e o ponto de extremidade de previsão pode ser acessado através de /score com a porta 80 se sua imagem for construída a partir do modelo Tiny YOLOv4 TensorFlow Lite.

Anote o ponto de extremidade de previsão que está na forma de http://{module-name}:80/score e pode ser acessado somente dentro do seu dispositivo de borda.

Verifique o seu conhecimento

1.

Se você tiver seu próprio modelo de aprendizado de máquina e quiser empacotá-lo como uma imagem do Docker, onde você define as etapas de compilação do processo de criação de imagem?