使用Google App Engine作为机器学习预测引擎

时间:2011-05-12 16:33:39

标签: java google-app-engine

我没有使用Google App Engine的经验,但我是一位非常有经验的Java开发人员。

我有兴趣通过Google App Engine设置REST API,在其中为您提供数据,并使用我单独生成的预测模型进行预测。

构成预测模型的数据可以是从几百千字节到gzip时的几兆字节,在解压缩时可以是几倍。当存储在内存中时,它基本上由10-30个HashMaps组成,每个HashMaps包含从少数条目到数万条条目的任何地方。

在预测过程中,从这些HashMaps中检索数据并以各种方式组合以便得出最终预测。重要的是,尽可能快地实现这一点,以最大限度地减少API的延迟,这就是我希望将HashMaps保留在内存中的原因。

Google App Engine中是否有办法将此数据存储为序列化文件,以便在启动时加载?我意识到我可以将数据存储在数据存储区中的HashMaps中并根据需要检索它们,但我担心这会相当慢,因为典型的预测可能需要从不同的HashMaps中检索30个不同的值。

即使使用Memcache,我担心这会比将数据存储在JVM中的HashMaps中慢得多。

2 个答案:

答案 0 :(得分:2)

此外,Jason建议使用新的Google App Engine后端服务,另一种方法是让Google使用Google Prediction API托管您的预测模型。它通过REST API使您的模型可用,因此您不必自己构建它。点击“Gallery”链接,详细了解如何通过Google托管自己的模型。训练数据使用Google Storage service存储。

答案 1 :(得分:1)

传统上,App Engine实例会被定期杀死,因此您无法在请求之间将HashMaps保留在内存中。

但是,最近发布的Backends功能已取消此限制。

每个后端实例最多可以保留1GB的内存,并且会在请求之间保持不变(尽管它们偶尔也会失败,所以你应该考虑到这一点。)

这可能值得您考虑一下。