所以我目前正在开发一个为多种 NLP 服务提供服务的 FastAPI 项目。为此,我想提供来自 spacy 和 Huggingface 的不同模型。
自从那些模型相当大的推理时间为每个发布请求加载模型相当长。我的想法是在 FastAPI 启动时加载所有模型(在 app/main.py 中)但是,我不确定这是否是一个好的选择/想法,或者这种方法是否有一些缺点,因为模型将位于缓存中(?)。 (信息:我想对项目进行 dockerize,然后将其部署在虚拟机上)
到目前为止,我无法在互联网上找到任何指导,所以我希望在这里得到一个好的答案:)
提前致谢!
如果您正在使用以下方式部署您的应用程序gunicorn
+ uvicorn
工人堆栈。您可以使用gunicorn
's --preload
flag.
从文档gunicorn https://docs.gunicorn.org/en/stable/settings.html#preload-app
预加载应用程序
--preload 默认值:False
在分叉工作进程之前加载应用程序代码。
通过预加载应用程序,您还可以节省一些 RAM 资源
加快服务器启动时间。不过,如果您推迟申请
加载到每个工作进程,您可以重新加载您的应用程序代码
通过重新启动工人即可轻松完成。
你只需要使用--preload
标记您的运行选项。
gunicorn --workers 2 --preload --worker-class=uvicorn.workers.UvicornWorker my_app:app
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)