  Machine learning in practice often involves complex pipelines for data
cleansing, feature engineering, preprocessing, and prediction. These pipelines
are composed of operators, which have to be correctly connected and whose
hyperparameters must be correctly configured. Unfortunately, it is quite common
for certain combinations of datasets, operators, or hyperparameters to cause
failures. Diagnosing and fixing those failures is tedious and error-prone and
can seriously derail a data scientist's workflow. This paper describes an
approach for automatically debugging an ML pipeline, explaining the failures,
and producing a remediation. We implemented our approach, which builds on a
combination of AutoML and SMT, in a tool called Maro. Maro works seamlessly
with the familiar data science ecosystem including Python, Jupyter notebooks,
scikit-learn, and AutoML tools such as Hyperopt. We empirically evaluate our
tool and find that for most cases, a single remediation automatically fixes
errors, produces no additional faults, and does not significantly impact
optimal accuracy nor time to convergence.
