Path: blob/master/site/pt-br/tfx/tutorials/serving/rest_simple.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Treine e sirva um modelo do TensorFlow com o TensorFlow Serving
Importante: este notebook foi projetado para ser executado apenas num Google Colab. Ele instala pacotes no sistema e requer acesso root. Se você quiser executá-lo num notebook Jupyter local, proceda com cuidado.
Observação: você pode executar este exemplo agora mesmo num notebook estilo Jupyter, sem necessidade de configuração! Basta clicar em "Executar no Google Colab"
Este guia treina um modelo de rede neural para classificar imagens de roupas, como tênis e camisas, salva o modelo treinado e depois o disponibiliza com o TensorFlow Serving. O foco está no TensorFlow Serving, em vez da modelagem e treinamento no TensorFlow, portanto, para obter um exemplo completo dedicado à modelagem e treinamento, veja o Exemplo Básico de Classificação.
Este guia usa o tf.keras, uma API de alto nível, para criar e treinar modelos no TensorFlow.
Crie seu modelo
Importe o dataset Fashion MNIST
Este guia usa o dataset Fashion MNIST que contém 70.000 imagens em tons de cinza em 10 categorias. As imagens mostram peças de roupa individuais em baixa resolução (28 por 28 pixels), como pode ser visto aqui:
![]() |
Figura 1. Amostras Fashion-MNIST (por Zalando, licença MIT). |
O Fashion MNIST pretende ser um substituto imediato para o dataset clássico MNIST - frequentemente usado como o "Olá, mundo" em programas de aprendizado de máquina para visão computacional. Você pode acessar o Fashion MNIST diretamente do TensorFlow, basta importar e carregar os dados.
Observação: Embora sejam realmente imagens, elas são carregadas como matrizes NumPy e não como objetos de imagem binária.
Treine e avalie seu modelo
Vamos usar a CNN mais simples possível, já que não estamos focados na parte de modelagem.
Salve seu modelo
Para carregar nosso modelo treinado no TensorFlow Serving, primeiro precisamos salvá-lo no formato SavedModel. Isto criará um arquivo protobuf numa hierarquia de diretórios bem definida e incluirá um número de versão. O TensorFlow Serving nos permite selecionar qual versão de um modelo, ou "servable" ("servível"), queremos usar quando fazemos solicitações de inferência. Cada versão será exportada para um subdiretório diferente no caminho fornecido.
Examine seu modelo salvo
Usaremos o utilitário de linha de comando saved_model_cli
para examinar os MetaGraphDefs (os modelos) e SignatureDefs (os métodos que você pode chamar) em nosso SavedModel. Veja esta discussão sobre a CLI SavedModel no Guia do TensorFlow.
Isto nos diz bastante sobre o nosso modelo! Neste caso acabamos de treinar nosso modelo, então já conhecemos as entradas e saídas, mas se não o fizéssemos, esta seria uma informação importante. Isto não nos diz tudo, como o fato de que se trata de dados de imagens em tons de cinza, por exemplo, mas é um ótimo começo.
Sirva seu modelo com o TensorFlow Serving
Importante: Se você NÃO estiver executando isso num Google Colab, as células a seguir instalarão pacotes no sistema com acesso root. Se você quiser executá-lo num notebook Jupyter local, proceda com cuidado.
Adicione a URI de distribuição do TensorFlow Serving como origem do pacote:
Estamos nos preparando para instalar o TensorFlow Serving usando o Aptitude, já que este Colab é executado em um ambiente Debian. Adicionaremos o pacote tensorflow-model-server
à lista de pacotes que o Aptitude conhece. Observe que estamos executando como root.
Observação: este exemplo executa o TensorFlow Serving de forma nativa, mas você também pode executá-lo num container Docker, que é uma das maneiras mais fáceis de começar a usar o TensorFlow Serving.
Instale o TensorFlow Serving
Isso é tudo que você precisa: uma única linha de comando!
Comece a executar o TensorFlow Serving
É aqui que começamos a executar o TensorFlow Serving e carregamos nosso modelo. Após carregar, podemos começar a fazer solicitações de inferência usando REST. Existem alguns parâmetros importantes:
rest_api_port
: a porta que você usará para solicitações REST.model_name
: você usará isto na URL das solicitações REST. Pode ser qualquer coisa.model_base_path
: Este é o caminho para o diretório onde você salvou seu modelo.
Faça uma solicitação ao seu modelo no TensorFlow Serving
Primeiro, vamos dar uma olhada num exemplo aleatório de nossos dados de teste.
Ok, isto parece interessante. Você acha difícil reconhecer isso? Agora vamos criar o objeto JSON para um lote de três solicitações de inferência e ver como nosso modelo reconhece as coisas:
Faça solicitações REST
Versão mais recente do servable
Enviaremos uma solicitação de previsão como uma solicitação POST para o endpoint REST do nosso servidor e passaremos três exemplos. Pediremos ao nosso servidor que nos forneça a versão mais recente do nosso servable, não especificando uma versão específica.
Uma versão específica do servable
Agora vamos especificar uma versão específica do nosso servable. Como só temos um, vamos selecionar a versão 1. Também veremos todos os três resultados.