mllint - Linter для проектов машинного обучения Внимание! Этот инструмент больше не поддерживается
Как подробно описано ниже, я написал
mllintво время моей диссертации MSC в области компьютерных наук в период с февраля по октябрь 2021 года. С тех пор я закончил и теперь больше не разрабатываю или активно поддерживаю этот пакет.
mllintвсе еще работает, так что не стесняйтесь использовать его! Если вы найдете какие -либо ошибки, не стесняйтесь создавать проблему, я все еще получаю уведомления о новых проблемах, и есть большая вероятность, что я посмотрю на них в свободное время, но я не буду гарантировать своевременный ответ или исправление вашей проблемы.Для тех, кто заинтересован в результатах исследования, произведенных в моей диссертации MSC:
- Полный MSC Тезис: http://resolver.tudelft.nl/uuid:b20883f8-a921-487a-8a65-89374a1f3867
- Распространенность запаха кода в проектах машинного обучения
Барт Ван Оорт, Луис Круз, Маурисио Анише, Ари Ван Деурсен
Опубликовано в Wain 2021 (1 -й семинар по искусственному интеллекту - разработка программного обеспечения для ИИ, совместно с ICSE)- «Проект запах» - опыт анализа качества программного обеспечения проектов ML с Mllint
Барт Ван Оорт, Луис Круз, Бабак Лони, Ари Ван Деурсен
Опубликовано на ICSE SEIP 2022
mllint -это утилита командной строки для оценки технического качества проектов машинного обучения (ML) и проектов искусственного интеллекта (AI), написанных на Python, путем анализа исходного кода проекта, данных и конфигурации инструментов поддержки. mllint стремится ...
mllint делает это, измеряя соблюдение проекта к лучшим практикам ML, как собрано и выведено из правил SE4ML и Google для ML. Обратите внимание, что эти лучшие практики довольно высокие, в то время как mllint стремится дать практическим, приземленным советам для его пользователей. Поэтому mllint может быть несколько самоуверенным, поскольку он пытается защищать конкретные инструменты, чтобы наилучшим образом соответствовать этим лучшим практикам. Тем не менее, mllint стремится только рекомендовать инструменты с открытым исходным кодом и общедоступные практики. Обратная связь, конечно, всегда приветствуется!
mllint была создана во время моей диссертации MSC в области компьютерных наук в исследовательской группе по разработке программного обеспечения (SERG) в TU Delft и ING AI для Fintech Research Lab на тему кода запахи и качества программного обеспечения в проектах машинного обучения .
См.
docs/example-report.mdдля полного отчета, сгенерированного для этого примера проекта.См. Также репозиторий
mllint-example-projectsдля изучения отчетов о примере проекта с использованиемmllintдля измерения и улучшения качества своего проекта в течение нескольких итераций.См. Также веб -сайт
mllintдля онлайн -документации всех его правил и категорий.
mllint составлен для Linux, MacOS и Windows, как 64, так и 32-битных x86 (только MacOS 64-бит), а также 64-битная рука на Linux и MacOS (Apple M1).
mllint публикуется в PYPI, поэтому он может быть установлен во всем мире или в вашей текущей среде, используя pip :
pip install --upgrade mllint В качестве альтернативы, чтобы добавить mllint к существующему проекту, если ваш проект использует поэзию для ее зависимостей:
poetry add --dev mllintИли если ваш проект использует Pipenv:
pipenv install --dev mllint mllint имеет мягкую зависимость от нескольких инструментов Python, которые он использует для своего анализа. В то время как mllint рекомендует вам размещать эти инструменты в зависимости разработки вашего проекта, эти инструменты указаны в качестве дополнительных зависимостей mllint и могут быть установлены вместе с mllint с использованием:
pip install --upgrade mllint[tools] Существуют также контейнеры mllint Docker, доступные на Docker Hub в bvobart/mllint для Python 3.6, 3.7, 3.8 и 3.9. Они могут быть особенно полезны при запуске mllint в средах CI, таких как действия Gitlab CI или GitHub. См. Hub Docker для полного списка доступных тегов, которые можно использовать.
Контейнеры Docker требуют, чтобы вы установили папку с вашим проектом на контейнере в качестве громкости /app . Вот пример того, как использовать этот контейнер Docker, предполагая, что ваш проект находится в текущей папке. Замените $(pwd) на полный путь к папке проекта, если это где -то еще.
docker run -it --rm -v $( pwd ) :/app bvobart/mllint:latest mllint разработан для использования как на вашем персональном компьютере, так и на системах CI. Итак, откройте терминал в папке проекта и запустите одну из следующих команд, или добавьте его в сценарий вашего проекта.
Чтобы запустить mllint в проекте в текущей папке, просто запустите:
mllint Чтобы запустить mllint в проекте в другой папке, просто запустите:
mllint path/to/my-ml-project mllint проанализирует ваш проект и создаст отчет о его анализе, форматированном в формате. По умолчанию это будет красиво напечатано на ваш терминал.
Если вы вместо этого предпочитаете экспортировать текст с необработанной маркировкой в файл, который может быть особенно полезен при запуске на CI, флаге --output или -o и предоставит имя файла. mllint не перезаписывает файл назначения, если он уже существует, если не используется --force или -f . Например:
mllint --output report.md Использование - (приборная панель), поскольку имя файла печатает необработанную отметку непосредственно на ваш терминал:
mllint -o -В сценариях CI такой выходной вывод Markdown (как файл или напечатан на стандартный вывод) может использоваться, например, для того, чтобы сделать комментарии по запросам Pull/Merge или созданию страниц вики в вашем хранилище.
См. Docs/Пример-report.md для примера отчета, который генерирует mllint , или изучите те, которые генерируются для примеров проектов.
Конечно, не стесняйтесь изучить mllint help для получения дополнительной информации о его командах и обнаружить дополнительные флаги, которые можно использовать.
mllint анализирует ваш проект, оценивая несколько категорий правил личинга. Каждая категория, а также каждое правило, имеет «слизняк», т.е., с более низким текстом с тисками или чертами для пробелов, например, code-quality/pylint/no-issues . Этот слизняк идентифицирует правило и часто (если не всегда) отображается рядом с категорией или правилом, которое оно ссылается.
Чтобы перечислить все доступные (реализованные) категории и правила снятия, запустите:
mllint list allЧтобы перечислить все включенные правила снятия, запустите (необязательно предоставить путь к папке проекта):
mllint list enabled По умолчанию все правила mllint включены. См. Конфигурацию, чтобы узнать, как избирательно отключить определенные правила.
Чтобы узнать больше о определенном правиле или категории, используйте mllint describe вместе с пульсом категории или правила:
# Describe the Version Control category. This will also list the rules that it checks.
mllint describe version-control
# Use the exact slug of a rule to describe one rule,
# e.g., the rule on DVC usage in the Version Control category
mllint describe version-control/data/dvc
# Use a partial slug to describe all rules whose slug starts with this snippet,
# e.g., all rules about version controlling data
mllint describe version-control/data В качестве альтернативы посетите категории и страницы правил на веб -сайте mllint , чтобы просмотреть последнюю онлайн -документацию этих правил.
Также можно определить свои собственные правила настраивания, внедрив сценарий или программу, которую mllint будет работать при выполнении своего анализа. Эти пользовательские правила должны быть определены в конфигурации mllint . Для получения дополнительной информации о том, как это сделать, см. mllint describe custom или просмотреть документацию в Интернете здесь.
mllint может быть настроен либо с использованием файла .mllint.yml или через pyproject.toml проекта. Это позволяет вам:
См. Фрагменты кода и команды, представленные ниже для примеров таких файлов конфигурации.
Чтобы напечатать текущую конфигурацию mllint в формате YAML, запустите (необязательно предоставить путь к папке проекта):
mllint config Чтобы распечатать конфигурацию по умолчанию mllint в формате YAML, запустите (если в текущем каталоге нет папки, называемой default ):
mllint config default Чтобы создать файл .mllint.yml из конфигурации mllint по умолчанию, запустите:
mllint config default -q > .mllint.yml Пример .mllint.yml , который отключает некоторые правила, выглядит следующим образом:
rules :
disabled :
- version-control/code/git
- dependency-management/single Подобно команде describe , это также соответствует частичным слизнякам. Таким образом, чтобы отключить все правила, касающиеся данных, контролирующих версии, используйте version-control/data .
Если нет .mllint.yml не [tool.mllint] , mllint ищет pyproject.toml в проекте. Toml имеет немного другой синтаксис, но в остальном структура такая же, как конфигурация в файле YAML.
Пример pyproject.toml Configuration of mllint заключается в следующем. Обратите внимание, что он идентичен примеру YAML выше.
[ tool . mllint . rules ]
disabled = [ " version-control/code/git " , " dependency-management/single " ] В то время как mllint является инструментом для экосистемы Python ML и распространяемой через PYPI, он фактически написан в GO, составлена на статический двоичный файл и опубликованную в качестве специфических для платформы колеса Python.
Чтобы запустить mllint из Source, установите последнюю версию Go для вашей операционной системы, затем клонируйте этот репозиторий и запустите go run . в корне этого репозитория. test.sh go test ./... mllint
Чтобы проверить компиляцию и упаковку mllint в колесо Python для вашей текущей платформы, запустите test.package.sh .