Hola a todos! Bueno, hay muchas guías sobre cómo construir un modelo de aprendizaje automático para varios usos y recientemente encontré una guía sobre cómo construir un detector de correo no deseado y luego implementarlo utilizando Flask.
A través de eso, he decidido llevarlo más lejos al implementarlo en Google Cloud Platform. Pero, por supuesto, puedes usar Heroku, AWS, etc., pero ese es otro tema para otro día, solo me concentraré en GCP por ahora.
Breve resumen del proyecto.
Es un modelo de aprendizaje automático para la clasificación de mensajes SMS no deseados mediante la capacitación sobre la colección existente de masajes SMS etiquetados como “spam” o “ham”.
El detector de Spam presenta el clasificador Multinomial Naive Bayes de scikit-learn basado en el algoritmo Naive Bayes para datos distribuidos multinomialmente:
Los métodos ingenuos de Bayes son un conjunto de algoritmos de aprendizaje supervisados basados en la aplicación del teorema de Bayes con el supuesto “ingenuo” de independencia condicional entre cada par de características dado el valor de la variable de clase.
Los estudiantes y clasificadores ingenuos de Bayes pueden ser extremadamente rápidos en comparación con métodos más sofisticados. El desacoplamiento de las distribuciones de características condicionales de clase significa que cada distribución puede estimarse independientemente como una distribución unidimensional.
Esto, a su vez, ayuda a aliviar los problemas derivados de la maldición de la dimensionalidad.
Mientras tanto, Flask sirve como marco web, para recibir la entrada del usuario a través de la interfaz (Solicitud HTTP) y darse cuenta de sus capacidades de predicción.
Nacido en 2010, Flask es un marco pequeño según la mayoría de los estándares, lo suficientemente pequeño como para llamarlo “microframework”.
Flask promueve la legibilidad y la fácil comprensión de su código fuente. Flask es un marco web ligero escrito en Python y desde entonces se ha convertido en uno de los marcos web de Python más utilizados para empresas de nueva creación, y en una herramienta perfecta para soluciones rápidas y simples en la mayoría de las empresas.
El objetivo de Flask es mantener el núcleo del marco pequeño pero altamente extensible, por lo que escribir aplicaciones o extensiones de manera muy fácil y flexible, al mismo tiempo que permite al desarrollador elegir su propia configuración para su aplicación
Implementación en Google Cloud Platform
Usaremos Google App Engine en un entorno estándar. Nos permite “crear aplicaciones altamente escalables en una plataforma sin servidor completamente administrada”. Hay algunos requisitos o suposiciones que haré antes de continuar:
- Supuse que habías instalado Flask y las bibliotecas involucradas en un entorno virtual (si no, se mostrará más adelante).
- Tiene una cuenta de Google con acceso a la consola de Google Cloud Platform y ha creado un nuevo proyecto en ella.
Asegúrese de que la facturación esté habilitada para su proyecto. Una cuenta de facturación debe estar vinculada a su proyecto para que la aplicación se pueda implementar en App Engine
3. Instalado Google Cloud SDK , sigue sus instrucciones de instalación.
4. Has probado exitosamente tu aplicación localmente.
En términos generales, su carpeta principal tendría esta estructura y tenga en cuenta que “nlp” es mi entorno virtual y estaremos creando el app.yaml, appengine_config.py y Requirements.txt a continuación:
runtime: python37 instance_class: F2 handlers: # Matches requests to /images/... to files in static/images/... - url: /images static_dir: static/images - url: /.* secure: always redirect_http_response_code: 301 script: auto
La aplicación app.yaml de muestra especifica el tiempo de ejecución en el que debe ejecutarse la aplicación, para este proyecto, se ejecutaría en Python 3.7. Para Python 2.7, puede consultar el siguiente código:
runtime: python27 api_version: 1 threadsafe: true handlers: - url: /static static_dir: static - url: /.* script: main.app libraries: - name: ssl version: latest
from google.appengine.ext import vendor # Add any libraries installed in the "lib" folder. vendor.add('lib')
Flask Werkzeug scikit-learn textblob pandas pip Jinja2 MarkupSafe
Si no ha instalado las bibliotecas necesarias en el entorno virtual, puede utilizar el código que se encuentra a continuación.
El entorno debe activarse primero y acceder a él mediante el terminal, el símbolo del sistema, etc. para instalar las nuevas dependencias basadas en el archivo Requirements.txt.
pip install -t lib -r requirements.txt
-t lib: esta bandera copia las bibliotecas en una carpeta lib, que se carga en App Engine durante la implementación.
-r Requirements.txt : pip para instalar todo desde Requirements.txt.
Google Cloud: Despliegue
Antes de comenzar, sería mejor (opcional) actualizar el SDK de la nube instalado:
gcloud components update
Luego, en la carpeta raíz , lo implementaremos usando su cmd / terminal con el siguiente código:
gcloud app deploy --project [ID of Project]
¡O simplemente puedes hacerlo sin la ID del proyecto también!
Elija la región más adecuada y solo espere unos minutos, dependiendo de su proyecto, ¡le presentará un enlace al que cualquiera puede acceder para ver / usar su aplicación web!
O simplemente use el siguiente código:
gcloud app browse --project= #the link usually is "projectid".appspot.com
Conclusión
Genial! GCP hizo que el proceso de implementación de una aplicación web fuera más rápido y fácil. Espero poder probar otras opciones en un futuro próximo u otros proyectos. ¡No dude en comunicarse conmigo si hay algún problema o pregunta!.