首页 > 解决方案 > 如何在 Python 脚本的执行过程中以复杂变量的形式(有效地)将大数据缓存在内存中?

问题描述

我正在尝试(从Java Spring beans)调用包含训练有素的神经网络的Python Pytorch脚本以供使用:我的Pytorch神经网络是接受状态,对其进行编码并返回动作,解码所有这些都根据学习/训练政策。

所以 - 每次我试图调用 Python 脚本时,我都应该构建 torch.nn,从一些外部存储(数据库、文件)加载权重和偏差,然后执行这个 nn 以获得单一答案,这是非常昂贵的操作。

如何将 torch.nn 实例(带有加载的权重和偏差)保留在内存中,并使其在每次 Python 脚本执行时立即可用?

Memcached 不是解决方案,因为它只能保留字符串或二进制值,并且序列化和反序列化 torch.nn 实例非常昂贵。一个建议是 Tensorflow Serving,我目前正在研究它,所以 - 我还不知道这是否是答案。

Tensorflow 很可能有一些我也可以用于 Pytroch 的缓存技术?

标签: pythontensorflowcachingneural-networkpytorch

解决方案


如果我正确理解您的用例,您需要的是一个模型服务器,它可以保持模型加载,并且理想情况下还可以处理来自不正确数据的任何异常。

将推理脚本转换为类似 tensorflow 服务的可调用服务的一种相当直接的方法是 python 库flask。另一种方法似乎是一个名为torchserve的新工具。


推荐阅读