Exercício – Criar uma imagem de contêiner com o modelo YOLO e implantá-la no IoT Edge

Concluído

Antes de começar, verifique se você instalou os pré-requisitos no computador local.

Criar um Registro de Contêiner do Azure

  1. Abra o Azure Cloud Shell no portal do Azure clicando no í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 registro de contêiner deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos.

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

    az acr create --resource-group <replace-with-resource-group> --name $ACR_NAME --sku Standard
    
  4. Acesse o recurso de registro de contêiner recém-criado e procure Chaves de acesso.

  5. Copie o nome de registro, o servidor de logon, o nome de usuário e a senha.

    The illustration shows the access keys.

Baixar o modelo de inferência YOLOv4(tiny) TensorFlow Lite

  1. Acesse https://github.com/Azure/live-video-analytics e baixe o zip no computador local.

    The illustration shows how to download a project from GitHub.

  2. Acesse o caminho a seguir na pasta baixada.

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

    The illustration shows the project folder.

  3. Crie um diretório no computador e copie todos os arquivos (incluindo as subpastas) dessa pasta do GitHub para o novo diretório.

Criar uma imagem de contêiner com o modelo YOLO

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

    The illustration shows Dockerfile.

  2. Abra o terminal neste diretório. Execute o comando do Docker a seguir em uma janela Comando nesse diretório para criar a imagem de contêiner.

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

    The illustration shows how to build a docker image.

Efetuar push da imagem do Docker para o Registro de Contêiner do Azure

Agora, você tem uma imagem do Docker com o modelo YOLO. Para efetuar push de uma imagem para o Registro, você precisa marcá-la com o nome totalmente qualificado de seu servidor de logon do Registro. O nome do servidor de logon está no formato azurecr.io (deve e star em letras minúsculas).

  1. No computador local, faça logon 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. Marque a imagem usando o comando docker tag. Substitua <login-server> pelo nome do servidor de logon da instância do 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 push do docker para fazer push da imagem para a instância do registro. Substitua <login-server> pelo nome do servidor de logon 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 que o modelo em contêineres seja enviado por push ao Registro de Contêiner do Azure. Após o push da imagem para o registro de contêiner, o URI da imagem será:

    <registry-name>.azurecr.io/<image-name:tag>
    
  6. Para verificar se a imagem foi enviada por push, você acessará o recurso 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 o recurso de Hub IoT.

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

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

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

  5. Forneça as informações a seguir.

    • Nome: substitua-o pelo nome de registro do Registro de Contêiner do Azure

    • Endereço: substitua-o pelo servidor de logon do Registro de Contêiner do Azure

    • Nome de usuário: substitua-o pelo nome de usuário do Registro de Contêiner do Azure

    • Senha: substitua-o pela senha do 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 Módulo do IoT Edge no menu suspenso.

    The illustration shows how to add edge module.

  8. Dê um nome ao módulo do IoT Edge e insira a 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.

Examinar + criar

Depois de configurar o módulo, selecione Examinar + criar. A seção de revisão mostra o manifesto de implantação JSON 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.

Verificar o módulo implantado no seu dispositivo de borda

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

docker ps

Agora você tem o próprio módulo de inferência no dispositivo de borda, e o ponto de extremidade de previsão poderá ser acessado por meio de /score com a porta 80 se a imagem for compilada com base no modelo Tiny YOLOv4 TensorFlow Lite.

Anote o ponto de extremidade de previsão que está no formato http://{nome-do-módulo}:80/score e só pode ser acessado no dispositivo de borda.

Verificar seu conhecimento

1.

Se você tiver um modelo de machine learning próprio e quiser empacotá-lo como uma imagem do Docker, em que local as etapas de build do processo de build de imagem serão definidas?