Guía paso a paso para implementar un modelo ML usando Heroku

Estás leyendo la publicación: Guía paso a paso para implementar un modelo ML usando Heroku

El aprendizaje automático es un proceso continuo de recopilación, procesamiento de datos, extracción de características significativas y, finalmente, modelado de esos datos refinados. Después de completar el engorroso procedimiento, el ciclo de vida no terminó aquí. Para que el usuario interactúe en este modelo, tenemos que emplear varias estrategias de implementación en la nube, dispositivos de borde basados ​​en IoT, como teléfonos móviles. La plataforma de implementación depende básicamente del caso de uso de la aplicación. En este artículo, analizaremos la implementación basada en la nube mediante el servicio en la nube de Heroku. A continuación se enumeran los puntos principales que discutiremos.

Tabla de contenido

  1. ¿Qué es Heroku?
  2. Nuestro modelo de aprendizaje automático
  3. Construcción de aplicación web
  4. Implementación paso a paso con Heroku

Primero entendamos qué es Heroku.

¿Qué es Heroku?

Heroku es una plataforma como servicio (PaaS) que permite a los desarrolladores alojar programas sin servidor. Esto significa que los scripts se pueden escribir para servir uno u otro para ciertas necesidades. AWS (Amazon Web Services) aloja la plataforma Heroku, que es una solución de infraestructura como servicio.

Heroku es una plataforma gratuita con un límite de tiempo de actividad de 500 horas. Las aplicaciones están alojadas en un banco de pruebas, que entra en modo de suspensión después de 30 minutos de inactividad. Esto asegura que su aplicación no consuma todo su tiempo libre mientras no la esté usando. Ruby, Java, PHP, Python, Node, Go y Scala son compatibles con la plataforma. La mayoría de los novatos en ciencia de datos utilizan esta plataforma para adquirir experiencia ejecutando e implementando modelos en el mundo real.

Nuestro modelo de aprendizaje automático

El modelo ML que vamos a implementar tiene como objetivo predecir si un determinado paciente sufrirá un paro cardíaco o no en función de 10 características de entrada. El procedimiento completo de construcción del modelo, desde el preprocesamiento hasta la evaluación, está bien documentado en este cuaderno.

Básicamente, cuando creamos una aplicación web, debemos lidiar con la lógica de frontend, la lógica de backend y el servicio en la nube que servirá a nuestra aplicación. La lógica de frontend es esa parte que a menudo vemos cuando visitamos cualquier sitio web y damos o mencionamos nuestras respuestas y esa respuesta es procesada por la lógica de backend.

Aquí, en nuestro caso, al usar el frontend, tomaremos los valores de nuestro modelo para los cuales predecirá los resultados y en el backend, procesaremos estos valores según el método del modelo. .predecir() para obtener una predicción. Y con esa predicción obtenida, pasaremos a la interfaz.

🔥 Recomendado:  LUX: API de Python para análisis de datos exploratorios automatizados

En la próxima sección, discutiremos cómo podemos preparar nuestro modelo para la interfaz web, la mínima HTML la configuración del archivo y la configuración del marco web.

Construcción de aplicación web

Como se discutió anteriormente, debemos haber preparado nuestro ML de manera que pueda interactuar fácilmente con los marcos web y este proceso generalmente se conoce como serialización y deserialización del modelo.

Se utilizan comúnmente varios formatos de modelo, como Pickle, una librería de trabajo de sklearn que convierte el modelo de objetos de Python en un flujo de bits en formato de exportación y permite que el modelo se integre en tecnologías como Java. Usaremos el módulo Pickle para exportar el modelo. Como puede ver en el cuaderno, la API para serializar y deserializar es simple.

import pickle # serializando pickle.dump(model,open(‘Healtcare.pkl’,’wb’)) # deserializando pic=pickle.load(open(‘Healthcare.pkl’,’rb’))

Ahora, para proporcionar el enlace de interacción entre este modelo y el usuario, hemos aprovechado los marcos de desarrollo web como el famoso FLASK. Es un marco simple que le permite crear un servidor con solo unas pocas líneas de código. Muchas características, como la autenticación y la naturaleza RESTful, no se admiten explícitamente porque es un paquete pequeño.

Antes de continuar, comprendamos la estructura del directorio de nuestro proyecto. He llevado a cabo todo este desarrollo relacionado con la web en código VS y la estructura de mi directorio de trabajo es la siguiente,

Las carpetas estáticas y de plantillas están siendo utilizadas por el módulo render_template del matraz que básicamente hace que nuestra página HTML sea sencilla. La carpeta de plantilla contiene nuestro archivo HTML principal y la carpeta estática contiene imágenes que se utilizan en la página HTML.

Virtual contiene todos los paquetes que tenemos instalados para este modelo. Posteriormente tenemos app.py que contiene la lógica principal de la aplicación. Junto a él, tenemos un archivo pickle que hemos creado anteriormente.

El siguiente es Procfile. Se incluye un Procfile con las aplicaciones de Heroku y proporciona los comandos que ejecutará la aplicación cuando se inicie. Un Procfile se puede usar para declarar una amplia gama de tipos de procesos, incluido el servidor web para su aplicación.

El último es el archivo requirements.txt que contiene información de todos los paquetes que hemos usado en este proyecto y Heroku debe instalar todos estos paquetes para ejecutar la aplicación. Este archivo se puede crear fácilmente usando pip como,

pip congelar > requisitos.txt

Ahora echemos un vistazo al archivo app.py donde hemos escrito código para aplicaciones web.

# importar dependencias desde el matraz import Flask, render_template, solicitud de importación numpy como np import pickle model=pickle.load(open(‘Healthcare.pkl’,’rb’)) app = Flask(__name__) @app.route(‘/’ ,métodos=[‘POST’,’GET’]) def nuevo(): return render_template(‘nuevo.html’) @app.route(‘/predecir’, métodos=[‘POST’] ) def predecir(): # obteniendo datos data1=float(request.form[‘a’]) data2=float(solicitud.formulario[‘b’]) data3=float(solicitud.formulario[‘c’]) data4=float(solicitud.formulario[‘d’]) data5=float(solicitud.formulario[‘e’]) data6=float(solicitud.formulario[‘f’]) data7=float(solicitud.formulario[‘g’]) data8=float(solicitud.formulario[‘h’]) data9=float(solicitud.formulario[‘i’]) data10=float(solicitud.formulario[‘j’]) # preparación para la predicción características=np.array([data1,data2,data3,data4,data5,data6,data7,data8,data9,data10]) pred = modelo.predecir([features]) def sentencia(): if pred == 0: return ‘Resultado: – El modelo ha predicho que no sufrirá ningún paro cardíaco pero debe cuidarse.’ else: volver ‘Resultado:- Deberías consultar con un médico. El modelo ha predicho que sufrirás un paro cardíaco.’ devuelve render_template(‘nuevo.html’,estado=estado()) si __nombre__==’__principal__’: app.run(debug=True)

🔥 Recomendado:  5 razones asombrosas para agregar un PS a su próximo correo electrónico comercial

Nuestra aplicación web contendrá una sola página, conocida como la página predeterminada o principal. El ‘/’ ruta es la URL de inicio. Esto debería, de manera predeterminada, llevarlo al archivo index.html, que sirve como página principal.

Cuando un usuario llega a la página principal, queremos hacer una acción específica. Creamos una función que respondería a las consultas de los usuarios en función de las solicitudes POST.

Cuando la información se devuelve al servidor web, un usuario realiza una solicitud POST. Damos al usuario la opción de completar esas diez características. Obtenemos esta información de un archivo HTML uno por uno utilizando el formulario de solicitud método mencionando la clave para cada valor.

Ahora transformamos la lista de funciones en una matriz NumPy y la guardamos en la lista de funciones. Luego, usando el modelo entrenado, utilice la función de predicción del modelo para hacer predicciones. Finalmente, el resultado esperado se muestra en la página web.

Ahora, para probar esta aplicación, simplemente ejecute el archivo app.py desde la ventana del terminal de su IDE y alojará su aplicación localmente como se muestra a continuación.

python aplicación.py

Ahora, para facilitar esta interfaz globalmente, la implementaremos en la nube usando Heroku, que es una plataforma gratuita para implementar cualquier aplicación web.

Implementación paso a paso con Heroku

Heroku proporciona tres formas diferentes de implementar modelos: Heroku git, GitHub y el registro de contenedores. La técnica de Git se usa en esta publicación para implementar el modelo. El GIT y la CLI de Heroku (puede crear y administrar aplicaciones de Heroku directamente desde el terminal utilizando la interfaz de línea de comandos (CLI) de Heroku) deben instalarse en nuestro sistema y el procedimiento de instalación es similar a cualquier procedimiento de instalación de software, simplemente siga las ajustes de configuración predeterminados.

Antes de continuar, asegúrese de haber creado una cuenta en Heroku, si no créela aquí.

Ahora, comencemos el procedimiento de implementación. Lo haremos paso a paso.

Paso 1: tipo inicio de sesión heroku en la ventana de terminal del código VS o cualquier IDE en el que esté trabajando o incluso puede usar la ventana de terminal de su sistema operativo también. Después de ejecutar este comando, aparecerá la página de inicio de sesión de Heroku donde debe iniciar sesión. Después de iniciar sesión correctamente, verá los detalles de la cuenta en una ventana de terminal.

🔥 Recomendado:  9 generadores de música con IA que debes conocer

Paso 2: Después de iniciar sesión, debemos inicializar el directorio actual como un repositorio de git en funcionamiento y agregar todos los archivos del directorio, para eso debe ejecutar los siguientes comandos secuencialmente uno tras otro.

iniciar git

añadir

git commit -m ‘Primera versión’

Paso 3: A continuación, después de crear el repositorio de git, debemos decirle a Heroku que cree nuestra aplicación mencionando el nombre de la aplicación, a continuación se encuentra el comando. A veces el nombre que elijas puede no estar disponible en ese caso, simplemente cámbialo por otro.

Predicción de paro cardíaco de Heroku

Después de completar con éxito la implementación de este comando, Heroku proporcionará la URL donde se alojará nuestra aplicación. Para esta implementación, la URL es

https://cardiac-arrest-prediction.herokuapp.com/

Etapa 4: Ahora solo necesitamos enviar nuestro repositorio al servidor, esto creará nuestra aplicación con todas las dependencias del archivo requirements.txt y también puede rastrear este procedimiento en la ventana de su terminal. El comando para enviar la aplicación a través de la web es el siguiente:

git heroku empuje maestro

Después de la ejecución exitosa de este comando, nuestra aplicación estará activa en la URL mencionada anteriormente.

Ultimas palabras

A lo largo de este artículo, hemos discutido cómo podemos implementar un modelo de aprendizaje automático como una aplicación en la web. Hemos implementado nuestro modelo directamente desde la ventana de la terminal, como se mencionó anteriormente, la implementación se puede llevar a cabo a través de Git-Hub, también para eso debe crear una rama maestra para el repositorio de git-hub y cargar todos los archivos allí y desde el sitio web de Heroku. , puede implementar fácilmente el modelo.

Todos los archivos para esta implementación se pueden encontrar en este repositorio.

Referencias