tensorflow `tf.saved_model.save()`比`tf.compat.v1.saved_model.loader.load()`慢很多,

qoefvg9y  于 2个月前  发布在  其他
关注(0)|答案(5)|浏览(21)

系统信息

  • 是否编写了自定义代码(与使用TensorFlow提供的库存示例脚本相反):是
  • OS平台和发行版:Ubuntu 18.04.5 LTS
  • 从哪里安装的TensorFlow:二进制文件
  • TensorFlow版本:2.3.2
  • Python版本:3.8.5
  • CUDA/cuDNN版本:11.1.74 / 8.0.5
  • GPU型号和内存:Nvidia Tesla V100-SXM2-32GB
    描述当前行为

要加载使用tf.saved_model.save()保存的tf.Module,tf.saved_model.load()tf.compat.v1.saved_model.loader.load()慢得多(在附加的colab中慢4倍)

描述预期行为

应该大致相同。

独立代码重现问题

https://colab.research.google.com/drive/1baHS4efEYUP_BCvP8OzStMe9zv92vQhs?usp=sharing

其他信息/日志 包括任何有助于解决问题的日志或源代码

我们有严格的延迟要求,需要使用tf.compat.v1.saved_model.loader.load(),从图中提取操作和Tensor以使用session.run()来满足它们。
在TF2.5.0中也观察到了同样的情况。

pxyaymoc

pxyaymoc1#

@jvishnuvardhan ,
我能够在tf v2.4v2.5和nightly中重现这个问题。请在这里找到摘要。

gfttwv5a

gfttwv5a2#

tf.saved_model.save()已被弃用,建议用户从Tensorflow 2.5开始使用model.save()方法保存模型。请参考以下警告信息并进行必要的更改。

您正在保存的对象包含一个或多个Keras模型或层。如果您使用tf.keras.models.load_model加载SavedModel,请继续阅读(否则,您可以忽略以下说明)。请将代码更改为使用tf.keras.models.save_modelmodel.save保存,并确认导出目录中存在文件"keras.metadata"。将来,Keras只会加载具有此文件的SavedModels。换句话说,tf.saved_model.save将不再写入可以恢复为Keras模型的SavedModels(这将在TF 2.5中生效)。

k5hmc34c

k5hmc34c3#

对不起,我不能同意你的观点。tf.saved_model.save() 绝对没有被弃用。
即使在 TF2.9 中,它也没有被弃用:https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/saved_model/save
而且,在指南中也有详细的描述(至少到今天为止):https://www.tensorflow.org/guide/saved_model#saving_a_custom_model

k4aesqcs

k4aesqcs4#

抱歉,造成混淆。你能尝试将 $x_1^m_0^n_1^x$ 替换为 $x_1^m_1^n_1^x$ 吗?因为这是从 Tensorflow 2.5 版本建议的方法,如果你发现有任何令人满意的改进,请告诉我们。谢谢!

以下是示例警告:

$x_1^m_2^n_1^x$

b4lqfgs4

b4lqfgs45#

如描述中提到的,我们没有保存一个Keras模型,而是保存了一个tf.Module。并且tf.Module没有save()方法。这个问题在一年前就已经提出,但没有得到令人满意的答复。我们最近加入了一家使用PyTorch的公司,所以你可以关闭这个问题。

相关问题