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 。