Path: blob/master/site/es-419/tfx/tutorials/serving/rest_simple.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Entrenamiento y servicio de un modelo de TensorFlow con TensorFlow Serving
Advertencia: Este bloc de notas fue diseñado para ejecutarse únicamente en Google Colab. Instala paquetes en el sistema y requiere acceso de raíz. Si desea ejecutarlo en un bloc de notas Jupyter local, hágalo con cuidado.
Nota: Puede ejecutar este ejemplo ahora mismo en un bloc de notas estilo Jupyter, ¡no es necesario configurarlo! Simplemente haga clic en "Ejecutar en Google Colab"
Esta guía entrena un modelo de red neuronal para clasificar imágenes de indumentaria, como calzado deportivo y camisas, guarda el modelo entrenado y luego lo entrega con TensorFlow Serving. La atención se centra en TensorFlow Serving, en lugar del modelado y el entrenamiento en TensorFlow, por lo que para ver un ejemplo completo que se centre en el modelado y el entrenamiento, debe consultar el ejemplo de clasificación básica.
Esta guía usa tf.keras, una API de alto nivel que se usa para compilar y entrenar modelos en TensorFlow.
Cómo crear un modelo
Cómo importar el conjunto de datos Fashion MNIST
Esta guía usa el conjunto de datos Fashion MNIST que contiene 70 000 imágenes en escala de grises en 10 categorías. Las imágenes muestran artículos individuales de prendas de vestir en baja resolución (28 x 28 píxeles), como se puede ver a continuación:
![]() |
Figura 1. Muestras de Fashion-MNIST (de Zalando, licencia MIT). |
Fashion MNIST fue pensado como reemplazo directo del clásico conjunto de datos MNIST, a menudo usado como el "Hola, mundo" de los programas de aprendizaje automático para visión artificial. Puede acceder a Fashion MNIST directamente desde TensorFlow, simplemente importe y cargue los datos.
Nota: Aunque en realidad se trata de imágenes, se cargan como arreglos NumPy y no como objetos binarios de imagen.
Cómo entrenar y evaluar el modelo
Usemos la CNN más simple posible, ya que no nos centramos en la parte del modelado.
Cómo guardar el modelo
Para cargar nuestro modelo entrenado en TensorFlow Serving, primero debemos guardarlo en formato SavedModel. Esto generará un archivo protobuf en una jerarquía de directorios bien definida e incluirá un número de versión. TensorFlow Serving nos permite seleccionar qué versión de un modelo o "servible" queremos usar cuando enviamos solicitudes de inferencia. Cada versión se exportará a un subdirectorio diferente en la ruta indicada.
Cómo examinar el modelo guardado
Usaremos la utilidad de línea de comando saved_model_cli
para ver MetaGraphDefs (los modelos) y SignatureDefs (los métodos que puede llamar) en nuestro SavedModel. Consulte esta discusión sobre la CLI de SavedModel en la Guía de TensorFlow.
¡Eso nos dice mucho sobre nuestro modelo! En este caso, simplemente entrenamos nuestro modelo, por lo que ya conocemos las entradas y salidas, pero si no lo hiciéramos, esta sería información importante. No nos dice todo, como el hecho de que se trata de datos de imágenes en escala de grises, por ejemplo, pero es un gran comienzo.
Cómo servir el modelo con TensorFlow Serving
Advertencia: Si NO está ejecutando esto en Google Colab, las siguientes celdas instalarán paquetes en el sistema con acceso de raíz. Si desea ejecutarlo en un bloc de notas de Jupyter local, hágalo con cuidado.
Cómo agregar el URI de distribución de TensorFlow Serving como fuente del paquete:
Nos estamos preparando para instalar TensorFlow Serving con Aptitude ya que este Colab se ejecuta en un entorno Debian. Agregaremos el paquete tensorflow-model-server
a la lista de paquetes que Aptitude conoce. Tenga en cuenta que estamos ejecutando como raíz.
Nota: Este ejemplo ejecuta TensorFlow Serving de forma nativa, pero también puede ejecutarlo en un contenedor Docker, que es una de las formas más sencillas de comenzar a usar TensorFlow Serving.
Cómo instalar TensorFlow Serving
Esto es todo lo que necesita: ¡una línea de comando!
Cómo empezar a ejecutar TensorFlow Serving
Aquí es donde comenzamos a ejecutar TensorFlow Serving y cargamos nuestro modelo. Después de que se cargue, podemos comenzar a enviar solicitudes de inferencia usando REST. Hay algunos parámetros importantes:
rest_api_port
: el puerto que se usará para las solicitudes REST.model_name
: lo usará en la URL de las solicitudes REST. Puede ser cualquier cosa.model_base_path
: esta es la ruta al directorio donde se guardó el modelo.
Cómo hacer una solicitud a su modelo en TensorFlow Serving
Primero, veamos un ejemplo aleatorio de nuestros datos de prueba.
Bien, eso se ve interesante. ¿Qué tan difícil resulta reconocerlo? Ahora creemos el objeto JSON para un lote de tres solicitudes de inferencia y veamos qué tan bien reconoce las cosas nuestro modelo:
Cómo hacer solicitudes REST
La versión más nueva del servible.
Enviaremos una solicitud de predicción como POST al punto de conexión REST de nuestro servidor y le pasaremos tres ejemplos. Le pediremos a nuestro servidor que nos proporcione la última versión de nuestro servible sin especificar una versión en particular.
Una versión específica del servible.
Ahora definamos una versión específica de nuestro servible. Como solo tenemos uno, seleccionemos la versión 1. También veremos los tres resultados.