gpt4 book ai didi

tensorflow - 如何向 tensorflow 服务注册 "custom"Op(实际上,来自 syntaxnet)?

转载 作者:行者123 更新时间:2023-12-01 13:43:32 26 4
gpt4 key购买 nike

我正在尝试提供从 syntaxnet 导出的模型,但 parser_ops 不可用。带有操作的库文件位于(树外):

../models/syntaxnet/bazel-out/local-opt/bin/syntaxnet/parser_ops.so

我目前正在破解 mnist_inference 示例(因为我不知道如何使用 bazel 构建树外的任何东西),我正在运行的命令是:

./bazel-out/local-opt/bin/tensorflow_serving/example/mnist_inference --port=9000/tmp/model/00000001

我得到的错误是:

F tensorflow_serving/example/mnist_inference.cc:208] 检查失败:::tensorflow::Status::OK() == (bundle_factory->CreateSessionBundle(bundle_path, &bundle))(确定与未找到: 操作类型未注册 'FeatureSize')

而且FeatureSize肯定是在parser_ops.so里面定义的,就是不知道怎么加载。

最佳答案

我不太熟悉 TF(我在 Bazel 上工作),但看起来你需要添加 parser_ops 作为 mnist_inference 的依赖项。

有正确的方法和错误的(更简单的)方法。

正确的方法

基本上,您将 syntaxnet 添加为您正在构建的示例的依赖项。不幸的是,语法 net 项目和 tensorflow 服务项目以不同的名称导入 tensorflow 本身,因此您必须对服务 WORKSPACE 文件进行一些处理才能使其正常工作。

将以下内容添加到 tensorflow_serving WORKSPACE 文件中:

local_repository(
name = "syntaxnet",
path = "/path/to/your/checkout/of/models/syntaxnet",
)

这允许您从 tensorflow 项目中引用 syntaxnet 中的目标(通过在它们前面加上“@syntaxnet”)。不幸的是,如上所述,您还必须将 syntaxnet 的所有外部依赖项放入 WORKSPACE 文件中,这很烦人。您可以测试它是否适用于 bazel build @syntaxnet//syntaxnet:parser_ops_cc

完成后,将 cc_library @syntaxnet//syntaxnet:parser_ops_cc(parser_ops.so 是一个 cc_binary,不能用作依赖项)添加到 mnist_inference's deps :

deps = [
"@syntaxnet//syntaxnet:parser_ops_cc",
"@grpc//:grpc++",
...

请注意,这仍然无法正常工作:parser_ops_cc 是 syntaxnet 中的私有(private)目标(因此不能从其包外部依赖它)但您可以向其添加一个属性,例如visibility = ["//visibility:public"] 如果您只是尝试一下:

cc_library(
name = "parser_ops_cc",
srcs = ["ops/parser_ops.cc"],
visibility = ["//visibility:public"]
...

错误的方式

你有一个 .so,你可以为你的二进制文件添加一个 src 文件。添加它所在的目录作为 new_local_repository() 并将其添加到 BUILD 文件中的 srcs

工作区文件:

new_local_repository(
name = "hacky_syntaxnet",
path = "/path/to/syntaxnet/bazel-out/local-opt/bin/syntaxnet",
build_file_content = """
exports_files(glob(["*"])) # Make all of the files available.
""",
)

构建文件:

srcs = [
"mnist_inference.cc",
"@hacky_syntaxnet//:parser_ops.so"
],

关于tensorflow - 如何向 tensorflow 服务注册 "custom"Op(实际上,来自 syntaxnet)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37799563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com