Analysing Python Machine Learning Notebooks with Moose
2509.11748v1
cs.SE, cs.LG
2025-09-17
Авторы:
Marius Mignard, Steven Costiou, Nicolas Anquetil, Anne Etien
Резюме на русском
## Контекст
Машинное обучение (ML), особенно в контексте ноутбуков, часто страдает от низкого качества кода. Несоблюдение общих правил программирования в Python, неудобная структура ноутбука и недостаточное применение ML-специфических практик, таких как отслеживание истории использования API или тестирование моделей, приводят к значительным проблемам. Ограниченные существующие инструменты способностью контекстуализировать проблемы во всех этих уровнях, что снижает их эффективность в обнаружении и устранении ошибок.
## Метод
Мы предлагаем Vespucci Linter, инструмент статического анализа, основанный на концепции metamodeling. Он позволяет объединить структурные элементы ноутбука с кодом на Python, обеспечивая универсальную архитектуру для проведения контекстуализированного анализа. Инструмент поддерживает 22 правил, основанных на литературе и практике, и содержит возможности для трех уровней анализа: общих практик, структуры ноутбука и ML-специфических аспектов. Мы использовали этот инструмент для анализа 5000 ноутбуков с Kaggle и сравнили результаты с текущими инструментами.
## Результаты
Выявлены проблемы на всех уровнях, что подтвердило эффективность Vespucci Linter. Особое внимание уделяется ML-специфическим проблемам, таким как несоответствия в использовании API и неправильное тестирование моделей. Результаты демонстрируют, что Vespucci Linter может предоставить более глубокий и контекстуальный анализ, чем существующие инструменты.
## Значимость
Vespucci Linter может применяться во всех сферах разработки ML, где используются ноутбуки. В частности, он привносит революционные возможности в ландшафт анализа кода, позволяя разработчикам обнаруживать и устранять ошибки на разных уровнях. Это способствует улучшению качества кода, уменьшению частоты ошибок и повышению надежности ML-моделей.
## Выводы
Выдвигаемый инструмент Vespucci Linter доказывает свою эффективность в контекстуальном анализе ноутбуков. Он может использоваться для улучшения качества разработки ML и обеспечения надежности. Будущие исследования будут фокусироваться на расширении правил анализа и интеграции инструмента с другими средствами разработки.
Abstract
Machine Learning (ML) code, particularly within notebooks, often exhibits
lower quality compared to traditional software. Bad practices arise at three
distinct levels: general Python coding conventions, the organizational
structure of the notebook itself, and ML-specific aspects such as
reproducibility and correct API usage. However, existing analysis tools
typically focus on only one of these levels and struggle to capture ML-specific
semantics, limiting their ability to detect issues. This paper introduces
Vespucci Linter, a static analysis tool with multi-level capabilities, built on
Moose and designed to address this challenge. Leveraging a metamodeling
approach that unifies the notebook's structural elements with Python code
entities, our linter enables a more contextualized analysis to identify issues
across all three levels. We implemented 22 linting rules derived from the
literature and applied our tool to a corpus of 5,000 notebooks from the Kaggle
platform. The results reveal violations at all levels, validating the relevance
of our multi-level approach and demonstrating Vespucci Linter's potential to
improve the quality and reliability of ML development in notebook environments.
Ссылки и действия
Дополнительные ресурсы: