- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 TensorFlow 模型部署到 Google AI Platform 以进行在线预测。我遇到了延迟和吞吐量问题。
对于单个图像,该模型在我的机器上运行不到 1 秒(仅使用 Intel Core I7 4790K CPU)。我将它部署到一台配备 8 核和 NVIDIA T4 GPU 的机器上的 AI Platform。
在 AI Platform 上以上述配置运行模型时,如果只发送一张图像,只需不到一秒的时间。如果我开始发送许多请求,每个请求带有一张图片,模型最终会阻塞并停止响应。因此,我改为针对每个请求发送一批图像(从 2 到 10,取决于外部因素)。
问题是我预计批处理的请求在时间上几乎是恒定的。发送 1 张图像时,CPU 使用率约为 10%,GPU 为 12%。所以我预计一批 9 张图像将使用 ~100% 的硬件并同时响应 ~1 秒,但事实并非如此。处理一批 7 到 10 张图像需要 15 到 50 秒。
我已经尝试优化我的模型。我用的是 map_fn
,将其替换为手动循环,从 Float 32 切换到 Float 16,尝试尽可能向量化操作,但仍然处于相同的情况。
我在这里错过了什么?
我正在使用最新的 AI Platform 运行时进行在线预测(Python 3.7、TensorFlow 2.1、CUDA 10.1)。
该模型是 YOLOv4 的大型版本(SavedModel 格式约为 250MB)。我在 TensorFlow 中构建了一些对模型输出进行操作的后处理算法。
最后但同样重要的是,我还尝试使用 TensorBoard 进行调试,结果发现 TensorFlow Graph 的 YOLOv4 部分占用了大约 90% 的处理时间。我希望模型的这个特定部分是高度并行的。
提前感谢您对此提供的任何帮助。请向我询问您可能需要的任何信息,以便更好地理解该问题。
2020-07-13 更新:正如下面评论中所建议的,我也尝试在 CPU 上运行模型,但它真的很慢并且遇到同样的问题与 GPU 相比。它似乎无法并行处理来自单个请求的图像。
此外,我认为由于请求的速率和数量,我在使用 TensorFlow Serving 时遇到了问题。我用了 tensorflow/serving:latest-gpu
本地 Docker 镜像以进一步测试。该模型在我的机器(GeForce GTX 1650)上的回答速度比在 AI 平台上快 3 倍,但它确实与响应时间不一致。我得到以下响应时间 ( <amount of images> <response time in milliseconds>
):
3 9004
3 8051
11 4332
1 222
3 4386
3 3547
11 5101
9 3016
10 3122
11 3341
9 4039
11 3783
11 3294
然后,运行一分钟后,我开始出现延迟和错误:
3 27578
3 28563
3 31867
3 18855
{
message: 'Request failed with status code 504',
response: {
data: { error: 'Timed out waiting for notification' },
status: 504
}
}
最佳答案
在使用AI Platform时遇到和我一样问题的 friend :
如 Google Cloud 团队的评论所述 here , AI Platform 不会一次执行批量实例。不过,他们计划添加该功能。
从那以后,我们已经从 AI 平台转移到托管在 Google Cloud Compute Engine 上的 NVIDIA Triton 推理服务器的自定义部署。我们获得的性能比我们预期的要好得多,而且我们仍然可以对 Triton 提供的模型应用更多优化。
感谢所有试图通过回复此答案来提供帮助的人。
关于服务于 Google AI Platform 在线预测的 TensorFlow 模型对于实例批处理太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62844769/
我试图在文档中找到它,但找不到,我如何从 MacHg 运行 Mercurial 服务器(如终端中的 hg 服务),这可能吗?如果重要的话,我在 Mac 10.6 上。 谢谢。 最佳答案 根据 MacH
我有几个网站要使用相同的 Varnish 实例进行缓存。 我确实使用以下方法设置了后端: if (req.http.host == "time.ikub.al") { # Process th
我尝试在 esp8266 接入点上托管一个 HTML 文件。我可以正确显示 .html 文件。不幸的是,当访问 html 页面时,我的浏览器无法显示 javascript 内容。奇怪的是,当我在我的机
我们正在使用 Apache Camel 2.13.2 创建一个应用程序,用于路由来自不同协议(protocol)的消息。这将是一个服务组件,我们还想嵌入一个简单的 web ui 来监控消息并查看配置。
我有一个由 Django Rest API 提供 Angular 前端的项目。我的项目结构如下。 example.com |- client (holds angular files) |-
我正在尝试将 TensorFlow 模型部署到 Google AI Platform 以进行在线预测。我遇到了延迟和吞吐量问题。 对于单个图像,该模型在我的机器上运行不到 1 秒(仅使用 Intel
将 ASP.NET 网络表单应用程序部署到 IIS 6.0 64 位服务器。一些相关的 DLL 仅在 32 位中可用,所以我在 these 之后启用了 32 位应用程序。指示。起初我无法查看 ASPX
我玩 Java 和 mysql 有一段时间了。但我第一次将它与 Tomcat 一起使用。命令是否相同,因为据我所知,它的命令不起作用。 到目前为止,我已经连接上了,我知道这是因为它用完了我的 mysq
Google 是否也托管这些字体格式?在网站上,我看到它指的是 woff。这是否意味着所有其他格式都必须从本地机器提供? 我想要这样的东西: @font-face { font-family: '
好吧,我一直在尝试使用 nodejs、expressjs 和 socket.io 来创建一些应用程序。但现在我到了我想更进一步的阶段。 我注意到一些 Node 应用程序在其客户端使用 PHP 进行 T
我正在尝试自行托管服务的单例实例,但显然我在间接级别上迷路了... 我有一个基地址 http://localhost:8050/。我不太在意服务端点在哪里,只要它是可预测的。目前,我正在尝试使用 /M
在设计一个应该返回相同数据的不同表示(例如 JSON、XML)的 Web 服务时,您认为什么是最好的方法。 要求是将业务逻辑与编写实际 XML/JSON 响应的部分完全分离,具体取决于 HTTP 请求
我开发了三个基于 Spring 的 Web 应用程序,并部署在我的 Tomcat 8 服务器上。我可以通过以下方式在局域网中访问它们: http://localhost:8080/webapps1 h
https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally建议 three.js 示例由本地服务器提供。 python Simp
我正在 Flask 服务器中使用 Dash 应用程序。 这就是我实例化 Flask 服务器的方式: from flask import Flask, redirect server = Flask(_
我正在使用 TensorFlow 构建一个 CNN 文本分类器,我想在 tensorflow-serving 中加载它并使用服务 api 进行查询。当我在 grcp stub 上调用 Predict(
我在本地但远程服务器上为许多终端提供 MYSQL 服务,这些终端设置为通过 JDBC 连接 Libre Base 前端 服务器是一个运行良好的 Ubuntu 14.04 星号盒,我最近才添加数据库来为
Ruby On Rails 框架包含一些功能,可让您轻松构建公开网络服务 API 的服务器应用程序。例如, Controller 执行以下操作: respond_to :html, :json, :x
我是一名优秀的程序员,十分优秀!