首页 > 解决方案 > Google App Engine 中的推荐模型基础架构

问题描述

我在 GAE 中构建了一个简单的推荐模型,其核心是最大化用户偏好w和其他非选定项目之间的相似性。具体来说,如果Sigma是项目的相似性矩阵:
return argmax_j(sum_i(w_i x Sigma_i_j)),这样w_j = 0

该应用程序应在最多 1-2 秒内通过网站提供新建议。

我的问题与如何组织代码和数据有关,以尽量减少响应时间和内存占用。我目前的设置如下:

  1. Sigma在 Cloud Storage 中作为腌制的 numpy 数组。它是 200-300 Mo,需要 5s 来检索。这显然太慢了。此外,每个新生成的进程都有该文件的副本,并且我的 F4 实例在 3-4 个进程后超出了内存。
  2. w也在云存储中作为腌制的 numpy 数组。它们可能会被移动到数据存储区,但它们需要 < 0.1 秒的时间来检索,所以现在不是什么大问题。

我正在考虑一些解决速度和内存问题的选项:

  1. 在 Redis 内存存储中缓存泡菜。这会提高速度,但我相信每个进程仍然会有一个 200Mo 的文件副本,因此如果产生 > 3-4 个进程,实例将会崩溃。
  2. 在 Compute Engine 中存储和运行矩阵运算,并从 GAE 应用程序中查询。我真的很欣赏 GAE 的 PaaS 价值,我有点不愿意打开 Compute Engine 的潘多拉魔盒。

此类问题的最佳实践是什么?

谢谢

标签: databasegoogle-app-enginerecommendation-engine

解决方案


推荐阅读