标签: tensorflow-serving

Tensorflow服务 - 有状态LSTM

是否有规范的方法来维持Tensorflow服务的有状态LSTM等?

直接使用Tensorflow API这很简单 - 但我不确定在将模型导出到Serving之后如何最好地在调用之间实现持久的LSTM状态.

有什么例子可以实现上述目标吗?回购中的样品非常基本.

lstm tensorflow gated-recurrent-unit tensorflow-serving

9
推荐指数
1
解决办法
828
查看次数

张量流保护程序,导出程序和保存模型之间的关系

问题:

  1. Tensorflow Saver,Exporter,SavedModelBuilder都可以用于保存模型.根据 /sf/ask/2921807101/张量流服务,我知道Saver用于保存训练检查点和Exporter和SavedModelBuilder用于服务.

    但是,我不知道他们的产出的差异.是变量.data - ??? - of - ??? 和SavedModelBuilder生成的variable.index文件与cpkt-xxx.index和cpkt-xxx.data相同 - ??? - of - ??? Saver生成的?

  2. 我仍然对tensorflow的模型文件的含义感到困惑.我读过http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/Tensorflow:如何保存/恢复模式?这让我感到更加困惑.

    模型目录中有4个文件:

    1. graph.pbtxt
    2. model.ckpt-number.data 00000-的-00001
    3. model.ckpt-number.meta
    4. model.ckpt-number.index

    文件2和4存储变量的权重.文件3存储图表.然后1商店是什么?

  3. 如何将Saver的输出转换为SavedModelBuilder.我有检查点目录,并希望导出模型以进行服务.根据https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/saved_model

它应该是这样的

export_dir = ...
...
builder = tf.saved_model.builder.SavedModelBuilder(export_dir)
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph_and_variables(sess,
                                       [tf.saved_model.tag_constants.TRAINING],
                                       signature_def_map=foo_signatures,
                                       assets_collection=foo_assets)
...
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph(["bar-tag", "baz-tag"])
...
builder.save()
Run Code Online (Sandbox Code Playgroud)

所以,我首先需要加载检查点:

saver = tf.train.import_meta_graph('model-number.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))
Run Code Online (Sandbox Code Playgroud)

然后将其sess用于构建器.

我对吗?

tensorflow tensorflow-serving

9
推荐指数
1
解决办法
767
查看次数

当Json请求包含"_bytes"或"b64"时,google cloud ml-engine会做什么?

谷歌云文档(请参阅预测输入中的二进制数据)指出:

必须将编码的字符串格式化为JSON对象,并使用名为b64的单个键.以下Python示例使用base64库对原始JPEG数据的缓冲区进行编码以生成实例:

{"image_bytes":{"b64": base64.b64encode(jpeg_data)}}
Run Code Online (Sandbox Code Playgroud)

在TensorFlow模型代码中,您必须为输入和输出张量命名别名,以便它们以'_bytes'结尾.

我想了解更多有关此过程如何在Google云端运行的信息.

  • ml-engine是否会自动将"b64"字符串之后的任何内容解码为字节数据?

  • 当请求具有此嵌套结构时,它是否仅将"b64"部分传递给服务输入函数并删除"image_bytes"键?

  • 每个请求是单独传递给服务输入函数还是已经批处理?

  • 我们是否在服务输入函数返回的ServingInputReceiver中定义输入输出别名?

我发现无法创建服务输入函数,该函数使用此嵌套结构来定义要素占位符.我只在我的中使用"b64"而且我不确定gcloud ml-engine在接收请求时会做什么.

另外,当在本地使用预测时gcloud ml-engine local predict,发送具有嵌套结构的请求失败,(意外的密钥image_bytes,因为它没有在服务输入函数中定义).但是在预测使用时gcloud ml-engine predict,即使服务输入函数不包含对"image_bytes"的引用,使用嵌套结构发送请求也能正常工作.当忽略"image_bytes"并传入"b64"时,gcloud预测也有效.

服务输入功能的示例

def serving_input_fn():
    feature_placeholders = {'b64': tf.placeholder(dtype=tf.string,
                                                  shape=[None],
                                                  name='source')}
    single_image = tf.decode_raw(feature_placeholders['b64'], tf.float32)
    inputs = {'image': single_image}
    return tf.estimator.export.ServingInputReceiver(inputs, feature_placeholders)
Run Code Online (Sandbox Code Playgroud)

我使用图像给出了示例,但我假设同样适用于作为字节和base64编码发送的所有类型的数据.

有很多stackoverflow问题,其中包含对包含"_bytes"信息片段的需求的引用,但我觉得如果有人可以详细解释一下这些内容会有什么用,那么我就不会如此受欢迎格式化请求时错过.

Stackoverflow关于此主题的问题

gcloud tensorflow-serving google-cloud-ml tensorflow-estimator

9
推荐指数
1
解决办法
943
查看次数

应用TensorFlow Transform来转换/缩放生产中的要素

概观

我按照以下指南编写了TF Records,我曾经在那里tf.Transform预处理我的功能.现在,我想部署我的模型,我需要在真实的实时数据上应用这个预处理功能.

我的方法

首先,假设我有2个功能:

features = ['amount', 'age']
Run Code Online (Sandbox Code Playgroud)

我有transform_fn来自Apache Beam,来自working_dir=gs://path-to-transform-fn/

然后我使用以下方法加载转换函数:

tf_transform_output = tft.TFTransformOutput(working_dir)

我认为在生产中服务的最简单方法是获取一系列处理过的数据,然后调用model.predict()(我使用的是Keras模型).

要做到这一点,我认为transform_raw_features()方法正是我所需要的.

但是,似乎在构建架构之后:

raw_features = {}
for k in features:
    raw_features.update({k: tf.constant(1)})

print(tf_transform_output.transform_raw_features(raw_features))
Run Code Online (Sandbox Code Playgroud)

我明白了:

AttributeError: 'Tensor' object has no attribute 'indices'
Run Code Online (Sandbox Code Playgroud)

现在,我假设发生了这种情况,因为我tf.VarLenFeature()在我定义架构时使用了preprocessing_fn.

def preprocessing_fn(inputs):
    outputs = inputs.copy()

    for _ in features:
        outputs[_] = tft.scale_to_z_score(outputs[_])
Run Code Online (Sandbox Code Playgroud)

我使用以下方法构建元数据:

RAW_DATA_FEATURE_SPEC = {}
for _ in features:
    RAW_DATA_FEATURE_SPEC[_] = tf.VarLenFeature(dtype=tf.float32)
    RAW_DATA_METADATA = dataset_metadata.DatasetMetadata(
    dataset_schema.from_feature_spec(RAW_DATA_FEATURE_SPEC))
Run Code Online (Sandbox Code Playgroud)

所以简而言之,给一本字典:

d = …

python tensorflow tensorflow-serving apache-beam tensorflow-transform

9
推荐指数
1
解决办法
568
查看次数

使用Flask为REST API提供训练有素的Tensorflow模型?

我有一个训练有素的Tensorflow模型,我想用REST API提供预测方法.我能想到的是使用Flask构建一个接收JSON作为输入的简单REST API,然后在Tensorflow中调用predict方法,然后将预测结果返回给客户端.

我想知道是否有任何关注,特别是在生产环境中这样做?

非常感谢!

python rest machine-learning tensorflow tensorflow-serving

8
推荐指数
1
解决办法
3481
查看次数

无法在Docker中使用sudo命令,显示"bash:sudo:command not found"

我使用以下命令"docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel"安装了TensorFlow,我需要在Windows机器上设置TensorFlow服务.我按照" https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/setup.md "中的说明进行操作,并在安装TensorFlow服务依赖项时运行下面提到的sudo命令:

docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
Run Code Online (Sandbox Code Playgroud)

显示以下错误:

sudo apt-get update && sudo apt-get install -y \
     build-essential \
     curl \
     git \
     libfreetype6-dev \
     libpng12-dev \
     libzmq3-dev \
     pkg-config \
     python-dev \
     python-numpy \
     python-pip \
     software-properties-common \
     swig \
     zip \
     zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

sudo docker tensorflow-serving

8
推荐指数
3
解决办法
3万
查看次数

Tensorflow服务测试失败

我正在尝试在Ubuntu上构建Tensorflow服务.我已经从源代码编译了Tensorflow和Tensorflow而没有错误,但是当我运行时:

bazel test -c opt tensorflow_serving/...
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

//tensorflow_serving/model_servers:tensorflow_model_server_test         
TIMEOUT in 315.1s
Run Code Online (Sandbox Code Playgroud)

所有其他测试都通过了.

当我查看日志文件时,我只看到以下内容:

exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Run Code Online (Sandbox Code Playgroud)

我不知道错误是什么,或模型服务器测试失败的原因.

tensorflow-serving

8
推荐指数
1
解决办法
280
查看次数

如何使用tensorflow服务使tensorflow集线器嵌入可用?

我正在尝试使用tensorflow hub的嵌入模块作为可服务.我是tensorflow的新手.目前,我使用Universal Sentence Encoder嵌入作为查找将句子转换为嵌入,然后使用这些嵌入来查找与另一个句子的相似性.

我目前将句子转换为嵌入的代码是:

with tf.Session() as session:
  session.run([tf.global_variables_initializer(), tf.tables_initializer()])
  sen_embeddings = session.run(self.embed(prepared_text))
Run Code Online (Sandbox Code Playgroud)

Prepared_text是一个句子列表.如何使用此模型并使其成为可维护的?

tensorflow word-embedding tensorflow-serving

8
推荐指数
2
解决办法
1748
查看次数

如何为 Tensorflow 服务添加基本身份验证

我目前正在尝试为使用 Tensorflow 的 dnn 预制估计器构建的模型提供 TF 服务。我很高兴看到带有 Tensorflow Serving 1.8 的 Restful API 的发布。

但是,如果我们可以指定包含输入和输出的内容,我看不到如何管理基本身份验证。

预先感谢您的建议。问候。

tensorflow tensorflow-serving

7
推荐指数
0
解决办法
688
查看次数

Op 类型未在二进制中注册“SentencepieceEncodeSparse”

我已经部署了一个模型,该模型使用 tfhub 模型来使用 docker 进行 tensorflow 服务。

这是我的模型中包含的 tfhub 模型:

https://tfhub.dev/google/universal-sentence-encoder-multilingual/1

这是运行docker的命令

docker run -t --rm -p 8501:8501 \
    -v "/docker_dir/model_tf_serving:/models/mymodel" \
    -e MODEL_NAME=mymodel \
    tensorflow/serving &
Run Code Online (Sandbox Code Playgroud)

发生错误:

Not found: Op type not registered 'SentencepieceEncodeSparse' in binary running on c5e507bf091b. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) `tf.contrib.resampler` should be done before importing the graph, as …
Run Code Online (Sandbox Code Playgroud)

tensorflow-serving

7
推荐指数
1
解决办法
2943
查看次数