Estoy tratando de implementar un modelo de aprendizaje automático (basado en tensorflow y keras) como un servicio usando FastAPI y Gunicorn, pero no puedo obtener suficiente rendimiento de la API incluso después de aumentar el número de subprocesos y trabajadores de Gunicorn.
He probado con las siguientes configuraciones:
1 trabajador: gunicorn model : app -k uvicorn.workers.UvicornWorker -b hostname:port Esto me da un rendimiento de 15 respuestas/s
5 trabajadores: modelo gunicorn: aplicación -k uvicorn.workers.UvicornWorker --workers=5 -b hostname:port Esto me da un rendimiento de 30 respuestas/s
30 respuestas/seg es el rendimiento máximo que puedo obtener, mientras que tengo que escalarlo a alrededor de 300 respuestas/seg. También intenté aumentar la cantidad de subprocesos, pero eso tampoco resultó en un aumento en el rendimiento.
Cuando estoy cronometrando la solicitud-respuesta con un solo trabajador: la respuesta tarda alrededor de 80 ms en regresar (Hecho a través de Postman)
Estoy tratando de ejecutar esto en una máquina Linux con los siguientes detalles:
El sistema está casi inactivo cuando intento ejecutar el servicio (menos del 5 % de uso de la CPU).