mllint - 기계 학습 프로젝트를위한 Linter 주목! 이 도구는 더 이상 유지 관리되지 않습니다
아래에 자세히 설명 된 바와 같이, 나는 2021 년 2 월에서 10 월 사이에 컴퓨터 과학 분야의 MSC 논문에서
mllint썼습니다. 그 이후로 나는 더 이상이 패키지를 개발하거나 적극적으로 유지하지 못하고 있습니다.
mllint는 여전히 작동하므로 자유롭게 사용하십시오! 버그를 발견하고 자유롭게 문제를 일으키는 경우에도 여전히 새로운 문제에 대한 알림을 받고 자유 시간에이를 볼 가능성이 높지만 문제에 대한 적절한 응답이나 수정을 보장하지는 않습니다.MSC 논문에서 생성 된 연구 결과에 관심이있는 사람들을 위해 :
- 전체 MSC 논문 : http://resolver.tudelft.nl/uuid:b20883f8-a921-487a-8a65-89374a1f3867
- 코드의 유병률은 기계 학습 프로젝트에서 냄새가납니다
Bart van Oort, Luís Cruz, Maurício Aniche, Arie van Deursen
Wain 2021에 게시 (AI 엔지니어링에 관한 1 차 워크숍 - ICSE와 공동으로 배치 된 AI를위한 소프트웨어 엔지니어링)- "프로젝트 냄새" - mllint로 ML 프로젝트의 소프트웨어 품질 분석 경험
Bart van Oort, Luís Cruz, Babak Loni, Arie Van Deursen
ICSE SEIP 2022에서 출판
mllint 프로젝트의 소스 코드, 데이터 및 지원 도구의 구성을 분석하여 Python으로 작성된 ML (Machine Learning) 및 인공 지능 (AI) 프로젝트의 기술 품질을 평가하는 명령 줄 유틸리티입니다. mllint 는 ...
mllint SE4ML 및 Google의 ML 규칙에서 수집 및 추론 된 ML 모범 사례에 대한 프로젝트 준수를 측정함으로써이를 수행합니다. 이러한 모범 사례는 다소 높은 수준이지만 mllint 사용자에게 실용적이고 고요한 조언을 제공하는 것을 목표로합니다. 따라서 mllint 이러한 모범 사례에 가장 잘 맞도록 특정 도구를 옹호하려고 노력하기 때문에 다소 의견이있을 수 있습니다. 그러나 mllint 오픈 소스 툴링 및 공개적으로 검증 가능한 관행 만 권장하는 것을 목표로합니다. 물론 피드백은 항상 환영합니다!
mllint TU DELFT의 SERG (Software Engineering Research Group)에서 Computer Science에서 MSC 논문에서 만들어졌으며 기계 학습 프로젝트의 코드 냄새 및 소프트웨어 품질 에 대한 Fintech Research Lab의 AI의 AI.
이 예제 프로젝트에 대해 생성 된 전체 보고서는
docs/example-report.md참조하십시오.
mllint-example-projects저장소도 참조하여mllint사용하여 예제 프로젝트의 보고서를 탐색하여 여러 반복에 걸쳐 프로젝트 품질을 측정하고 향상시킵니다.모든 줄무늬 규칙 및 카테고리에 대한 온라인 문서는
mllint의 웹 사이트를 참조하십시오.
mllint 는 Linux 및 MacOS (Apple M1)의 64 비트 암뿐만 아니라 64 및 32 비트 X86 (MACOS 64 비트)의 Linux, MacOS 및 Windows 용으로 컴파일됩니다.
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] Python 3.6, 3.7, 3.8 및 3.9의 경우 bvobart/mllint 의 Docker Hub에는 mllint Docker 컨테이너도 있습니다. 이들은 Gitlab CI 또는 GitHub 동작과 같은 CI 환경에서 mllint 실행할 때 특히 도움이 될 수 있습니다. 사용할 수있는 사용 가능한 태그의 전체 목록은 Docker Hub를 참조하십시오.
Docker 컨테이너는 프로젝트와 함께 폴더를 컨테이너에 /app 으로 장착해야합니다. 다음은 프로젝트가 현재 폴더에 있다고 가정 할 때이 Docker 컨테이너를 사용하는 방법의 예입니다. 다른 곳에있는 경우 $(pwd) 프로젝트 폴더의 전체 경로로 바꾸십시오.
docker run -it --rm -v $( pwd ) :/app bvobart/mllint:latest mllint 는 개인용 컴퓨터와 CI 시스템 모두에서 사용되도록 설계되었습니다. 따라서 프로젝트 폴더에서 터미널을 열고 다음 명령 중 하나를 실행하거나 프로젝트의 CI 스크립트에 추가하십시오.
현재 폴더의 프로젝트에서 mllint 실행하려면 간단히 실행하십시오.
mllint 다른 폴더의 프로젝트에서 mllint 실행하려면 간단히 실행하십시오.
mllint path/to/my-ml-project mllint 프로젝트를 분석하고 해당 분석에 대한 Markdown 형식의 보고서를 작성합니다. 기본적으로 이것은 터미널에 꽤 인쇄됩니다.
--output 원시 마크 다운 텍스트를 파일로 내보내는 것을 선호 -o 경우 CI에서 실행할 때 특히 유용 할 수 있으며 파일 이름을 제공합니다. mllint --force 또는 -f 사용되지 않는 한 이미 존재하는 경우 대상 파일을 덮어 쓰지 않습니다. 예를 들어:
mllint --output report.md 파일 이름이 원시 마크 다운을 터미널에 직접 인쇄하여 - (대시) 사용 :
mllint -o -CI 스크립트에서는 이러한 원시 마크 다운 출력 (파일 또는 표준 출력에 인쇄하든)을 사용하여 풀/병합 요청에 대한 의견을 작성하거나 저장소에서 위키 페이지를 만듭니다.
mllint 생성 한 보고서의 예는 Docs/example-report.md를 참조하십시오.
물론, 명령에 대한 자세한 내용을 위해 mllint help 자유롭게 탐색하고 사용할 수있는 추가 깃발을 찾으십시오.
mllint 여러 범주의 라인 규칙을 평가하여 프로젝트를 분석합니다. 각 규칙뿐만 아니라 각 범주에는 '슬러그', 즉 공백을위한 대시 또는 슬래시가있는 '슬러그', 즉 code-quality/pylint/no-issues 있습니다. 이 슬러그는 규칙을 식별하며 종종 (항상 그런 것은 아니더라도) 참조하는 범주 나 규칙 옆에 표시됩니다.
사용 가능한 모든 (구현 된) 카테고리 및 라인 규칙을 나열하려면 실행 :
mllint list all모든 활성화 된 Linting 규칙을 나열하려면 실행 (선택적으로 프로젝트 폴더의 경로 제공) :
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 Yaml 형식으로 mllint 의 기본 구성을 인쇄하려면 run (현재 디렉토리에 default 라는 폴더가없는 한) :
mllint config default mllint 의 기본 구성에서 .mllint.yml 파일을 만들려면 실행 :
mllint config default -q > .mllint.yml 일부 규칙을 비활성화하는 예 .mllint.yml 예.
rules :
disabled :
- version-control/code/git
- dependency-management/single describe 명령과 마찬가지로 이것은 부분 슬러그와도 일치합니다. 따라서 버전 제어 데이터와 관련된 모든 규칙을 비활성화하려면 version-control/data 사용하십시오.
.mllint.yml 찾을 수 없으면 mllint [tool.mllint] 섹션에 대해 프로젝트의 pyproject.toml 검색합니다. TOML은 약간 다른 구문을 가지지 만 구조는 그렇지 않으면 YAML 파일의 구성과 동일합니다.
mllint 의 예제 pyproject.toml 구성은 다음과 같습니다. 위의 YAML 예와 동일합니다.
[ tool . mllint . rules ]
disabled = [ " version-control/code/git " , " dependency-management/single " ] mllint Python ML 생태계를위한 도구이며 PYPI를 통해 배포되지만 실제로 GO에 작성되어 정적 이진으로 컴파일되어 플랫폼 별 Python 휠로 게시됩니다.
소스에서 mllint 실행하려면 최신 버전의 운영 체제를 설치 한 다음이 저장소를 복제하고 go run . 이 저장소의 근본에서. go test ./... 또는 test.sh 실행하여 mllint 의 모든 테스트를 실행하십시오.
현재 플랫폼의 Python Wheel에 mllint 컴파일하고 포장하려면 test.package.sh 실행하십시오.