Implementación de modelos de aprendizaje automático en Heroku

Publicado: 2021-01-05

El aprendizaje automático es un proceso continuo que implica la extracción de datos, la limpieza, la selección de funciones importantes, la creación de modelos, la validación y la implementación para probar el modelo en datos ocultos.

Si bien la fase inicial de ingeniería de datos y creación de modelos es un proceso bastante tedioso y requiere mucho tiempo para dedicarse a los datos, la implementación del modelo puede parecer simple, pero es un proceso crítico y depende del caso de uso al que desee apuntar. Puede atender el modelo para usuarios móviles, sitios web, dispositivos inteligentes o mediante cualquier otro dispositivo IoT.

Se puede optar por integrar el modelo en la aplicación principal, incluirlo en SDLC o en la nube. Hay varias estrategias para implementar y ejecutar el modelo en la plataforma en la nube, lo que parece una mejor opción para la mayoría de los casos debido a la disponibilidad de herramientas como Google Cloud Platform, Azure, Amazon Web Services y Heroku.

Si bien puede optar por exponer el modelo en modo Pub/Sub, la API (interfaz de programa de aplicación) o el envoltorio REST se usan más comúnmente para implementar el modelo en producción. A medida que aumenta la complejidad del modelo, se asignan diferentes equipos para manejar este tipo de situaciones, comúnmente conocidas como ingenieros de aprendizaje automático. Con toda esta introducción, veamos cómo implementar un modelo de aprendizaje automático como una API en la plataforma Heroku.

Tabla de contenido

¿Qué es Heroku?

Heroku es una plataforma como herramienta de servicio que permite a los desarrolladores alojar su código sin servidor. Lo que esto significa es que uno puede desarrollar scripts para servir uno u otro para propósitos específicos. La plataforma Heroku está alojada en AWS (Amazon Web Services), que es una herramienta de infraestructura como servicio.

Heroku es una plataforma gratuita pero limitada a 500 horas de tiempo de actividad. Las aplicaciones se alojan como un banco de pruebas que, después de una inactividad de 30 minutos, entra en modo de suspensión. Esto asegura que su aplicación no consuma todo el tiempo libre durante la inactividad. La plataforma es compatible con Ruby, Java, PHP, Python, Node, Go, Scala. La mayoría de los principiantes en ciencia de datos se refieren a esta plataforma para tener la experiencia de ejecutar e implementar un modelo en la nube.

Preparando el modelo

Ahora que conoce esta plataforma, preparemos el modelo para la misma. Cuando se entrena un modelo de aprendizaje automático, los parámetros correspondientes se almacenan en la propia memoria. Este modelo debe exportarse en un archivo separado para que podamos cargarlo directamente, pasar datos no vistos y obtener los resultados.

Por lo general, se practican diferentes formatos de modelo, como Pickle, job-lib, que convierte el modelo de objetos de Python en un flujo de bits, ONNX, PMML o MOJO, que es un formato de exportación H20.ai y ofrece el modelo para integrarse también en aplicaciones Java. Para simplificar, considere que queremos exportar el modelo a través de pickle, luego puede hacerlo de la siguiente manera:

encurtido de importación

Pkl_Filename = “modelo.pkl”

con open(Pkl_Filename, 'wb') como archivo:

pickle.dump(modelo_nombre, archivo)

El modelo ahora se almacena en un archivo separado y está listo para usarse integrado en una API.

La lógica del servidor

Para proporcionar acceso a este modelo para predicciones, necesitamos un código de servidor que pueda redirigir y manejar todas las solicitudes del lado del cliente. Python admite marcos de desarrollo web y uno famoso es Flask.

Es un marco minimalista que permite configurar un servidor con pocas líneas de código. Como es un paquete mínimo, muchas funcionalidades, como la autenticación y la naturaleza RESTful, no se admiten explícitamente. Estos se pueden integrar con extensiones.

Otra opción es optar por el marco FastAPI recientemente lanzado. Es mucho más rápido, escalable, está bien documentado y viene con muchos paquetes integrados. Por ahora, continuemos con el matraz para configurar una ruta de predicción simple.

de matraz importación Matraz

encurtido de importación

aplicación = Frasco (__nombre__)

con abierto (Nombre de archivo, 'rb') como archivo:

modelo = pickle.load(archivo)

@app.route('/predict', métodos = ['GET', 'POST'])

def pred():

# implementar la lógica para obtener parámetros ya sea a través de consultas o carga útil

predicción = model.predict([parámetros obtenidos])

volver {'resultado': predicción}

Este es un código aproximado para mostrar cómo proceder con la lógica del servidor. Hay varias estrategias que puede optar por una mejor implementación.

Consulte: Guía para implementar modelos de aprendizaje automático con Streamlit

Configuración de archivos de implementación

Heroku requiere una lista de todas las dependencias requeridas por nuestra aplicación. Esto se llama el archivo de requisitos. Es un archivo de texto que enumera todas las bibliotecas externas que utiliza la aplicación. En este ejemplo, el contenido del archivo contendría:

matraz

aprender

entumecido </p>

pandas

gunicornio

La última biblioteca, gunicorn, nos permite configurar la implementación del servidor WSGI que forma la interfaz para el cliente y el servidor que maneja el tráfico HTTP. Heroku también exige otro archivo conocido como Procfile que se utiliza para especificar el punto de entrada de la aplicación. Considere que el archivo de lógica del servidor se guarda con el nombre main.py, luego el comando que se debe colocar en este archivo es:

web: gunicorn principal: aplicación

"web" es el tipo de banco de pruebas que estamos implementando, "gunicorn" actúa como mediador para pasar la solicitud al código del servidor "principal" y busca "aplicación" en "principal". La aplicación maneja todas las rutas aquí.

Despliegue final

Todos los preparativos están hechos y ahora es el momento de ejecutar la aplicación en la nube. Cree una cuenta si no está en Heroku, haga clic en crear una aplicación, elija cualquier región. Después de eso, conecte su cuenta de GitHub y elija el repositorio que contiene estos archivos: código de servidor, modelo.pkl, requisitos.txt y Procfile.

¡Después de esto, simplemente presione implementar rama! Si tiene éxito, visite el enlace generado y su aplicación debería estar activa. Ahora puede realizar solicitudes a appname.herokuapp.com/predict route y debería dar las predicciones. Obtenga más información sobre los modelos de aprendizaje automático.

Conclusión

Esta fue una introducción a lo que es Heroku, por qué es necesario y cómo implementar un modelo con la ayuda de Flask. Hay muchas plataformas de alojamiento que ofrecen características más avanzadas, como Data Pipelines, streaming, pero Heroku, siendo la plataforma gratuita, sigue siendo una buena opción para los principiantes que solo quieren probar la implementación.

Si está interesado en obtener más información sobre el aprendizaje automático, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT- B Estado de exalumno, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.

¿Cuáles son las desventajas de usar la plataforma Heroku?

Heroku no es ideal para grandes empresas ya que la documentación de la plataforma no es extensa. Otro problema es el sistema de archivos de solo lectura, que hace que las cargas de archivos voluminosos, como películas o fotografías de alta resolución, sean difíciles de manejar. Heroku es un proveedor de plataforma como servicio con una cantidad limitada de personalización. Heroku solo acepta pagos en USD y no en otras monedas, como EUR. Para los dueños de negocios que prefieren pagar en su propia moneda, esto puede ser un inconveniente menor. Además, dentro de CRE (Common Runtime Environment), Heroku no proporciona direcciones IP estáticas.

¿En qué se diferencia Heroku de AWS?

El procedimiento de implementación en AWS no es simple y, como resultado, no es particularmente fácil de usar en términos de complejidad. Heroku proporciona un entorno listo para usar que es fácil de operar. Heroku es más costoso que AWS ya que requiere menos intervención humana. AWS puede manejar necesidades computacionales altas o muy altas, mientras que Heroku puede manejar demandas computacionales modestas. Heroku, a diferencia de AWS, no requiere un mantenimiento regular de la infraestructura. AWS y Heroku son rápidos como un rayo cuando se trata de la implementación.

¿Cuánto tiempo puedo usar Heroku sin costo?

Las cuentas de Heroku tienen un conjunto de horas de dinamómetro gratuitas que se pueden usar en aplicaciones gratuitas. Esto reemplaza el límite de 18 horas de los programas gratuitos, permitiéndoles funcionar las 24 horas del día si es necesario. Las cuentas nuevas obtienen 550 horas de dinamómetro gratis, con 450 horas adicionales si valida su identidad con una tarjeta de crédito. Heroku ofrece un plan gratuito para ayudarlo a aprender la tecnología y comenzar. Muchos complementos de Heroku ofrecen un plan gratuito, al igual que los botones y paquetes de compilación de Heroku.