启动时加载 FastAPI 项目中的模型

2024-04-04

所以我目前正在开发一个为多种 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(使用前将#替换为@)

启动时加载 FastAPI 项目中的模型 的相关文章

  • 从 sqlmodel 获取连接表作为 fastapi 中的嵌套响应模型

    我无法弄清楚如何使用 fastapi 和 sqlmodel 显示一对多关系 我读过这篇文章question https stackoverflow com questions 72870598 getting nested joined t
  • 为什么活性/就绪性探测失败?

    我正在尝试通过 Helm 图表将应用程序部署到 Kubernetes 集群 每次我尝试部署应用程序时 我都会得到 活性探测失败 获取http 172 17 0 7 80 http 172 17 0 7 80 拨号 TCP 172 17 0
  • 有条件的 Mercurial 忽略文件

    我在 Mercurial 中有一个文件 我希望开发机器提取该文件 但我希望部署服务器不提取该文件 它具有开发机器没有的特殊模块 这是可能的 还是我应该有一个自定义的推送到服务器解决方案 而不是仅仅进行 hg pull 执行此操作的典型方法是
  • 配置Tomcat使用属性文件加载DB连接信息

    创建从属性文件读取配置参数的 Tomcat 部署的可接受做法是什么 如果能够提供 WAR 文件并指定客户端只需在特定目录中创建或编辑属性文件 那就太好了 这是一种比较常规的做事方式吗 还有比这更好的方法吗 我们经常通过提供 WAR 和 Co
  • 返回响应后如何记录 POST 方法的返回值?

    我正在开发我的第一个 REST API 所以如果我错过了一些基本的东西 请提前道歉 我有一个函数 它从另一台服务器获取 JSON 请求 对其进行处理 根据数据进行预测 然后返回另一个带有结果的 JSON 我想在服务器的本地磁盘上保留对此端点
  • 未找到 Azure Flask 路由

    我正在使用 Visual Studio 创建一个空白的 Flask 应用程序 当我在本地运行该应用程序时 我得到了预期的 hello world 当我发布到 Azure 应用服务时 我得到了这个丑陋的蓝色主页 这不是我制作的 在我的项目中
  • 在 WAR 部署期间如何检查哪个类/jar 导致“无法从最终类继承”?

    我正在将 WAR 文件部署到 Windows 7 上的 Weblogic 12 1 2 服务器 也尝试过 Mac OS X 我遇到了一个例外 见下文 看起来其中一个类引用了某个父类的旧 新版本 该父类来自一些重复的 jar 我怎样才能找到哪
  • 没有历史记录的 Git 存储库

    是否可以拥有一个没有历史记录的 Git 存储库 例如 我工作的地方有一个本地 Git 存储库 我想将最新版本推送到生产服务器 生产服务器上不应存储任何历史记录 我怎样才能做到这一点 你可以看看命令是否git archive http git
  • 在 Uvicorn/FastAPI 内发出下游 Https 请求的正确方法是什么?

    我有一个 API 端点 FastAPI Uvicorn 除此之外 它还向另一个 API 请求信息 当我使用多个并发请求加载 API 时 我开始收到以下错误 h11 util LocalProtocolError can t handle e
  • Heroku 中没有运行 Django 的 Web 进程

    我试图在heroku中部署我的应用程序 但是当我最终尝试在heroku中运行我的应用程序时 我在浏览器中看到了这样的内容 Application Error An error occurred in the application and
  • spring boot应用程序在ec2上自动关闭

    我在 ec2 上部署了 springboot 应用程序 ubuntu 为 t2 medium 大小 AWS AMI 为 t3 medium 大小 在我的本地电脑上 没有问题 但在 ec2 上 几个小时后 在我不工作期间 它自己死了 我只是想
  • 如何使用 url_for() 将路径和查询数据传递到使用 FastAPI 和 Jinja2 的路由?

    我想从 Jinja2 模板中调用 FastAPI 路由 并传递两者path and query该路由的数据 参数 我在 Jinja2 模板中尝试过如下所示 url for function1 uustr data uustr interva
  • 为什么 Yeoman 构建时没有字形图标?

    我正在研究一个webapp发电机及运行后grunt我有一个可以正确显示字体的功能应用程序 然而 当我检查dist 目录我没有得到任何字体文件 文档指出grunt命令build the application for deployment 但
  • gcloud 部署应用程序找不到导入包 - golang

    我已经将应用程序的一个版本部署到 GAE 但现在部署新版本时遇到问题 当我尝试时gcloud app deploy version VERSION 我收到一堆错误 显示远程构建找不到我的导入包 Beginning deployment of
  • Weblogic:Java 8 迁移后 AppMerge 无法合并您的应用程序

    我们正在将 Java EE 应用程序从Java 6 to Java 8 这意味着编译级别和迁移JRE6 上的 Weblogic 11g to JRE8 上的 Weblogic 12c 当我尝试部署项目时 出现以下错误 lt 20 7 201
  • log4net 控制台应用程序未登录发布

    我有一个使用 log4net 的控制台应用程序 通过温莎城堡 当我调试时 一切都很好地记录到控制台 但是当我发布并运行应用程序时 没有记录任何内容 我的 log4net 配置位于单独的文件 log4net config 中 我认为它没有找到
  • Web应用程序结构和部署

    我们的产品是一个 ASP Net Web 应用程序 目前 我们在 Visual Studio 中使用网站项目 但研究使用 Web 应用程序项目已经有一段时间了 我目前正在研究它们 以便我们能够改进我们的部署过程 我们有一个在不同客户之间共享
  • capistrano deploy.rb 中的 require 找不到文件

    我有一个 Rails 3 0 5 应用程序 我正在设置 capistrano 来使用配方 在我的配置目录中 我有一个名为 database capistrano rb 的文件 在我的deploy rb中 也在配置目录中 我有以下行 就在开头
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 使用 gradle 部署 GAE 时出现奇怪的构建失败

    直到今天一切都运转良好 据我所知 没有改变任何东西 现在我明白了 C mypath gt gradle appengineDeploy gt Configure project WARNING You are a using release

随机推荐

  • Drupal Ubercart:多币种?

    将多货币支持集成到 Ubercart 的最安全方法是什么 我找到了这个模块 http drupal org project multicurrency http drupal org project multicurrency但它仍在开发中
  • 使用 iText 从 *.ttf 文件创建字体

    这是我的 Resources class 中的一个方法 public static Font loadFont String fontFileName BaseFont base null try base BaseFont createF
  • XStream 和下划线

    看起来 XStream com thoughtworks xstream gt xstream 1 4 2 正在以一种非常奇怪的方式处理元素和属性名称中的下划线 我需要从客户那里获取并解析其属性中包含下划线的 xml 这是我第一次尝试 XS
  • 使用 Rails 设计首次登录

    如何在自定义会话控制器上确定用户是第一次登录 我希望能够创建会话并重定向到welcome index如果是第一次 否则它将被重定向到root url 我的代码如下 class MysessionsController lt Devise S
  • Java Logger:无法在 logger.properties 文件中设置日志级别

    我有一个使用maven 构建的java 项目 我在用java util logging Logger在我的项目中并想使用logger properties文件 不是命令行 我创建了一个logger properties像这样的文件 hand
  • 如果没有观察到状态,虚拟 DOM 实现与 createDocumentFragment() 有何不同?

    虚拟 DOM 是 DOM 的轻量级副本 在将其插入实际 DOM 之前在本地进行维护 缓存 我们可以根据需要更改它 然后保存到我们真实的 DOM 树中 它使用高效的 diff 算法来来回更新更改和其他用例 这一切都是为了避免直接操作 DOM
  • 使用 API Gateway 处理 AWS Lambda 函数中的错误

    每次我遇到语法错误或者我只想在 AWS Lambda 函数中发送自定义错误时 我都会收到相同的 502 Bad Gateway 响应 内部服务器错误 我尝试了这个简单的代码 module exports saveImage event co
  • 引发了“System.OutOfMemoryException”类型的异常。为什么?

    我有一个动态查询 返回大约 590 000 条记录 第一次运行成功 但再次运行时 我不断收到System OutOfMemoryException 发生这种情况的原因有哪些 错误发生在这里 public static DataSet Get
  • 让 tesseract 只识别数字

    我正在尝试改进我制作的 OCR 程序来读取我正在使用的某个图像的布局 现在 我希望我的 OCR 程序只能识别数字 0 9 我尝试遵循问题的解决方案 限制 tesseract 正在寻找的字符 https stackoverflow com q
  • 更新Cesium回调属性导致实体闪烁

    这是一些可以粘贴到铯沙堡中的代码 它将一个实体添加到地图中 然后每秒更新位置属性的 CallbackProperty 每次更新时实体都会闪烁 var viewer new Cesium Viewer cesiumContainer var
  • 如何使用 Swift 从 URL 获取 HTML 源代码

    我需要查看某个 URL 给出的页面的 HTML 如果我有这个 使用 Swift 获取该 URL 的 HTML 源的最有效和同步的方法是什么 我无法在网上找到一种简洁的方法将其返回到变量中 而不是将其打印在completionHandler
  • React Native,更改 React Navigation 标题样式

    我正在实施反应导航 https reactnavigation org在我的 React Native 应用程序中 我想更改标题的背景和前景色 我有以下内容 Sample React Native App https github com
  • 终结者:如何在拆分窗格中打开选项卡

    每当我尝试创建新选项卡时 它总是在窗口级别打开 我想要实现的是在我正在使用的当前活动拆分窗格中打开一个选项卡 可以这样做吗 我在过去的三四年里一直在使用终结者 但我还没有看到你所要求的可能 话虽这么说 您可以在此处提交功能请求 https
  • Magento - 公共产品页面中的 404 错误

    我有一个 Magento 1 7 网页宽度 2 个不同语言的商店 每个商店的宽度不同 当我为第二个商店启用产品时 第二个商店的公共产品页面停止运行 现在出现了 404 错误 但第一家商店的产品页面仍然表现良好 所有其他页面均正常工作 htt
  • 无法从命令行运行 swing

    我使用Windows中的命令行来编译然后执行我的java程序 我去了http java sun com docs books tutorial uiswing start compile html http java sun com doc
  • 对所有当前播放的视频执行一个 AVPlayer 的 AVPlayerItemDidPlayToEndTime 操作

    问题 在有播放器的集合视图单元格中 如果我同时播放两个视频并寻找第一个视频结束然后AVPlayerItemDidPlayToEndTime发射了两次并且两个视频都重新启动 在集合视图单元格中我有 override func awakeFro
  • SQL 到 outfile - 文件存储在哪里? (MySQL、Windows)

    我正在使用 MySQL 并希望将以下查询的结果存储在我的计算机本地的 csv 文件中 SELECT INTO OUTFILE mysqlresults csv FIELDS TERMINATED BY OPTIONALLY ENCLOSED
  • 当给定这个模式与整数值匹配时,为什么 scala 会抱怨?

    Goal 编写一个函数 生成一个排除指定字符 由索引标识 的新字符串 Example takeAllExcept 0 abc 回报bc takeAllExcept 1 abc 回报ac takeAllExcept 2 abc 回报ab 我最
  • Visual Studio 2010 - 推荐的扩展[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 启动时加载 FastAPI 项目中的模型

    所以我目前正在开发一个为多种 NLP 服务提供服务的 FastAPI 项目 为此 我想提供来自 spacy 和 Huggingface 的不同模型 自从那些模型相当大的推理时间为每个发布请求加载模型相当长 我的想法是在 FastAPI 启动