【问题标题】:Fastest way of running GridSearchCV with multiple CPUs使用多个 CPU 运行 GridSearchCV 的最快方法
【发布时间】:2022-01-16 14:24:04
【问题描述】:

我需要使用 4 个不同的分类器执行 GridSearchCV。我拥有 128 个 CPU,可以在不同的会话中使用(2 个会话使用 64CPus,4 个会话使用 32 个 CPU,等等)。

我想问一下有没有什么方法可以知道哪个更快:

  • 使用 128CPus 运行 1 个会话 4 次;
  • 使用 64CPU 并行运行 2 个会话 2 次;
  • 使用 32 个 CPU 并行运行 4 个会话 1 次。

【问题讨论】:

  • 到目前为止,这个问题似乎很理论化。对自己进行基准测试然后在这里讨论结果怎么样?我打赌这会产生更好的结果/答案。
  • 似乎是Predictive benchmarking 问题...

标签: python scikit-learn parallel-processing joblib


【解决方案1】:

鉴于您分享的信息很少且没有任何代码,我对您的回答是:

这取决于许多因素,但要说出最重要的因素,我将重点关注可能造成瓶颈的管道步骤。

例如,假设您的一个步骤是嵌入算法,该算法仅使用 1 个 CPU 转换您的数据,因为并行性是不可能的,而且这是一个需要很长时间的步骤。然后,在这种情况下,一次使用 1 个 CPU 进行 128 个会话实际上会更有益(这是一个更糟糕的情况,因为它需要大量参数定义,但在您的示例中它将是 4 个会话 w/ 32CPU并行1次)

另一方面,如果您的大多数流水线步骤的处理速度非常快(并行与否),但您的分类器是瓶颈,那么您需要利用并行性。在这种情况下,我会说一次使用 1 个会话和 128 个 CPU 会更有益。

我不认为这是你的情况,但另一方面,如果你有非常少量的数据,那么并行性的好处可能会被数据分布的开销操作所抵消。

我会说,您最好使用少量数据(然后再放大一点)来衡量每个步骤需要多长时间,以便在进行完整训练之前掌握所有这些事物的行为方式。

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-11-21
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多