【问题标题】:Run coxph model for large data set with 300 columns( 6 GB ) in H2o sparkling water在 H2o 苏打水中运行具有 300 列(6 GB)的大型数据集的 coxph 模型
【发布时间】:2020-03-23 10:59:12
【问题描述】:

我们正在尝试使用 h2o 运行 coxph 模型,Rsparkling 用于 6 GB 和 300 列的大型数据集,无论我们为 spark 采用什么配置,我们都会遇到内存问题。

根据 h2o,我们应该只有 4 倍数据大小的集群,但我们甚至使用了 128GB 4 个工作节点和 128 个主节点。但仍然是它提出的问题。

请帮助我们选择使用当前数据集运行 h2o 所需的 spark 配置。我们能够为 50,000 条记录运行相同的代码。

我们有 300 列用于 X 和 2 对交互项。偏移列和权重。

您可以在此处找到示例代码,但它没有 300 列。我不知道如何提供完美的输入文件和完整的代码来复制问题。如果您希望查看包含 300 列的实际代码,请告诉我。

`# Load the libraries used to analyze the data
 library(survival)
 library(MASS)
 library(h2o)


 # Create H2O-based model
 predictors <- c("HasPartner", "HasSingleLine", "HasMultipleLines",
            "HasPaperlessBilling", "HasAutomaticBilling", 
 "MonthlyCharges",
            "HasOnlineSecurity", "HasOnlineBackup", "HasDeviceProtection",
            "HasTechSupport", "HasStreamingTV", "HasStreamingMovies")

 h2o_model <- h2o.coxph(x = predictors,
                   event_column = "HasChurned",
                   stop_column = "tenure",
                   stratify_by = "Contract",
                   training_frame = churn_hex)

  print(summary(h2o_model))'

【问题讨论】:

  • 在 Flow 中运行 h2o.coxph 之前,churn_hex 是什么样的? IE。它使用了多少内存,有多少集群内存显示为空闲?因为你说你有 70% 的分类列,实际所需的内存可能与它在磁盘上占用的 6GB 大不相同。

标签: h2o sparkling-water


【解决方案1】:

我会尝试隔离工作负载的不同阶段,甚至在一个 spark 作业中进行任何数据准备,然后在完全没有 spark 的新 JVM 中进行 H2O-3 模型训练。然后,无论哪个阶段导致 OOM,请确保打开 java 级别的 GC 日志记录。

-XX:PrintGCDetails
-XX:PrintGCTimeStamps

获取 GC 日志输出并将其提供给 http://gceasy.io,然后查看曲线的样子。

这会告诉你内存增长是逐渐增长还是突然爆发。

【讨论】:

    【解决方案2】:

    这完全取决于停止列和分层列的基数。我会尝试只使用 32-64GB 内存的单个节点。

    请分享有关数据集的详细信息。

    【讨论】:

    • 我们在 64GB 的单节点上尝试过,但没有成功。
    • 我们还试图提供足够的资源。下面是我们尝试的配置之一 conf$spark.executor.memory
    • 数据集大小为6gb,我们有300列。我们有2500个不同的分层值。超过 70% 的列被视为分类变量。对于示例文件,T_stop 列大约在 0.05 - 7 之间变化。
    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2022-01-23
    相关资源
    最近更新 更多