Coc*_*zor 10 deployment fastapi
所以我目前正在开发一个为多种 NLP 服务提供服务的 FastAPI 项目。为此,我想提供来自 spacy 和 Huggingface 的不同模型。
由于这些模型非常大,因此为每个发布请求加载模型时的推理时间非常长。我的想法是在 FastAPI 启动时加载所有模型(在 app/main.py 中),但是,我不确定这是否是一个好的选择/想法,或者这种方法是否有一些缺点,因为模型会在缓存中(?)。(信息:我想对项目进行 dockerize,然后将其部署在虚拟机上)
到目前为止,我无法在互联网上找到任何指导,所以我希望在这里得到一个好的答案:)
提前致谢!
gunicorn如果您使用+工作堆栈部署应用程序uvicorn。您可以使用gunicorn的--preload标志。
来自gunicorn的文档
预加载应用程序
--preload 默认值:False
在分叉工作进程之前加载应用程序代码。
通过预加载应用程序,您可以节省一些 RAM 资源并加快服务器启动时间。不过,如果您将应用程序加载推迟到每个工作进程,则可以通过重新启动工作进程来轻松重新加载应用程序代码。
您只需要--preload在运行选项中使用标志即可。
gunicorn --workers 2 --preload --worker-class=uvicorn.workers.UvicornWorker my_app:app
Run Code Online (Sandbox Code Playgroud)