TensorFlow Serving es una biblioteca flexible y de alto rendimiento para servir modelos de aprendizaje automático (ML) en producción. Está diseñada para facilitar la implementación de modelos de TensorFlow y otros modelos de ML, proporcionando una infraestructura robusta para la inferencia en tiempo real.
Objetivos de Aprendizaje
Al final de esta sección, deberías ser capaz de:
- Comprender qué es TensorFlow Serving y por qué es útil.
- Configurar TensorFlow Serving en tu entorno.
- Servir un modelo de TensorFlow utilizando TensorFlow Serving.
- Realizar solicitudes de inferencia a un modelo servido.
¿Qué es TensorFlow Serving?
TensorFlow Serving es una herramienta que permite desplegar modelos de aprendizaje automático en producción de manera eficiente. Ofrece:
- Bajo Latencia y Alto Rendimiento: Optimizado para servir modelos con baja latencia y alta capacidad de respuesta.
- Flexibilidad: Soporta múltiples versiones de modelos y permite la actualización de modelos sin tiempo de inactividad.
- Extensibilidad: Puede integrarse con otros sistemas y soporta modelos de TensorFlow y otros frameworks.
Configuración de TensorFlow Serving
Requisitos Previos
- Docker instalado en tu sistema.
- Un modelo de TensorFlow guardado en formato
SavedModel
.
Instalación de TensorFlow Serving
La forma más sencilla de instalar TensorFlow Serving es utilizando Docker. Aquí están los pasos para configurarlo:
-
Descargar la Imagen de Docker:
docker pull tensorflow/serving
-
Servir un Modelo: Supongamos que tienes un modelo guardado en el directorio
/path/to/your/model
. Puedes servir este modelo utilizando el siguiente comando:docker run -p 8501:8501 --name=tf_serving_model
--mount type=bind,source=/path/to/your/model,target=/models/my_model
-e MODEL_NAME=my_model -t tensorflow/servingEste comando hace lo siguiente:
- -p 8501:8501: Mapea el puerto 8501 del contenedor al puerto 8501 de tu máquina local.
- --name=tf_serving_model: Asigna un nombre al contenedor.
- --mount type=bind,source=/path/to/your/model,target=/models/my_model: Monta el directorio del modelo en el contenedor.
- -e MODEL_NAME=my_model: Establece el nombre del modelo.
- -t tensorflow/serving: Utiliza la imagen de TensorFlow Serving.
Verificación de la Configuración
Para verificar que TensorFlow Serving está funcionando correctamente, puedes acceder a la siguiente URL en tu navegador o utilizar curl
:
Deberías obtener una respuesta JSON que indique que el modelo está cargado y listo para recibir solicitudes.
Realizando Solicitudes de Inferencia
Una vez que TensorFlow Serving está configurado y ejecutándose, puedes realizar solicitudes de inferencia utilizando HTTP. Aquí hay un ejemplo de cómo hacerlo con curl
:
Ejemplo de Solicitud de Inferencia
Supongamos que tu modelo espera una entrada de un tensor con forma [1, 784]
(por ejemplo, una imagen de 28x28 píxeles aplanada). Puedes realizar una solicitud de inferencia de la siguiente manera:
-
Crear un Archivo JSON con la Entrada:
{ "instances": [ { "input_tensor": [0.0, 0.0, ..., 0.0] // Reemplaza con tus datos de entrada } ] }
-
Enviar la Solicitud de Inferencia:
curl -d @input.json -X POST http://localhost:8501/v1/models/my_model:predict
Donde
input.json
es el archivo que contiene los datos de entrada.
Ejemplo de Código en Python
También puedes realizar solicitudes de inferencia utilizando Python y la biblioteca requests
:
import requests import json # Datos de entrada data = { "instances": [ { "input_tensor": [0.0, 0.0, ..., 0.0] # Reemplaza con tus datos de entrada } ] } # URL del modelo servido url = 'http://localhost:8501/v1/models/my_model:predict' # Realizar la solicitud POST response = requests.post(url, data=json.dumps(data)) # Imprimir la respuesta print(response.json())
Resumen
En esta sección, hemos cubierto los conceptos básicos de TensorFlow Serving, cómo configurarlo utilizando Docker, y cómo realizar solicitudes de inferencia a un modelo servido. TensorFlow Serving es una herramienta poderosa para desplegar modelos de aprendizaje automático en producción, proporcionando una infraestructura robusta y eficiente para la inferencia en tiempo real.
Próximos Pasos
En la siguiente sección, aprenderemos sobre el despliegue de modelos en producción, incluyendo estrategias para la actualización de modelos y el manejo de múltiples versiones de modelos.
Curso de TensorFlow
Módulo 1: Introducción a TensorFlow
- ¿Qué es TensorFlow?
- Configuración de TensorFlow
- Conceptos Básicos de TensorFlow
- Hola Mundo en TensorFlow
Módulo 2: Fundamentos de TensorFlow
Módulo 3: Manejo de Datos en TensorFlow
Módulo 4: Construcción de Redes Neuronales
- Introducción a Redes Neuronales
- Creando una Red Neuronal Simple
- Funciones de Activación
- Funciones de Pérdida y Optimizadores
Módulo 5: Redes Neuronales Convolucionales (CNNs)
Módulo 6: Redes Neuronales Recurrentes (RNNs)
- Introducción a RNNs
- Construyendo una RNN
- Memoria a Largo Plazo (LSTM)
- Unidades Recurrentes Gated (GRUs)
Módulo 7: Técnicas Avanzadas de TensorFlow
- Capas y Modelos Personalizados
- TensorFlow Hub
- Aprendizaje por Transferencia
- Ajuste de Hiperparámetros