Executar carga de trabalho de inferência no Servidor de Inferência NVIDIA Triton

Concluído

Agora estamos prontos para executar o script do Python de exemplo no Servidor Triton. Se você examinar o diretório demo, verá uma coleção de pastas e arquivos.

Na pasta demo/app, há dois scripts Python. O primeiro, frame_grabber.py, usa o Servidor de Inferência Triton. O segundo, frame_grabber_onnxruntime.py, pode ser usado de forma autônoma. A pasta utils dentro do diretório app contém scripts do Python para habilitar a interpretação do tensor de saída do modelo.

Ambos os scripts Python estão definidos para inspecionar arquivos de imagem que estão colocados no diretório image_sink. No images-sample, você encontra uma coleção de imagens que copiamos por meio da linha de comando para o image_sink para processamento. Os scripts do Python excluem automaticamente os arquivos do image_sink após a conclusão da inferência.

Na pasta model-repo, você encontrará uma pasta para o nome do modelo (gtc_onnx), que contém o arquivo de configuração do modelo para o servidor de Inferência Triton e o arquivo de rótulo. Também há uma pasta que indica a versão do modelo, que contém o modelo ONNX (Open Neural Network Exchange) que o servidor usa para inferência.

Se o modelo detectar os objetos nos quais foi treinado, o script Python criará uma anotação dessa inferência com uma caixa delimitadora, um nome de marca e uma pontuação de confiança. O script salva a imagem na pasta images-annotated com um nome exclusivo usando um carimbo de data/hora, que podemos baixar para exibir localmente. Dessa forma, você poderá copiar as mesmas imagens várias vezes para o image_sink, mas terá novas imagens anotadas criadas a cada execução para fins de ilustração.

Executar uma carga de trabalho de inferência no Servidor de Inferência NVIDIA Triton

  1. Para começar a inferência, vamos abrir duas janelas no Terminal do Windows e iniciar ssh na máquina virtual de cada janela.

  2. Na primeira janela, execute o seguinte comando, mas primeiro altere o espaço reservado <your username> com seu nome de usuário para a máquina virtual:

    sudo docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --rm -p8000:8000 -p8002:8002 -v/home/<your username>/demo/model-repo:/models nvcr.io/nvidia/tritonserver:20.11-py3 tritonserver --model-repository=/models
    
  3. Na segunda janela, copie o comando a seguir, alterando <your username> com os seus valores e defina <probability threshold> para o nível de confiança desejado entre 0 e 1. Por padrão, esse valor está definido como 0,6.

    python3 demo/app/frame_grabber.py -u <your username> -p .07
    
  4. Na terceira janela, copie e cole este comando para copiar os arquivos de imagem da pasta images_sample para a pasta image_sink:

    cp demo/images_sample/* demo/image_sink/
    

    Se você voltar para a segunda janela, verá a execução do modelo, incluindo as estatísticas do modelo e a inferência retornada na forma de um dicionário do Python.

    Aqui está uma exibição de exemplo do que você deverá ver na segunda janela à medida que o script é executado:

    Captura de tela mostrando a saída do script Python.

  5. Se você quiser ver uma lista das imagens anotadas, execute este comando:

    ls demo/annotated_images
    
  6. Para baixar as imagens em seu computador local, primeiro vamos criar uma pasta para receber as imagens. Em uma janela de linha de comando, use o comando cd para navegar até o diretório no qual você deseja colocar a nova pasta e execute:

    mkdir annotated_img_download
    scp <your usename>@x.x.x.x:/home/<your username>/demo/images_annotated/* annotated_img_download/
    

    Esse comando copia todos os arquivos da máquina virtual do Ubuntu para o dispositivo local para exibição.