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

Your email address will not be published. Required fields are marked *