代码详解:构建一个简单的Keras+深度学习REST API(13)
# classify the input image and then initialize the list
# of predictions to return to the client
preds = model.predict(image)
results = imagenet_utils.decode_predictions(preds)
data["predictions"
= [
...
该代码意味着每次有新请求时都将加载模型 。 这太低效了 , 甚至会导致系统内存耗尽 。
如果尝试运行上面的代码 , 你会注意到API将运行得特别慢(尤其是在模型很大的情况下)——这是由于为每个新请求加载模型的I/O和CPU操作开销太大所致 。
为了了解服务器内存是如何因此轻易崩溃的 , 假设服务器同时收到N个传入请求 。 同样 , 这意味着将有N个模型同时加载到内存中 。 同时 , 如果模型较大(如ResNet) , 那么存储在RAM中的N个模型副本很容易就会耗尽系统内存 。
所以 , 除非你有一个非这样做不可的理由 , 否则请尽量避免为每个新的传入请求加载一个新的模型实例 。
推荐阅读
- 原神|原神:阿贝多有什么用?兼顾副C与辅助,三大作用机制详解
- |《哈利波特: 魔法觉醒》学院活动保护南瓜攻略详解教程
- 碧蓝航线|碧蓝航线SR重巡福煦数据详解 期待越高失望越大 强度平平无奇
- fate grand order|fgo五星降临者梵高强度详解 暴击队最强天拐核心 从此刀刀烈火
- steam|阴阳师铁鼠新皮肤详解 对弈竞猜破产风格 玩家遭遇天台局的现状
- 伊利丹·怒风|魔兽TBC:伊利丹招牌技能,“剪切”机制详解,盾坦闭眼都能抗?
- 假面骑士|假面骑士live腰带官方详解 蝙蝠拔刀和拔枪 加油枪和手持吸尘器
- 神之手|黑暗特利迦裂口双形态能力详解 暴热神之手与闪电高速涡轮冲击
- 射击|魔兽TBC:猎人输出手法,“5511机制”详解,与抽筋宏有何区别?
- 三国志|三国志战略版6套T0天花板共存配置,阵容克制和被克制详解!