Detecting and Understanding Real-World Differential Performance Bugs in Machine Learning Libraries
Saeid Tizpaz-Niari, Pavol Cern\'y, Ashutosh Trivedi

TL;DR
This paper introduces a novel differential performance analysis method for identifying, explaining, and fixing performance bugs in machine learning libraries using fuzzing, clustering, and decision trees, leading to practical bug fixes.
Contribution
It presents a new approach combining fuzzing, clustering, and decision trees to detect and explain performance bugs in ML libraries, with real-world bug fixes.
Findings
Outperforms state-of-the-art fuzzers in differential performance input discovery.
Discovered and explained multiple performance bugs in popular ML frameworks.
Reported four previously unknown bugs that have been fixed by developers.
Abstract
Programming errors that degrade the performance of systems are widespread, yet there is little tool support for analyzing these bugs. We present a method based on differential performance analysis---we find inputs for which the performance varies widely, despite having the same size. To ensure that the differences in the performance are robust (i.e. hold also for large inputs), we compare the performance of not only single inputs, but of classes of inputs, where each class has similar inputs parameterized by their size. Thus, each class is represented by a performance function from the input size to performance. Importantly, we also provide an explanation for why the performance differs in a form that can be readily used to fix a performance bug. The two main phases in our method are discovery with fuzzing and explanation with decision tree classifiers, each of which is supported by…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
