因此,我目前正在从事一个为多个NLP服务的FastAPI项目。要做到这一点,我想提供不同的模型,从空间以及拥抱脸。
由于这些模型是相当大的,为每个post请求加载模型的推理时间相当长,。我的想法是在FastAPI启动时(在app/main.py中)加载所有模型,但是,我不确定这是否是一个好的选择/想法,或者这种方法是否存在一些缺陷,因为模型将在缓存(?)中。(信息:我想对项目进行对接,然后将其部署到虚拟机上)
到目前为止,我还没有在互联网上找到任何指导,所以我希望在这里得到一个好的答案:)
提前感谢!
发布于 2021-01-08 22:38:21
如果您正在使用gunicorn + uvicorn工作堆栈部署您的应用程序。您可以使用gunicorn的--preload标志。
来自的文档
preload_app
-预加载缺省值: False
在分叉工作进程之前加载应用程序代码。
通过预装应用程序,您可以节省一些RAM资源,并加快服务器启动时间。尽管如此,如果将应用程序加载推迟到每个工作进程,则可以通过重新启动工作人员轻松地重新加载应用程序代码。
您只需在运行选项中使用--preload标志即可。
gunicorn --workers 2 --preload --worker-class=uvicorn.workers.UvicornWorker my_app:apphttps://stackoverflow.com/questions/65636962
复制相似问题