论文标题
RELIABUILD:使用主动学习寻找高保真构建
Reliabuild: Searching for High-Fidelity Builds Using Active Learning
论文作者
论文摘要
现代软件非常复杂。典型的应用可能包括数百或数千个可重复使用的组件。自动化的软件包经理可以帮助维持一致的依赖版本集,但最终,这些系统中的求解器依赖于人类产生的约束。在大规模上,小错误加起来,并且越来越难以找到高保真配置。我们无法测试所有配置,因为空间是组合的,因此详尽的探索是不可行的。 在本文中,我们提出了一个自动调整框架Realiabuild,该框架有效地探索了构建配置空间,并了解哪些软件包版本可能会导致成功的配置。我们在Reliabuild中实现了两个模型,以对不同的配置进行排名,并使用自适应采样来选择较少样本的良好配置。我们通过评估了从极端规模的科学软件堆栈(E4S)评估31,186个构建配置,从而证明了Reliabuild的有效性。 Reliabuild有效地选择了良好的配置。例如,Reliabuild选择3X与多个软件包的随机采样相比,包括Abyss,Bolt,Libnrm,OpenMPI。我们的框架还能够选择所有高保真构建的构建,分别是随机采样的一半,例如chai,openMPI,py-petsc4py和slepc所需的样本数量。我们进一步使用该模型来了解有关不同软件包兼容性的统计信息,这将使软件包求解器能够自动更好地选择高保真构建配置。
Modern software is incredibly complex. A typical application may comprise hundreds or thousands of reusable components. Automated package managers can help to maintain a consistent set of dependency versions, but ultimately the solvers in these systems rely on constraints generated by humans. At scale, small errors add up, and it becomes increasingly difficult to find high-fidelity configurations. We cannot test all configurations, because the space is combinatorial, so exhaustive exploration is infeasible. In this paper, we present Reliabuild, an auto-tuning framework that efficiently explores the build configuration space and learns which package versions are likely to result in a successful configuration. We implement two models in Reliabuild to rank the different configurations and use adaptive sampling to select good configurations with fewer samples. We demonstrate Reliabuild's effectiveness by evaluating 31,186 build configurations of 61 packages from the Extreme-scale Scientific Software Stack(E4S). Reliabuild selects good configurations efficiently. For example, Reliabuild selects 3X the number of good configurations in comparison to random sampling for several packages including Abyss, Bolt, libnrm, OpenMPI. Our framework is also able to select all the high-fidelity builds in half the number of samples required by random sampling for packages such as Chai, OpenMPI, py-petsc4py, and slepc. We further use the model to learn statistics about the compatibility of different packages, which will enable package solvers to better select high-fidelity build configurations automatically.