标签: tensorflow-serving

如何修复“bind”类型的无效挂载配置:源路径必须是 Windows docker 容器中的目录?

我有一个 keras 模型(Windows Spyder IDE)并保存用于张量流服务,并按照https://www.youtube.com/watch?v=CUpUPY5g8NE中的步骤进行部署。

我正在使用 docker-for-windows 并运行 Windows 容器(因此 docker 中没有共享驱动器设置)

我拉了 TF 服务并使用参数运行 docker

> docker pull tensorflow/serving

> docker run -t --rm -d -p 8500:8500 -p 8501:8501 --name tf_model --mount type=bind,source=$LOCALMODELDIR/tf_model,target=/models/mymodel --mount type=bind,source=$LOCALMODELDIR/models.config,target=/models/models.config -e MODEL_NAME=mymodel tensorflow/serving --model_config_file=/models/models.config
Run Code Online (Sandbox Code Playgroud)

我跑到 docker 中的错误为

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid mount config for type "bind": source path must be a directory.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)

我可以知道任何修复吗?

docker tensorflow tensorflow-serving docker-for-windows

5
推荐指数
1
解决办法
9936
查看次数

keras预处理逻辑

背景:

\n\n

在 GCP 上的视觉应用程序中,我们使用 TF 服务。使用 TF Serving 的应用程序是用 Go 编写的。该应用程序将图像转换为 Tensor,并使用 gRPC 将其发送到 TF 服务。

\n\n

问题:

\n\n

Golang 中的预处理逻辑不像 Python 中那样工作,使用 Keras 图像库(推理的准确性受到影响)。部分原因可能是训练期间使用了 Python 库。

\n\n

我们尝试了,

\n\n

Tensorflow 服务提供了一种引入可在服务容器上运行的预处理器的方法。它的功能似乎有限(无法将 Keras 库与模型打包)。我们尝试了以下两种选择

\n\n

有效的是 Keras 预处理 (Python),在客户端如下。

\n\n
img = tf.keras.preprocessing.image.load_img(file_name, target_size=(HEIGHT, WIDTH))\nimg_array = tf.keras.preprocessing.image.img_to_array(img)\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 grpc 调用 TensorflowServing...

\n\n

我们的目标是使用 \xe2\x80\x9cserving_input_receiver_fn\xe2\x80\x9d 并在 TFServing 空间中预处理图像,如本博客文章中所述: https ://medium.com/devseed/technical-walkthrough-packaging-ml-models -for-inference-with-tf-serving-2a50f73ce6f8

\n\n

但是以下作为 \xe2\x80\x9cserving_input_receiver_fn\xe2\x80\x9d 执行的代码不会产生正确的推论。

\n\n
image = tf.image.decode_image(image_str_tensor, channels=CHANNELS                                       dtype=tf.uint8)\nimage = tf.reshape(image, [HEIGHT, WIDTH, CHANNELS])\n
Run Code Online (Sandbox Code Playgroud)\n\n

我们的目标 …

keras tensorflow-serving

5
推荐指数
1
解决办法
484
查看次数

TensorFlow v2:替换 tf.contrib.predictor.from_saved_model

到目前为止,我正在使用tf.contrib.predictor.from_saved_model加载SavedModeltf.estimator模型类)。然而,不幸的是这个函数在 TensorFlow v2 中被删除了。到目前为止,在 TensorFlow v1 中,我的编码如下:

 predict_fn = predictor.from_saved_model(model_dir + '/' + model, signature_def_key='predict')

 prediction_feed_dict = dict()

 for key in predict_fn._feed_tensors.keys():

     #forec_data is a DataFrame holding the data to be fed in 
     for index in forec_data.index:
         prediction_feed_dict[key] = [ [ forec_data.loc[index][key] ] ]

 prediction_complete = predict_fn(prediction_feed_dict)
Run Code Online (Sandbox Code Playgroud)

使用tf.saved_model.load,我在 TensorFlow v2 中尝试了以下操作,但没有成功:

 model = tf.saved_model.load(model_dir + '/' + latest_model)
 model_fn = model.signatures['predict']

 prediction_feed_dict = dict()

 for key in model_fn._feed_tensors.keys(): #<-- no replacement for …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-serving tensorflow-estimator tensorflow2.0

5
推荐指数
1
解决办法
4816
查看次数

AWS SageMaker TensorFlow Serving - 端点故障 - CloudWatch 日志参考:“NET_LOG:进入事件循环...”

这是我第一次使用 sagemaker 来服务我自己的自定义张量流模型,因此我一直在使用媒体文章来开始:

\n\n

如何为 AWS SageMaker 创建 TensorFlow Serving 容器
\n如何将 Docker 映像推送到 AWS ECS 存储库
\n如何使用 TensorFlow Serving 部署 AWS SageMaker 容器
\n如何使用 TensorFlow Serving 针对 SageMaker 端点进行预测

\n\n

我成功创建了我的服务容器,将其成功推送到 ECR,并从我的 docker 镜像创建了 sagemaker 模型。但是,当我尝试创建端点时,它开始创建,但 3-5 分钟后以失败消息结束:

\n\n
\n

“生产变体 Default 的主容器未通过\n ping 运行状况检查。请检查此端点的 CloudWatch 日志。”

\n
\n\n

失败图片

\n\n

然后我检查了我的云手表日志,看起来像这样......

\n\n

云观察日志

\n\n

...以“NET_LOG:进入事件循环...”结尾

\n\n

我尝试在 google 上搜索更多有关使用 tf-serving 部署 sagemaker 模型的日志消息,但找不到任何有用的解决方案。

\n\n

为了提供更多背景信息,在遇到这个问题之前,我遇到了另外两个问题:

\n\n
\n
    \n
  1. “FileSystemStoragePathSource 遇到文件系统访问错误:\n 找不到基本路径

    <MODEL_PATH>>/<MODEL_NAME>>/ 对于<MODEL_NAME>>”

  2. \n
  3. “在基本路径下找不到可用版本” …

nginx docker tensorflow tensorflow-serving amazon-sagemaker

5
推荐指数
1
解决办法
1355
查看次数

Tensorflow 2.0具体函数structural_input_signature返回值

structured_input_signature在检查tf.ConcreteFunction.

在谷歌文档https://www.tensorflow.org/guide/concrete_function#using_a_concrete_function中返回一个元组。例如

@tf.function
def power(a,b):
  print('Tracing "power"\n')
  return a**b

float_power = power.get_concrete_function(
  a = tf.TensorSpec(shape=[], dtype=tf.float32),
  b = tf.TensorSpec(shape=[], dtype=tf.float32))

print(float_power.structured_input_signature)
print(float_power.structured_outputs)
Run Code Online (Sandbox Code Playgroud)

印刷

Tracing "power"

((TensorSpec(shape=(), dtype=tf.float32, name='a'), TensorSpec(shape=(), dtype=tf.float32, name='b')), {})
Tensor("Identity:0", shape=(), dtype=float32)
Run Code Online (Sandbox Code Playgroud)

然而,当模块被保存和加载时,输出略有不同:

float_power_mod = tf.Module()
float_power_mod.float_power = float_power
tf.saved_model.save(float_power_mod, './float_power_mod')

mod_4 = tf.saved_model.load('./float_power_mod')
float_power_func = mod_4.signatures['serving_default']
print(float_power_func.structured_input_signature)
Run Code Online (Sandbox Code Playgroud)

印刷

((),
 {'a': TensorSpec(shape=(), dtype=tf.float32, name='a'),
  'b': TensorSpec(shape=(), dtype=tf.float32, name='b')})
Run Code Online (Sandbox Code Playgroud)

在 Structured_input_signature 的返回元组中填充元组与字典背后的逻辑是什么?

python tensorflow-serving tensorflow2.0

5
推荐指数
1
解决办法
6916
查看次数

tensorflow_model_server:错误“填充的第一个维度必须是输入的等级[4,2]...”

我正在使用tensorflow_model_server 来提供SavedModel。我不断收到此响应代码 400 和以下错误:

{ "error": "The first dimension of paddings must be the rank of inputs[4,2] [1,1,1,208,770,3]\\n\\t [[{{node Generator/FlatConv/sequential/zero_padding2d/Pad}}]]" }
Run Code Online (Sandbox Code Playgroud)

save-model-cli 的输出显示...

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['__saved_model_init_op']:
  The given SavedModel SignatureDef contains the following input(s):
  The given SavedModel SignatureDef contains the following output(s):
    outputs['__saved_model_init_op'] tensor_info:
        dtype: DT_INVALID
        shape: unknown_rank
        name: NoOp
  Method name is: 

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['input_1'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, -1, -1, 3)
        name: serving_default_input_1:0
  The …
Run Code Online (Sandbox Code Playgroud)

tensorflow-serving

5
推荐指数
1
解决办法
5427
查看次数

KubeFlow 上的 TFServing 和 KFServing 有何不同

TFServin 和 KFServing 都将模型部署在 Kubeflow 上,让用户轻松地将模型作为服务使用,不需要了解 Kubernetes 的详细信息,隐藏了基础层。

  • TFServing 来自 TensorFlow,它也可以在 Kubeflow 上运行或独立运行。kubeflow 上的 TFserving

  • KFServing来自 Kubeflow,可以支持 PyTorch、TensorFlow、MXNet 等多种框架。

我的问题是这两个项目之间的主要区别是什么。

如果我想在生产中启动我的模型,我应该使用哪个?哪个性能更好?

model tensorflow tensorflow-serving kubeflow

5
推荐指数
1
解决办法
1908
查看次数

如何在 TensorFlow 图中正确引发异常

我想tf.errors.InvalidArgumentError根据图形模式(在 TensorFlow 服务中)中的输入张量的值引发异常。

目前我正在使用tf.debugging.assert_all_finite并且效果很好。由于我不是对错误检查做出断言,而是根据输入引发异常,因此最好引发显式异常。

我的问题归结为:

  • 如何有条件地执行不返回张量的代码
  • 如何引发 tf.errors 异常。

这样做的正确方法是什么?

编辑:更多细节。我想在不使用 tf.debugging 的情况下重新创建以下逻辑(除非这实际上是正确的方法)。

目前我正在检查是否存在NaN这样的值:

assert_op = tf.debugging.assert_all_finite(
    input_data,
    'Cant have nans at beginning or end'
)
Run Code Online (Sandbox Code Playgroud)

python python-3.x tensorflow tensorflow-serving tensorflow2.0

5
推荐指数
1
解决办法
3121
查看次数

将多个文件输入Tensorflow数据集

我有以下input_fn.

def input_fn(filenames, batch_size):
    # Create a dataset containing the text lines.
    dataset = tf.data.TextLineDataset(filenames).skip(1)

    # Parse each line.
    dataset = dataset.map(_parse_line)

    # Shuffle, repeat, and batch the examples.
    dataset = dataset.shuffle(10000).repeat().batch(batch_size)

    # Return the dataset.
    return dataset
Run Code Online (Sandbox Code Playgroud)

如果filenames=['file1.csv']或者它很好用filenames=['file2.csv'].它给了我一个错误,如果filenames=['file1.csv', 'file2.csv'].在Tensorflow 文档中,它表示包含一个或多个文件名filenamestf.string张量.我该如何导入多个文件?

以下是错误.它似乎忽略.skip(1)input_fn上面的内容:

InvalidArgumentError: Field 0 in record 0 is not a valid int32: row_id
 [[Node: DecodeCSV = DecodeCSV[OUT_TYPE=[DT_INT32, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, ..., DT_INT32, DT_INT32, …
Run Code Online (Sandbox Code Playgroud)

tensorflow tensorflow-serving tensorflow-datasets tensorflow-estimator

4
推荐指数
1
解决办法
2676
查看次数

如何导出热切的执行模型?

完成我的模型后,我现在希望按照TensorFlow网站上的教程进行导出和部署。但是,没有迹象表明如何在急于执行的情况下执行此操作,因为我无法向提供会话或图形builder.add_meta_graph_and_variables()

是在我的代码需要热切和图形兼容的情况下,还是在我需要保存我的模型,将其导入会话并从中导出的情况下?

tensorflow tensorflow-serving

4
推荐指数
1
解决办法
474
查看次数