【发布时间】:2020-02-18 21:21:14
【问题描述】:
我正在开发一个使用 celery 进行任务分配和管理的网络应用程序。 Web 应用程序还使用机器学习和深度学习算法进行预测。这些预测模型作为单独的应用程序部署在单独的服务器上,并且它们的预测功能作为单独的任务与 celery 集成。
例如,X(用户)想知道股票价格的预测并向 Web 应用程序提交查询。 Web 应用程序将使用 X 的查询负载启动 celery 任务。此 Celery 任务在执行某些操作后将任务提交给机器学习/深度学习的 celery 正在工作的其他服务器,并开始等待其他服务器任务完成并收到响应。
与我们使用 Flask 为机器学习预测模型部署 RESTful 端点时相比,这将我们的性能提高了 10 倍。对于深度学习,我们需要迁移到 Tensorflow 并将其与 celery 集成。经过深入研究,得出的结论是使用 Tensorflow Serving 并在机器学习服务器上的 celery 任务中调用预测函数。
其他方法是使用 Sanic 将 TensorFlow 模型部署为单独的端点,而不是 Web 应用程序的 celery 直接向其他服务器 celery 提交任务,现在它将直接执行并调用 RESTful API 端点也是异步的。
您有什么建议,在这种情况下什么最适合我们?与 RESTful API 相比,celery 可以提供什么好处,反之亦然?
【问题讨论】:
标签: rest tensorflow deep-learning celery