【发布时间】:2017-08-01 20:01:03
【问题描述】:
我们有一个大小约为 2 GB 的 GLM R 模型。我们正在使用此模型为 REST API 提供服务。我们需要
在高层次上:
为 REST API 提供服务。
在内存中保留数 GB 的模型。
将响应时间保持在 3 秒以下。
我们尝试过但不起作用的东西:
缩小模型的大小。我们的数据科学家说,这是他能做到的。
我在 saveRDS 上尝试过压缩和其他设置。我能做的最好的事情是 12 秒从文件中加载模型。
我们尝试了 Microsoft R Server。所有 Web API 请求都将被重定向到同一个会话。问题是我们必须围绕保持会话活动包装大量代码。即使那样它也会经常剥落。
Microsoft R Server Real Time 已过时,因为它只接受 ScaleR 生成的模型。我知道 ScaleR 有 GLM 功能,但有人告诉我它不是一个选项。
更快的 IO 似乎没有帮助。看来瓶颈是 rData 文件的反序列化。 R 是单线程并没有帮助。
编辑: 问题是 REST API 库/服务的 R 将允许我们在调用之间有状态地将模型保存在内存中。
【问题讨论】:
-
你有什么问题?
-
一个 2 GB GLM :thinking: 我会仔细检查你确定不能把它变小。
-
我认为问题在于 GLM 模型在保存时保留了训练数据的副本。为什么不手动导出系数和分数(即让 API 生成分数)?使用简单的线性模型应该足够简单,因为它只是 y = Beta1 * var1 + Beta2 * var2... 等等。
-
正如另一个响应中提到的,我们想要计算置信区间和概率区间。我们现在正在寻找将这种计算转移到数据库中的方法。