python - 如何在 Python 脚本的执行过程中以复杂变量的形式(有效地)将大数据缓存在内存中?
问题描述
我正在尝试(从Java Spring beans)调用包含训练有素的神经网络的Python Pytorch脚本以供使用:我的Pytorch神经网络是接受状态,对其进行编码并返回动作,解码所有这些都根据学习/训练政策。
所以 - 每次我试图调用 Python 脚本时,我都应该构建 torch.nn,从一些外部存储(数据库、文件)加载权重和偏差,然后执行这个 nn 以获得单一答案,这是非常昂贵的操作。
如何将 torch.nn 实例(带有加载的权重和偏差)保留在内存中,并使其在每次 Python 脚本执行时立即可用?
Memcached 不是解决方案,因为它只能保留字符串或二进制值,并且序列化和反序列化 torch.nn 实例非常昂贵。一个建议是 Tensorflow Serving,我目前正在研究它,所以 - 我还不知道这是否是答案。
Tensorflow 很可能有一些我也可以用于 Pytroch 的缓存技术?
解决方案
如果我正确理解您的用例,您需要的是一个模型服务器,它可以保持模型加载,并且理想情况下还可以处理来自不正确数据的任何异常。
将推理脚本转换为类似 tensorflow 服务的可调用服务的一种相当直接的方法是 python 库flask。另一种方法似乎是一个名为torchserve的新工具。
推荐阅读
- javascript - 删除部分网页 URL 或简单地重定向到 Tampermonkey 中更改的 URL 的方法?
- c++ - 变量在使用赋值语句赋值后恢复为先前的值
- reactjs - React Context 的范围是什么?
- android - 如何以编程方式更改 RecyclerView 的 fastScrollEnabled 属性?
- sql - Oracle 将多行转置为列,以便每个组的数据彼此相邻可见
- regex - Make regex quantifier length depend on previous capture group
- react-native - React Native 项目没有与 FlatList 正确分层
- javascript - 如何检查瓦片是否已经用 JavaScript 中的值填充?
- python - 在 Groupby 之后将两个数据框列除以订购时间
- terraform - 如何在 terraform 状态文件中填充新的输出变量?