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.
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.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres