En aquest tema, aprendrem com desplegar models de TensorFlow en entorns de producció. El desplegament de models és una part crucial del cicle de vida del machine learning, ja que permet utilitzar els models entrenats per fer prediccions en temps real o en lots. Explorarem diverses tècniques i eines per desplegar models de TensorFlow de manera eficient i segura.

Objectius d'aprenentatge

  • Entendre els conceptes bàsics del desplegament de models.
  • Aprendre a utilitzar TensorFlow Serving per desplegar models.
  • Conèixer altres opcions de desplegament com TensorFlow Lite i TensorFlow.js.
  • Implementar un exemple pràctic de desplegament de models.

Conceptes bàsics del desplegament de models

Què és el desplegament de models?

El desplegament de models és el procés de posar un model de machine learning en producció perquè pugui ser utilitzat per aplicacions o usuaris finals. Aquest procés inclou:

  • Serialització del model: Guardar el model en un format que pugui ser carregat fàcilment.
  • Servei del model: Configurar un servidor que pugui rebre sol·licituds i retornar prediccions.
  • Monitorització: Supervisar el rendiment del model en producció per assegurar-se que funciona correctament.

Requisits per al desplegament

  • Escalabilitat: Capacitat per manejar un gran nombre de sol·licituds.
  • Latència baixa: Temps de resposta ràpid per a les sol·licituds de predicció.
  • Fiabilitat: Assegurar que el servei estigui disponible i funcioni correctament.
  • Seguretat: Protegir el model i les dades de sol·licitud.

TensorFlow Serving

Què és TensorFlow Serving?

TensorFlow Serving és un sistema flexible i d'alt rendiment per servir models de machine learning en entorns de producció. Proporciona una interfície gRPC i REST per fer sol·licituds de predicció.

Instal·lació de TensorFlow Serving

Per instal·lar TensorFlow Serving, podem utilitzar Docker o instal·lar-lo directament en el sistema operatiu. Aquí utilitzarem Docker per la seva facilitat d'ús.

docker pull tensorflow/serving

Desament del model

Abans de desplegar el model, hem de guardar-lo en un format que TensorFlow Serving pugui utilitzar. Utilitzarem el mètode tf.saved_model.save.

import tensorflow as tf

# Suposem que tenim un model entrenat
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)),
    tf.keras.layers.Dense(10, activation='softmax')
])

# Guardem el model
tf.saved_model.save(model, "/tmp/saved_model")

Desplegament del model amb TensorFlow Serving

Un cop el model està guardat, podem utilitzar TensorFlow Serving per desplegar-lo.

docker run -p 8501:8501 --name=tf_serving \
  --mount type=bind,source=/tmp/saved_model,target=/models/my_model \
  -e MODEL_NAME=my_model -t tensorflow/serving

Fer sol·licituds de predicció

Podem fer sol·licituds de predicció utilitzant cURL o una biblioteca com requests en Python.

import requests
import json

data = json.dumps({"signature_name": "serving_default", "instances": [[0.0, 0.0, ...]]})
headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8501/v1/models/my_model:predict', data=data, headers=headers)
predictions = json_response.json()['predictions']
print(predictions)

Altres opcions de desplegament

TensorFlow Lite

TensorFlow Lite és una solució per desplegar models en dispositius mòbils i incrustats. Permet optimitzar els models per a un rendiment eficient en dispositius amb recursos limitats.

TensorFlow.js

TensorFlow.js permet desplegar models de TensorFlow en aplicacions web. Els models es poden executar directament en el navegador, permetent una experiència d'usuari interactiva i en temps real.

TensorFlow Extended (TFX)

TFX és una plataforma de producció per a fluxos de treball de machine learning. Inclou components per a la validació de dades, transformació de dades, entrenament de models, anàlisi de models i desplegament.

Exemple pràctic de desplegament

Pas 1: Entrenament i desament del model

import tensorflow as tf

# Definim i entrenem el model
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)),
    tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Suposem que tenim dades d'entrenament en X_train i y_train
model.fit(X_train, y_train, epochs=5)

# Guardem el model
tf.saved_model.save(model, "/tmp/saved_model")

Pas 2: Desplegament amb TensorFlow Serving

docker run -p 8501:8501 --name=tf_serving \
  --mount type=bind,source=/tmp/saved_model,target=/models/my_model \
  -e MODEL_NAME=my_model -t tensorflow/serving

Pas 3: Fer sol·licituds de predicció

import requests
import json

data = json.dumps({"signature_name": "serving_default", "instances": [[0.0, 0.0, ...]]})
headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8501/v1/models/my_model:predict', data=data, headers=headers)
predictions = json_response.json()['predictions']
print(predictions)

Resum

En aquest tema, hem après els conceptes bàsics del desplegament de models i hem explorat com utilitzar TensorFlow Serving per desplegar models de TensorFlow. També hem vist altres opcions de desplegament com TensorFlow Lite i TensorFlow.js. Finalment, hem implementat un exemple pràctic de desplegament de models. Amb aquests coneixements, estem preparats per posar els nostres models en producció i fer-los accessibles per a aplicacions reals.

© Copyright 2024. Tots els drets reservats