中文

为何会出现机器学习笔记本崩溃?对公开 Python Jupyter 笔记本的实证研究

软件工程 2025-08-12 v3

摘要

Jupyter 笔记本已成为数据科学的核心,集成了代码、文本和输出,提供灵活的环境。随着机器学习(ML)的兴起,笔记本越来越多地用于原型设计和数据分析。然而,由于其对复杂 ML 库的依赖以及允许单元格以任意顺序运行的灵活笔记本语义,笔记本容易受软件错误影响,可能导致程序崩溃。本文提出了一项全面的实证研究,聚焦于公开可用的 Python ML 笔记本中的崩溃。我们从 GitHub 和 Kaggle 收集了 64,031 个包含 92,542 个崩溃的笔记本,并手动分析了 746 个崩溃的样本,涵盖崩溃类型和根本原因等多个方面。我们的分析识别出独特的 ML 特定崩溃类型,如张量形状不匹配和违反 API 约束的数据集值错误。此外,我们强调了与笔记本语义相关的独特根本原因,包括超出顺序执行和来自前一个单元格的残留错误,这些因素在以往研究中鲜有被关注。我们还识别出最容易出错的 ML 库,并分析了崩溃在 ML 流水线阶段的分布。我们发现超过 40% 的崩溃源于 API 误用和笔记本特定问题。崩溃经常发生在使用 TensorFlow/Keras 和 Torch 等 ML 库时。此外,超过 70% 的崩溃发生在 ML 流水线的数据准备、模型训练和评估或预测阶段,而数据可视化错误则往往是 ML 笔记本特有的。

关键词

引用

@article{arxiv.2411.16795,
  title  = {Why do Machine Learning Notebooks Crash? An Empirical Study on Public Python Jupyter Notebooks},
  author = {Yiran Wang and Willem Meijer and José Antonio Hernández López and Ulf Nilsson and Dániel Varró},
  journal= {arXiv preprint arXiv:2411.16795},
  year   = {2025}
}