mllint - 機器學習項目的林格注意力!此工具不再維護
如下所述,我在2021年2月至10月之間在計算機科學的MSC論文中寫了
mllint。此後,我已經畢業了,現在不再開發或積極地維護此軟件包。
mllint仍然可以使用,因此請隨時使用它!如果您發現任何錯誤,請隨時創建一個問題,我仍然會收到有關新問題的通知,並且很有可能會在業餘時間查看它們,但是我不能保證及時回复或解決您的問題。對於那些對我的MSC論文中產生的研究成果感興趣的人:
- 完整的MSC論文:http://resolver.tudelft.nl/uuid:b20883f8-a921-487a-8a65-89374a1f3867
- 機器學習項目中代碼氣味的普遍性
Bart van Oort,LuísCruz,MaurícioAniche,Arie van Deursen
在Wain 2021(AI Engineering的第一次研討會 - AI的軟件工程)上發布,與ICSE共同列- “項目氣味” - 通過MLLINT分析ML項目的軟件質量的體驗
Bart van Oort,LuísCruz,Babak Loni,Arie Van Deursen
發表於ICSE SEIP 2022
mllint是通過分析項目的源代碼,數據和支持工具的配置來評估機器學習(ML)和人工智能(AI)項目的技術質量(ML)和人工智能(AI)項目的命令行實用程序。 mllint的目的是...
mllint通過衡量項目對ML最佳實踐的遵守,從SE4ML和Google的ML規則中得出,從而實現這一目標。請注意,這些最佳實踐相當高,而mllint目的是向其用戶提供實用,腳踏實地的建議。因此, mllint可能會有些自以為是,因為它試圖提倡特定的工具以最適合這些最佳實踐。但是, mllint旨在僅推薦開源工具和公開可驗證的實踐。反饋當然總是歡迎的!
mllint是在我在Tu Delft的軟件工程研究小組(SERG)的計算機科學碩士學位論文和Fintech Research Lab的ING AI中創建的,涉及機器學習項目中代碼氣味和軟件質量的主題。
有關此示例項目生成的完整報告,請參見
docs/example-report.md。另請參見
mllint-example-projects存儲庫,以探索使用mllint在幾個迭代中測量和提高其項目質量的示例項目的報告。另請參見
mllint的網站,以獲取有關其所有絨布規則和類別的在線文檔。
mllint用於Linux,MacOS和Windows,均為64和32位X86(僅MACOS 64位),以及Linux和MacOS上的64位ARM(Apple M1)。
mllint已發佈到PYPI,因此可以使用pip在全球或當前環境中安裝它:
pip install --upgrade mllint另外,如果您的項目將詩歌用於其依賴關係,則將mllint添加到現有項目中:
poetry add --dev mllint或者如果您的項目使用Pipenv:
pipenv install --dev mllintmllint對其用於分析的幾種Python工具具有軟依賴性。雖然mllint建議您將這些工具放置在項目的開發依賴項中,但這些工具被列為mllint的可選依賴項,並且可以與mllint一起使用:
pip install --upgrade mllint[tools]在bvobart/mllint的Docker Hub上還有mllint DOCKER容器,用於Python 3.6、3.7、3.8和3.9。在CI環境(例如GitLab CI或GitHub動作)中運行mllint時,這些可能特別有用。有關可用的可用標籤的完整列表,請參見Docker Hub。
Docker容器要求將項目與項目一起將文件夾安裝在/app上。假設您的項目位於當前文件夾中,這是如何使用此Docker容器的示例。如果在其他地方,則將$(pwd)替換為項目文件夾的完整路徑。
docker run -it --rm -v $( pwd ) :/app bvobart/mllint:latestmllint旨在在您的個人計算機和CI系統上使用。因此,在項目文件夾中打開終端並運行以下命令之一,或將其添加到項目的CI腳本中。
要在當前文件夾中的項目上運行mllint ,只需運行:
mllint要在另一個文件夾中的項目上運行mllint ,只需運行:
mllint path/to/my-ml-project mllint將分析您的項目,並創建其分析的Markdown格式報告。默認情況下,這將非常印刷到您的終端。
如果您更喜歡將原始標記文本導出到文件中,則在CI, --output或-o標誌上運行並提供文件名時,這可能特別有用。除非使用--force或-f ,否則mllint不會覆蓋目標文件。例如:
mllint --output report.md使用- (dash)作為文件名直接將原始標記打印到您的終端:
mllint -o -在CI腳本中,可以使用這種原始的降價輸出(無論是文件還是印刷到標準輸出),例如對拉/合併請求進行註釋,或在存儲庫上創建Wiki頁面。
有關mllint生成的報告的示例或探索為示例項目生成的報告的示例,請參見DOCS/示例 - report.md。
當然,請隨時探索mllint help以獲取有關其命令的更多信息,並發現可以使用的其他標誌。
mllint通過評估幾類裁剪規則來分析您的項目。每個類別以及每個規則都有一個“ slug”,即,IE是一個較低的文本,帶有破折號或斜線的空間,例如, code-quality/pylint/no-issues 。此slug標識了一條規則,並且通常(如果不是總是)顯示在類別旁邊或所引用的規則。
要列出所有可用(實施)類別和刺激規則,請運行:
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.yml文件或通過項目的pyproject.toml配置mllint 。這使您可以:
有關此類配置文件的示例,請參見下面提供的代碼片段和命令。
要以YAML格式打印mllint的當前配置,請運行(可選地提供項目文件夾的路徑):
mllint config要以YAML格式打印mllint的默認配置,請運行(除非當前目錄中有一個稱為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命令類似,這也匹配部分sl。因此,要禁用有關控制數據版本的所有規則,請使用version-control/data 。
如果未找到.mllint.yml , mllint搜索項目的pyproject.toml [tool.mllint]部分。 TOML具有略有不同的語法,但該結構與YAML文件中的配置相同。
示例pyproject.toml的mllint配置如下。請注意,它與上面的YAML示例相同。
[ tool . mllint . rules ]
disabled = [ " version-control/code/git " , " dependency-management/single " ]雖然mllint是Python ML生態系統的工具,並通過PYPI分發,但實際上是用GO編寫的,並編譯為靜態二進製文件,並以特定於平台的Python Wheels出版。
要從源運行mllint ,請安裝操作系統的最新版本GO,然後克隆此存儲庫並運行go run .在此存儲庫的根部。使用go test ./...或執行test.sh來運行mllint測試的所有測試。
要測試並包裝mllint到當前平台中的Python車輪中,請運行test.package.sh 。