Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desarrollo de API del modelo de clasificación de texto #30

Open
4 tasks
xuxoramos opened this issue Jun 25, 2020 · 6 comments
Open
4 tasks

Desarrollo de API del modelo de clasificación de texto #30

xuxoramos opened this issue Jun 25, 2020 · 6 comments
Assignees
Labels
enhancement New feature or request

Comments

@xuxoramos
Copy link
Owner

Se desarrollará el API para el Discriminamómetro privilegiando la definición de entradas, salidas y errores para hacerlos agnósticos de la implementación del modelo subyacente y que aunque actualmente se elegirá entre un SVM descrito en #29 o un LDA semisupervisado descrito en este comentario del issue 20, eventualmente cambiará, pero el haber definido este contrato evitará cambios y disrupciones al desarrollo del producto.

  • Definición del contrato de entrada (endpoints, parámetros y defaults)
  • Definición de valores de retorno (diccionario, campos, valores, errores)
  • Desarrollo del API
  • Despliegue en producción del API

Para el desarrollo considerar AWS Lambda (https://stackify.com/aws-lambda-with-python-a-complete-getting-started-guide/).
Para el despliegue a producción considerar cumplir con el estándar de Swagger (https://pypi.org/project/flask-swagger/).

@ronmoy007
Copy link
Collaborator

Nuestro usuarios de AWS no tienen permiso para crear funciones Lambda

@xuxoramos
Copy link
Owner Author

Se otorgan permisos para creación y despliegue de lambda functions para modelo de clasificación de texto actual con SVMs entrenado con conteo.

@ronmoy007
Copy link
Collaborator

-Al tratar de utilizar la opción de AWS Lambda, se presentaron restricciones respecto a las librerías incluidas en dicho servicio.

-Se encontró que utilizando "layers" era posible cargar las librerías correspondientes (siempre y cuando se compilaran en específico para la arquitectura de AWS lambda). Sin embargo al tratar de incluir el paquete de sklearn, se sobrepasa el cupo permitido de memoria para layers.

-Se trató de empaquetar toda la solución y subirla toda junta para no ocupar layers, pero se presentó la misma restricción respecto al tamaño de la solución.

-Finalmente se ideó separar el discrminamómetro en 2 funciones AWS lambda:

  1. Una de ellas, contará con la lógica para extraer los tweets de twitter y limpiarlos.
  2. La segunda contendrá únicamente el modelo para recibir textos y devolver predicciones.

Al separar la aplicación de esta manera, se le podrá dar la vuelta al problema del espacio.

A continuación se muestra un ejemplo de cómo mandar a llamar una función lambda desde otra:
https://www.sqlshack.com/calling-an-aws-lambda-function-from-another-lambda-function/

@xuxoramos
Copy link
Owner Author

De acuerdo. Se deben de todas maneras migrar estos componentes a la cuenta de la Sociedat.

@ronmoy007
Copy link
Collaborator

Al continuar con el desarrollo de la API, se encontró que también se debe separar la parte de los embeddings del modelo, pues la librería de scikit learn sumada a los embeddings, exceden el máximo permitido por cada AWS Lambda.

Sin embargo antes de montar dicha arquitectura, se recomienda definir bien el modelo a utilizar para no tener que volver a adaptar el funcionamiento de la API para que encaje con lo planteado por el modelo.

@xuxoramos
Copy link
Owner Author

Se definió que se usarán 8 clasificadores binarios en lugar de 1 binario y 7 multiclase. Los 8 binarios serán:

  • 1 binario de discriminación / no discriminación
  • 7 binarios de pertenencia a categoría de COPRED / no pertenencia.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants