谷歌云文档(请参阅预测输入中的二进制数据)指出:
必须将编码的字符串格式化为JSON对象,并使用名为b64的单个键.以下Python示例使用base64库对原始JPEG数据的缓冲区进行编码以生成实例:
Run Code Online (Sandbox Code Playgroud){"image_bytes":{"b64": base64.b64encode(jpeg_data)}}在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
我正在ML引擎上训练自定义tensorflow估计器,并遇到以下错误:
The replica master 0 exited with a non-zero status of 11(SIGSEGV)
Run Code Online (Sandbox Code Playgroud)
唯一的其他错误日志是:
Command '['python3', '-m', 'train_model.train', ... ']' returned non-zero exit status -11
Run Code Online (Sandbox Code Playgroud)
不再有追溯,因此我只需要继续执行此“无效的内存引用或分段错误代码 ”。
此SIGSEGV错误并不总是发生。一些培训作业运行没有问题,另一些则在4小时后抛出此错误,而另一些在15分钟后抛出。
我已经对估算器培训代码的各个部分进行了尝试,尝试通过尝试和尝试错误的方法找到原因,但是没有成功。
我以为11代码可以对应于该错误代码在谷歌的API,发现许多人都经历过 OutOfSequence,并OutOfRange在估计使用自定义指标时错误EvalSpec,但我不认为这是在这里造成的错误,因为我使用tf.metric。
我正在使用BASIC扩展层,并查看CPU利用率,它从未超过80%,而内存利用率图显示了大约25%。
我正在缓存tensorflow数据集,但是当不缓存数据集时也会收到此错误。在运行train_and_evaluate方法以及方法时都会发生错误train。
关于如何在培训工作中查找此崩溃的路线原因,有什么建议吗?或导致崩溃的一些常见原因是什么?解决方案是否只是使用更大的内存计算机?