openvino系列 3. 缓存模型(仅适用于GPU)

openvino系列 3. 修改模型的输入尺寸

环境描述:

  • 本案例运行环境:Win10
  • IDE:VSCode
  • openvino版本:2022.1
  • 代码链接1-openvino-basicworkflow文件夹


缓存模型

对于某些设备,例如 GPU,加载模型可能需要一些时间。 模型缓存通过将模型缓存在缓存目录中来解决此问题。 如果设置了ie.compile_model(model=net, device_name=device_name, config=config_dict),将使用缓存。 此选项检查缓存中是否存在模型。 如果缓存里面有模型,那么系统会从缓存中加载这个模型。 如果没有,系统则定期加载模型,并将其存储在缓存中,以便在下次加载模型时,将从缓存中加载模型。

在下面的简单案例中,我们创建了一个 model_cache 目录作为 model 的子目录,模型将在其中缓存指定设备。 模型将加载到 GPU。运行此单元一次后,模型将被缓存,因此此单元的后续运行将从缓存中加载模型。
需要注意,模型缓存功能不能在CPU设备上适用。

import time
from pathlib import Path
from openvino.runtime import Core, PartialShape

ie = Core()
device_name = "GPU"  # Model Caching is not available for CPU
if device_name in ie.available_devices and device_name != "CPU":
    cache_path = Path("model/model_cache")
    cache_path.mkdir(exist_ok=True)
    # Enable caching for Inference Engine. To disable caching set enable_caching = False
    enable_caching = True
    config_dict = {"CACHE_DIR": str(cache_path)} if enable_caching else {}
    classification_model_xml = "model/classification.xml"
    model = ie.read_model(model=classification_model_xml)

    start_time = time.perf_counter()
    compiled_model = ie.compile_model(model=model, device_name=device_name, config=config_dict)
    end_time = time.perf_counter()
    print(f"Loading the network to the {device_name} device took {end_time-start_time:.2f} seconds.")
else:
    print("Model caching is not available on CPU devices.")
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
1. 缓存穿透:指查询一个不存在的数据,由于缓存中没有,导致请求直接到达数据库。这种情况可能是攻击者恶意攻击,也可能是查询一个不存在的数据。 解决方案:使用布隆过滤器,将已有的数据的哈希值存储在布隆过滤器中,在查询数据时,先判断数据是否存在于布隆过滤器中,如果不存在,直接返回查询失败,避免请求直接到达数据库。 2. 缓存击穿:指缓存中存在的数据,在某个时间点过期时,恰好在这个时间点有大量的请求访问这个数据,导致请求直接达到数据库,造成数据库压力过大。 解决方案:在设置缓存时,给缓存数据设置一个过期时间,同时使用互斥锁(例如Redis的分布式锁)来控制过期时间到达时,只有一个线程去重新生成缓存数据,其他线程等待该线程完成缓存数据的生成。 3. 缓存雪崩:指缓存中的数据集中在某一个时间段内过期失效,导致大量的请求直接到达数据库,造成数据库压力过大。 解决方案:在设置缓存时,给缓存数据设置一个随机的过期时间,避免所有缓存数据在同一时间失效。同时,使用多级缓存架构,例如一级缓存为本地缓存,二级缓存为分布式缓存,三级缓存为数据库,当一级缓存失效时,先从二级缓存中获取数据,如果二级缓存也失效了,再从三级缓存中获取数据。这样可以避免所有缓存数据在同一时间失效,并且减轻数据库的压力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪会有时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值