如何与张量流保存的模型预测器并行进行推理?

2024-01-10

张量流版本:1.14

我们当前的设置是使用张量流估计器进行实时 NER,即一次对一个文档进行推理。我们有 30 个不同的字段需要提取,每个字段运行一个模型,因此总共有 30 个模型。

我们当前的设置使用 python 多重处理来并行进行推理。 (推理是在 CPU 上完成的。)这种方法会在每次进行预测时重新加载模型权重。

使用提到的方法here https://guillaumegenthial.github.io/serving-tensorflow-estimator.html,我们将估计模型导出为tf.saved_model。这按预期工作,因为它不会为每个请求重新加载权重。它也适用于一个进程中的单字段推理,但不适用于多处理。当我们执行预测函数时,所有进程都会挂起(predict_fn在链接的帖子中)致电。

这个帖子 https://stackoverflow.com/questions/36610290/tensorflow-and-multiprocessing-passing-sessions相关,但不确定如何使其适应保存的模型。

为每个预测变量单独导入张量流也不起作用:

class SavedModelPredictor():

    def __init__(self, model_path):
        import tensorflow as tf
        self.predictor_fn = tf.contrib.predictor.from_saved_model(model_path)

    def predictor_fn(self, input_dict):
        return self.predictor_fn(input_dict)

怎么做tf.saved_model使用多处理?


Ray Serve是ray的模型服务解决方案,也支持离线批处理。您可以将模型包装在 Ray Serve 的后端中,并将其缩放到您想要的数量副本。

from ray import serve
client = serve.start()

class MyTFModel:
    def __init__(self, model_path):
        self.model = ... # load model

    @serve.accept_batch
    def __call__(self, input_batch):
        assert isinstance(input_batch, list)

        # forward pass
        self.model([item.data for item in input_batch])

        # return a list of response
        return [...]

client.create_backend("tf", MyTFModel, 
    # configure resources
    ray_actor_options={"num_cpus": 2, "num_gpus": 1},
    # configure replicas
    config={
        "num_replicas": 2, 
        "max_batch_size": 24,
        "batch_wait_timeout": 0.5
    }
)
client.create_endpoint("tf", backend="tf")
handle = serve.get_handle("tf")

# perform inference on a list of input
futures = [handle.remote(data) for data in fields]
result = ray.get(futures)

尝试使用夜间轮,以下是教程:https://docs.ray.io/en/master/serve/tutorials/batch.html https://docs.ray.io/en/master/serve/tutorials/batch.html

编辑:更新了 Ray 1.0 的代码示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何与张量流保存的模型预测器并行进行推理? 的相关文章

  • Pandas set_levels,如何避免标签排序?

    我使用时遇到问题set levels多索引 from io import StringIO txt Name Height Age Metres A 1 25 B 95 1 df pd read csv StringIO txt heade
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • 我可以将变量传递给 select 语句作为 SQL Server 中的列名吗?

    这个问题在这里已经有答案了 可能的重复 SQL 根据变量选择动态列名 https stackoverflow com questions 5637983 sql select dynamic column name based on var
  • 当宏以与宏后面的字符串相同的字符结尾时,使 m4 看到宏

    我正在开发一个使用 M4 扩展一些文件的系统 但在某些情况下我遇到了扩展问题 定义 宏命名的约定 如果可能的话我不想改变 是
  • PyStan API 中的变分推理?

    我在其中找不到任何提及变分推理的内容PyStan 文档 https pystan readthedocs org en latest api html 尽管它已添加 http arxiv org abs 1506 03431在斯坦本身 我是
  • 在 mex 上使用整数数组

    我想将一个整数数组从 MATLAB 传递到 C 我尝试过使用 uint64 T 类型 但它总是崩溃 使用 mxGetPr 获取双指针工作正常 但我需要将内容类型转换为整数 并且在每次迭代中这样做可能会很慢 我在 mexFunction 中尝
  • 将 KeyDown 事件(按键)连接到一个 C# (wpf) 字符串

    我有一个磁卡读卡器 它使用键盘输入发送数据 我正在使用 KeyDown 事件来获取此对象 C WPF KeyEventArgs e 我想把我得到的钥匙做成一串 我尝试连接e Key ToString 但这不起作用 我的输入有很多数字和符号
  • 为什么我的 Google Actions Alpha 版本没有出现在 Google Assistant 商店中?

    在我的开发者帐户中 我可以使用模拟器成功测试应用程序 我也成功部署了Alpha版本 等了24小时 但是 那opt in链接不起作用 每次我导航到它时 我都会看到 We can t find what you re looking for a
  • MongoDB - 如何根据部分字符串查找不同的值

    我不确定这是否可能 但我想从 Mongo 不同方法中的 url 获取不同的域名 这是一些示例数据 stuff someValue moreStuff someOtherValue url http mydomain prep com pos
  • django Rest框架中的过滤

    在我的项目中 我使用 django Rest 框架 为了过滤结果 我使用 django filters 后端 有我的代码 模型 py from django db import models class Region models Mode
  • phpMyAdmin 无法在 PHP5.5.8 的 CentOS 6.5 上运行

    我有一台运行 nginx 1 0 15 PHP FPM FastCGI 5 5 8 和 MySQL 5 5 35 的 CentOS 6 5 x64 服务器 我已经安装了 phpMyAdmin 4 1 5 并配置了一个 nginx 虚拟主机
  • Laravel:注册表单打开时会话过期

    我有一个网络应用程序正在以信息亭模式等待笔记本电脑上的用户 有时 注册失败并且用户会看到错误屏幕 我认为是 419 会话已过期 因此 我假设登录屏幕加载两小时后 会话就会过期 我保留了默认值 120 分钟 config session ph
  • 使用 TerminateProcess 终止“mstsc.exe”进程时出现错误代码(5) 访问被拒绝

    我用CreateProcess 使用 mstsc exe 启动 rdp 客户端应用程序的函数 之后 我想终止它 所以我使用TerminateProcess 函数 但它失败 错误代码为 5 如果我用 notepad exe 替换 mstsc
  • 活动管理员允许的参数

    有没有办法从活动管理的 Permit params 块内部判断我是处于创建模式还是编辑模式 当我创建新记录时 我想合并created by和updated by 当我编辑现有记录时 我只想合并updated by 这是我的代码 Active
  • 如何对 Spring @Bean CommandLineRunner 进行单元测试?

    我在一个小型 PoC 中使用 Spring Boot 并且正在尝试测试 Bean 实现 我有这个代码 SpringBootApplication public class Application public static void mai
  • 从R中的alphahull中提取多个多边形

    我正在使用 alphahull 创建地图边界 结果有时是离散的船体 这很好 下面示例中的三个漂亮的集群 我可以使用 igraph 获取离散簇的数量 但我想关闭多边形 并且没有看到将点分配给正确簇的简单方法 我缺少什么 最终我想将对象作为多边
  • MAMP 和 PHP“SSL 操作失败,代码 1”

    EDIT我现在正在出差 iPhone 上的 Stack Exchange 应用程序上只有 SO 因此下面代码中的引号存在一些奇怪的格式 抱歉 我在真实代码中有真实的 两天来我一直在试图解决这个问题 还有一些其他问题 但是 只是想用file
  • Konva 拖拽无需移动拖拽元素

    我的问题是如何拖放形状 但克隆可拖动形状 并将该克隆拖动到可放置形状 我是 Konva 的新手 在查看文档和示例时 我可以找到如何拖放形状 我找到了形状克隆的参考 但我不知道如何做到这一点 如果有人能告诉我方法 我将不胜感激 谢谢 rect
  • 将模型追加到列表中

    我在创建模型列表时遇到问题 假设我已经创建了模型 gt rp lt rpart V41 data learnData method class 如果我直接创建列表 那就可以了 gt ll lt list rp rp rp gt class
  • -webkit-overflow-scrolling touch 不适用于固定元素

    我使用一个额外的样式表 其中包含以下内容来触摸设备 touch overflow x hidden overflow y scroll webkit overflow scrolling touch body overflow x hidd
  • 如何查找文件中特定行的字节位置

    从命令行查找文件中特定行的字节位置的最快方法是什么 e g linepos myfile txt 13 5283 我正在为一个大小为几 GB 的 CSV 编写一个解析器 如果解析器停止 我希望能够从上一个位置恢复 解析器是用 Python
  • 如何与张量流保存的模型预测器并行进行推理?

    张量流版本 1 14 我们当前的设置是使用张量流估计器进行实时 NER 即一次对一个文档进行推理 我们有 30 个不同的字段需要提取 每个字段运行一个模型 因此总共有 30 个模型 我们当前的设置使用 python 多重处理来并行进行推理