我有一系列以hdf5格式保存的Keras模型(包括结构和权重)。这些模型基于预训练的keras.applications中的DenseNet121,并使用自定义数据集进行了进一步微调。
为了生产使用,我需要将所有这些模型同时加载到内存中。
为了生产使用,我需要将所有这些模型同时加载到内存中。
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
实例上运行此操作。
问题:
- 为什么随着已加载模型数量的增加,加载时间会变长?
- 这是正常现象还是我做错了什么?
- 如何提高整体加载时间?