如何比较在不同基础设施上运行的实验

数据挖掘 大数据 效率 表现 可扩展性 分散式
2021-10-07 11:54:33

我正在开发一种分布式算法,为了提高效率,它既依赖于磁盘数量(每台机器一个),也依赖于有效的负载平衡策略。有了更多的磁盘,我们就可以减少花在 I/O 上的时间;并且通过有效的负载平衡策略,我们可以在没有太多数据复制开销的情况下分配任务。

有许多关于处理相同问题的文献的研究,并且每个研究都运行不同的实验来评估他们的提议。一些实验是特定于所提出的策略的,而其他一些实验,如弱扩展(可扩展性)和强扩展(加速),对所有工作都是通用的。

问题是实验通常在完全不同的基础设施(磁盘、处理器、# 机器、网络)上执行,并且根据评估的内容,它可能会引发错误/不公平的比较。例如,如果我的应用程序在 10 台具有 Infiniband 连接的机器上运行,我可能会获得 100% 的加速,而如果我的连接是以太网,我可以获得相同甚至更差的结果。

那么,如何诚实地比较不同的实验来指出效率提升呢?

3个回答

这是一个很好的问题,也是一种常见的情况。

在我看来,必须控制三个不同的因素:

  • 数据:已经存在不同的基准来评估算法和架构。这些数据必须公开,以便每个人都可以对比他们的方法。
  • 架构:我的建议是在云上测试一切,这样每个人都可以对比他们的结果,而且毫无疑问使用相同的机器和软件。
  • 算法:如果您开发了一种分布式算法,最好将您的算法与特定数据进行比较。在这种情况下,算法不得公开。

因此,回答您的问题,如果您想比较不同的实验并说明您的分布式算法在多大程度上优于其他算法,您应该尝试尽可能准确地复制进行实验的相同环境(数据和架构)。

如果这是不可能的,我的建议是您使用公共数据和云架构测试您的算法,以便您在促进未来算法的比较时成为参考。

虽然说起来容易,但最好将变化的环境视为变量,根据这些变量描述/估计算法的性能。并希望其他人也会这样做。有趣的是,作为研究验证的实验——我们走得太远了吗?.

以下一般答案是我未受过教育的猜测,因此请谨慎对待。希望这是有道理的。我认为描述或分析实验的最佳方式(通常与任何其他系统一样)是建立他们的统计(多变量)模型并评估它们。根据您的一组实验的环境是由相同的模型还是不同的模型表示,我看到了以下方法

1)单一模型方法。 为所有环境(因变量和自变量、数据类型、假设、约束)定义实验的统计模型。分析它(很可能,使用回归分析)。比较变量的结果,这些变量决定(影响)不同的环境。

2)多模型方法。与上一个案例的步骤相同,但比较不同模型的结果,对应于不同的环境。