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.

Ссылки и действия