Creando y sirviendo tu primer modelo de aprendizaje automático – CodesCode
Bienvenido al mundo del aprendizaje automático. En este tutorial, aprenderás cómo crear, entrenar y utilizar tu primer modelo de aprendizaje automático.
Bienvenido al mundo del aprendizaje automático, donde las computadoras aprenden a partir de datos y hacen predicciones sin programación explícita. En el corazón de esta tecnología se encuentra el concepto de un “modelo”.
¿Qué es un modelo?
En la programación tradicional, creamos funciones/métodos que reciben entradas/parámetros y devuelven un resultado basado en una fórmula. Por ejemplo, imagina un método de Java que aplica la fórmula y = 3x + 1
.
public int formula(int x) { return 3 * x + 1;}
El código anterior devolvería los siguientes datos para x
e y
:
x | -1 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
y | -2 | -1 | 4 | 7 | 10 | 13 |
Ahora, imagina que en lugar de la fórmula, tienes muchas valores de x
e y
. Puedes crear un modelo de aprendizaje automático para descubrir la fórmula y predecir nuevos valores.
Como ejemplo de la vida real, podemos usar el reconocimiento facial que ocurre en la galería de nuestros teléfonos. Tenemos varias entradas (fotos) y salidas (nombres de personas), y el modelo de aprendizaje automático es la fórmula que sabe cómo reconocer a las personas. A medida que le das nombres a las personas en las fotos, estás alimentando al modelo con datos que se reentrenan constantemente para reconocer mejor a esas personas.
Python: El lenguaje del aprendizaje automático
Python se ha convertido en el lenguaje por defecto para el aprendizaje automático. Su vasto ecosistema de bibliotecas, incluyendo TensorFlow y Keras, lo convierte en una herramienta poderosa para construir y entrenar modelos. Si tienes curiosidad por adentrarte en el mundo del aprendizaje automático, Python es tu fiel compañero en este viaje.
Nuestro modelo
Para simplificar, utilizaremos los datos de x
e y
anteriores para entrenar un modelo que sabrá cómo predecir un valor de y
basado en x
.
import tensorflow as tfimport numpy as npfrom tensorflow import kerasimport osdef build_model(): # Crea un modelo que reciba 1 valor de entrada y devuelva 1 valor de salida model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) # Define los algoritmos de aprendizaje. No tienes que preocuparte por esto por ahora. model.compile(optimizer='sgd', loss='mean_squared_error') return modeldef train_model(model, xs, ys, epochs=500): # Entrena el modelo. Aquí estamos diciendo al algoritmo que pruebe 500 fórmulas aleatorias para encontrar la que mejor coincida con los datos de entrada y salida. model.fit(xs, ys, epochs=epochs)def predict_with_model(model, input_data): # Predice usando el modelo entrenado return model.predict([input_data])def save_model(model, export_path): # Guarda el modelo tf.keras.models.save_model( model, export_path, overwrite=True, include_optimizer=True, save_format=None, signatures=None, options=None )def main(): # Datos de entrada xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float) # Construye el modelo model = build_model() # Entrena el modelo train_model(model, xs, ys) # Predice el valor para x = 10. Imprimirá un número muy cercano a 31, como 30.9994 o algo similar prediction = predict_with_model(model, 10.0) print(prediction) # Guarda el modelo model_dir = "./model" version = 1 export_path = os.path.join(model_dir, str(version)) print('export_path = {}\n'.format(export_path)) save_model(model, export_path) print('\nModelo guardado: ' + export_path)if __name__ == "__main__": main()
Ejecuta el código Python anterior para crear, entrenar y probar el modelo. Creará el modelo en el directorio ./modelo
.
Servir el modelo
Una vez que hayas creado el modelo y lo tengas en el directorio ./model
, puedes servirlo como una API REST. Para hacerlo, puedes utilizar la imagen de contenedor tensorflow/serving
:
podman run -p 8501:8501 \ --name=tf_serving \ --mount type=bind,source=./model,target=/models/model -e MODEL_NAME=model \ -t tensorflow/serving
Consumiendo el Modelo
Una vez que tu contenedor esté en ejecución, puedes enviar una solicitud para hacer una inferencia. Ejecuta el siguiente comando para inferir el valor y
para x = 10
:
curl -d '{"instances": [[10.0]]}' \ -H "Content-Type: application/json" \ -X POST http://localhost:8501/v1/models/model:predict
Deberías ver un resultado similar al siguiente:
{ "predictions": [[30.9971237] ]}
¡Eso es todo, amigos!
Acabas de crear, entrenar, servir y consumir tu primer modelo de aprendizaje automático. Puedes encontrar el código fuente utilizado en esta publicación en GitHub. Siéntete libre de hacer preguntas en los comentarios y estar atento a más.
Leave a Reply