Executar carga de trabalho de inferência no NVIDIA Triton Inference Server

Concluído

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

demo/app Na pasta, há dois scripts Python. O primeiro, frame_grabber.py usa o Triton Inference Server. O segundo, frame_grabber_onnxruntime.py pode ser usado de forma independente. A utils pasta dentro do app diretório contém scripts Python para permitir a interpretação do tensor de saída do modelo.

Ambos os scripts Python são definidos para observar o image_sink diretório para quaisquer arquivos de imagem que são colocados lá. images-sampleNo , você encontra uma coleção de imagens que copiamos via linha de comando para o para processamentoimage_sink. Os scripts Python excluem automaticamente os arquivos do image_sink após a conclusão da inferência.

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

Se o modelo detetar os objetos nos quais treinou, o script Python criará uma anotação dessa inferência com uma caixa delimitadora, nome da marca e pontuação de confiança. O script salva a imagem na pasta com um nome exclusivo usando um carimbo images-annotated de data/hora, que podemos baixar para visualizar localmente. Dessa forma, você pode copiar as mesmas imagens repetidamente 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 NVIDIA Triton Inference Server

  1. Para começar a inferir, queremos abrir duas janelas no Terminal do Windows e ssh na máquina virtual de cada janela.

  2. Na primeira janela, execute o seguinte comando, mas primeiro altere o espaço reservado do <seu nome> de usuário 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 seguinte comando, alterando <seu nome> de usuário para seu valor, e defina o< limite> de probabilidade para o nível de confiança desejado entre 0 e 1. Por padrão, esse valor é 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 images_sample pasta para a image_sink pasta:

    cp demo/images_sample/* demo/image_sink/
    

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

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

    Uma captura de tela mostrando a saída do script Python.

  5. Se quiser ver uma lista das suas imagens anotadas, pode executar este comando:

    ls demo/annotated_images
    
  6. Para fazer o download das imagens para a sua máquina local, primeiro queremos criar uma pasta para receber as imagens. Em uma janela de linha de comando, cd para 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/
    

    Este comando copia todos os arquivos da máquina virtual Ubuntu para o seu dispositivo local para visualização.