我正在开发一个推荐引擎。我想我无法将整个相似度矩阵保留在内存中。 我计算了 10,000 个项目的相似度,超过 4000 万个 float 。我将它们存储在一个二进制文件中,它变成了 160 MB。
哇! 问题是我可能有近 200,000 件元素。 即使我将它们分成几个组并为每个组创建相似性矩阵,那么我仍然必须在某个时候将它们加载到内存中。 但会消耗大量内存。
那么,有什么办法可以处理这些数据吗?
我应该如何存储它们并加载到内存中,同时确保我的引擎对输入做出相当快的响应?
最佳答案
您可以使用memory mapping访问您的数据。通过这种方式,您可以将磁盘上的数据视为一个大内存区域(并像访问内存一样访问它),区别在于只有您读取或写入数据的页面(临时)加载到内存中。
如果您可以对数据进行某种程度的分组,则在访问数据时只需在内存中读取较小的部分。
对于 float ,如果您可以降低分辨率并将值存储为 16 位整数,那么大小也会减半。
关于recommendation-engine - 我应该如何在推荐引擎中存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479077/