在执行leave one out cross validation和hyper parameter tuning时,我应该在spark rdd中设置多少个分区?

blmhpbnm  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(170)

我有100张唱片 Xy 回归问题在哪里 X 是输入和 y 是目标变量。我要把一个放在外面 LOO 交叉验证,这将是100个训练测试回合。
在每一轮训练测试中,我都使用 GridSearchCV 从scikit学习,根据我想要调整的超参数组合,每个网格搜索(或每个训练测试轮)可以生成数百万次运行。我的回归是标准的东西,比如 LinearRegression 或者 RandomForestRegressor . 包括gridsearchcv在内的许多回归或估计都有这种情况 n_jobs 参数,因为我想最大限度地提高集群利用率,所以设置 n_jobs=-1 在适当的情况下。
我的spark群集有1个驱动程序和10台计算机,总共有11个节点。所有这些节点都在azure中使用标准的\u e64s \u v3。每个都有64个vCPU和432 gib的内存。分区数为640(10 x 64)。当我发布 rdd.glom().collect() 我得到一个非常稀疏的分布。
我的问题是,关于 n_jobs=-1 在算法和网格搜索示例的设置中,我是否应该将rdd重新划分回10以匹配10个工作节点以最大限度地提高利用率?如果我这样做,我推测10个工作节点将有10个折叠,这将是集群的最佳使用,因为在每个工作节点上,只能有1个折叠(train test)执行 n_jobs=-1 .
如果我将其保留为默认值,那么缺点是工作不会均匀地分布在10个工作节点上,因为某些空分区可能在某些工作节点上更常见。同理,训练测试组可能在资源落入属于同一工作节点的分区时争夺资源。
关于如何最好地优化或微调这个问题有什么想法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题