与预测时间不成正比的问题RF中的树木数量

时间:2019-03-04 13:45:41

标签: amazon-sagemaker

我的估算策略包括使用一组随机森林模型,每个模型都涉及一些 数据子集(例如,如果功能== A,则为RF_A)。据说这是为了寻求完整性,因为我认为这不会影响我的问题。

我的部署策略:

    适应:返回一个泡菜,其中包含已拟合的sklearn字典 森林模型
  • 部署:将这些词典加载到内存中。
  • 推论: 1)将每个观察值映射到已经加载的字典中的正确模型 2)对于每个观察,计算每个树给出的预测,以便进行基本置信区间计算 http://blog.datadive.net/prediction-intervals-for-random-forests/ 请注意,此最后一个操作在推理中最耗时,并且时间与我的RF中的树数(循环树)成比例。

我的代码(我在lib中的自定义代码):

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <img class="profile-image" src="demo.png" alt="Profile Image">
  <a class="profile-img-edit upload-button">
    <i class="fas fa-camera"></i> Select Image
    <input class="file-upload" type="file" name="file" size="40" accept=".png, .jpg, .jpeg, .gif">
  </a>
</div>

我的问题:

说我有两种部署方案:一种具有100个树/ RF,另一个具有300个树/ RF。

执行操作没有问题。在S3上:压缩的100棵树/ RF泡菜为261 Mo,压缩的300棵树/ RF泡菜为784 Mo。

部署完成时遇到了一些问题:有些工人已经报告了300棵树/ RF,造成了一些超时,例如awslabs / amazon-sagemaker-examples#556,但是部署到最后。

执行预测:

  • 使用100棵树/ RF大约需要500毫秒,并且观察结果相同
  • 具有300棵树/ RF:在纸上,具有相同的观察结果,由于我的预测性质,这是一个for循环w.r.t.我应该在不到1秒的时间内预测树木。

  • 在实践中使用300棵树/ RF,并具有相同的观察结果: 1)有时(在案例的33%中)在700毫秒内, 2)有时(占病例的33%)在40到50秒内, 3)有时(在33%的情况下)我遇到超时错误(推理超时限制为60秒)

当我在更大/最近的机器中部署时,此行为仍然存在。 (ml.t2.xlarge到ml.c5.4xlarge)

我的猜测是存在内存交换机制,或者在某个阈值之后容器的内存没有完全私下分配给我。

是否有任何解决方案可以对100棵以上的树/ RF进行一致的预测?

谢谢。

问题也在这里报告: https://github.com/aws/sagemaker-python-sdk/issues/681

0 个答案:

没有答案