Skip to main content
QUICK REVIEW

[论文解读] Weld: Rethinking the Interface Between Data-Intensive Applications

Shoumik Palkar, James J. Thomas|arXiv (Cornell University)|Sep 14, 2017
Parallel Computing and Optimization Techniques参考文献 12被引用 6
一句话总结

Weld 提出了一种面向数据密集型应用的新接口,通过使用统一的、延迟求值的中间表示(IR),优化跨库数据移动,从而实现跨函数优化(如循环融合与向量化)。它在不更改现有 API 的前提下,使多库工作流的性能最高提升 29 倍,单库流水线的性能最高提升 6.5 倍,通过跨不同库(如 Spark、TensorFlow、Pandas 和 NumPy)的代码优化编译实现。

ABSTRACT

Data analytics applications combine multiple functions from different libraries and frameworks. Even when each function is optimized in isolation, the performance of the combined application can be an order of magnitude below hardware limits due to extensive data movement across these functions. To address this problem, we propose Weld, a new interface between data-intensive libraries that can optimize across disjoint libraries and functions. Weld exposes a lazily-evaluated API where diverse functions can submit their computations in a simple but general intermediate representation that captures their data-parallel structure. It then optimizes data movement across these functions and emits efficient code for diverse hardware. Weld can be integrated into existing frameworks such as Spark, TensorFlow, Pandas and NumPy without changing their user-facing APIs. We demonstrate that Weld can speed up applications using these frameworks by up to 29x.

研究动机与目标

  • 解决由独立优化的库之间过度数据移动导致的数据分析工作负载性能瓶颈。
  • 在不修改现有库 API 的前提下,实现跨库优化(如循环融合与向量化)。
  • 设计一种通用的、与硬件无关的中间表示(IR),以捕获跨多样化工作负载的数据并行计算。
  • 证明在独立开发的库之间进行运行时优化,可实现接近手写优化代码的性能。
  • 通过自动并行化,实现单线程库(如 NumPy 和 Pandas)在并行硬件上的高效执行。

提出的方法

  • Weld 使用基于嵌套并行循环和‘构建器’(builders)的函数式中间表示(IR)——这些抽象指定要计算的结果,而不包含底层实现细节。
  • 库通过延迟求值的运行时 API 提交其计算为 IR 片段,执行被推迟到强制求值时才触发。
  • Weld 优化器将来自多个库的 IR 片段组合起来,并在函数边界应用优化技术,如循环融合、循环分块和向量化。
  • 该系统为多种硬件(包括多核 CPU 和 GPU)生成高效的机器代码,同时保留 Spark SQL 和 NumPy 等库的原生内存数据格式。
  • Weld 通过轻量级包装器与现有框架集成,保持与用户接口的向后兼容性。
  • IR 支持表达关系型、图和机器学习工作负载,使异构数据并行操作之间可实现优化。

实验结果

研究问题

  • RQ1统一的中间表示能否实现单个库无法实现的跨库优化?
  • RQ2延迟求值与 IR 组合在多库数据分析流水线中,能在多大程度上减少数据移动开销?
  • RQ3通用 IR 能否在多样化工作负载中实现与 XLA 或 Hyper 等专用系统相当的性能?
  • RQ4Weld 在同时包含高度优化库和单线程函数的工作负载中,优化效果如何?
  • RQ5Weld 能否在不修改源代码的前提下,自动并行化单线程库(如 NumPy 和 Pandas)?

主要发现

  • Weld 在结合 Spark、TensorFlow、Pandas 和 NumPy 等多个数据密集型库的应用中,最高实现 29 倍性能提升。
  • 即使在仅使用单个库函数的工作流中,Weld 通过最小化数据移动和实现跨优化,最高实现 6.5 倍性能提升。
  • 当自动利用数据并行性对单线程库(如 NumPy 和 Pandas)进行并行化时,Weld 最高实现 180 倍性能提升。
  • 该系统成功与 Spark SQL、TensorFlow、Pandas 和 NumPy 等现有框架集成,且未修改其公共 API。
  • Weld 的优化器在库边界应用循环融合与向量化,减少中间数据物化,提升内存带宽利用率。
  • 中间表示足够通用,可表达关系型、图和机器学习工作负载,同时在多样化硬件平台上实现高性能代码生成。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。