gpt4 book ai didi

python - 在 Keras 中加载模型需要的时间呈指数级增长

转载 作者:行者123 更新时间:2023-12-02 08:10:26 25 4
gpt4 key购买 nike

我有一系列以 hdf5 格式保存的 Keras 模型(包括结构和权重)。这些模型基于预先训练的DenseNet121 from keras.applications ,并使用自定义数据集进行了进一步微调。

对于生产用途,我需要将所有这些模型同时加载到内存中。

from keras.models import load_model

model_names = ['birds', 'cats', 'dogs', 'phones']
models = dict()

for name in model_names:
path = 'models/{}.h5'.format(name)
m = load_model(path)
models[name] = m

加载的模型越多,加载时间似乎会呈指数级增长。指示值是:

  • 加载birds.h5需要 1 分钟
  • 加载 cats.h5 需要 5 分钟
  • 加载 dogs.h5 需要 7 分钟
  • 加载 phones.h5 需要 15 分钟

所有模型都基于相同的结构,每个 h5 文件在磁​​盘上占用 82Mb。我在配备一个 GPU 的 AWS p2.xlarge 实例上运行此程序。

问题:

  • 为什么加载时间随着已加载模型数量的增加而增长?
  • 这是正常现象还是我做错了什么?
  • 如何缩短整体加载时间?

最佳答案

这不是一个经过验证的答案,我在上面的评论中详细介绍了它,供您测试。

Join the 4 models into a single one.

如何做到这一点?

加载它们并一直等待(这仍然不是生产)。

现在:

common_input = Input(compatible_shape)  #assuming all models have similar inputs

outputs = []
for name in models:
outputs.append(models[name](common_input))

common_model = Model(common_input, outputs)

保存此common_model并查看在新 session 中加载需要多长时间。

您可以使用common_model.layers[i]从中检索每个模型。在摘要中查看哪个 i 是哪一层。如果您使用名称定义子模型,则更容易:common_model.get_layer(model_name)

关于python - 在 Keras 中加载模型需要的时间呈指数级增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60607945/

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