我正在开发推荐引擎。我想我无法将整个相似性矩阵保留在内存中。 我计算了10,000个项目的相似性,它超过了4000万个浮点数。我将它们存储在二进制文件中,它变为160 MB。
哇! 问题是我可能有近20万件物品。 即使我将它们聚类成几个组并为每个组创建相似度矩阵,我仍然需要在某些时候将它们加载到内存中。 但它会耗费大量内存。
那么,无论如何都要处理这些数据吗?
我应该如何存储它们并加载到内存中,同时确保我的引擎对输入的响应速度相当快?
答案 0 :(得分:2)
您可以使用memory mapping来访问您的数据。这样,您可以将磁盘上的数据视为一个大内存区域(并像访问内存一样访问它),区别在于只有您读取或写入数据的页面(临时)加载到内存中。
如果您可以稍微分组数据,则在访问数据时只需要在内存中读取较小的部分。
对于浮点数,如果你可以用较低的分辨率进行操作并将值存储为16位整数,那么它的大小也只有一半。