mllint - 機械学習プロジェクト用のリナー注意!このツールは維持されなくなりました
以下に詳述したように、2021年2月から10月の間にコンピューターサイエンスの修士論文で
mllintを書きました。その後、卒業しており、このパッケージを開発または積極的に維持していません。
mllintまだ機能しているので、自由に使用してください!バグが見つかった場合は、お気軽に問題を作成してください。新しい問題の通知を受け取り、自由な時間にそれらを見る可能性は十分にありますが、あなたの問題に対するタイムリーな応答や修正は保証されません。私の修士論文で生成された研究出力に興味がある人のために:
- 完全な修士論文:http://resolver.tudelft.nl/uuid:b20883f8-a921-487a-8a65-89374a1f3867
- コードの有病率は、機械学習プロジェクトで臭いがします
バート・ヴァン・オート、ルイス・クルーズ、マウリシオ・アニシェ、アリー・ヴァン・デューサーセン
Wain 2021で公開されています(AI Engineering -Software Engineering for AIの第1ワークショップ、ICSEと共同住宅)- 「プロジェクトの匂い」 - MLLINTでMLプロジェクトのソフトウェア品質を分析する経験
バート・ヴァン・オート、ルイス・クルス、ババク・ロニ、アリー・ヴァン・デューサーセン
ICSE SEIP 2022で公開
mllint 、プロジェクトのソースコード、データ、サポートツールの構成を分析することにより、Pythonで記述された機械学習(ML)および人工知能(AI)プロジェクトの技術的品質を評価するためのコマンドラインユーティリティです。 mllintは...
mllint 、SE4MLとMLのGoogleのルールから収集および推定されたMLベストプラクティスへのプロジェクトの遵守を測定することにより、これを行います。これらのベストプラクティスはかなり高レベルであることに注意してください。Mllint mllint 、ユーザーに実用的で現実的なアドバイスを提供することを目指しています。したがって、 mllint 、これらのベストプラクティスに最適な特定のツールを提唱しようとするため、多少意見を述べられる可能性があります。ただし、 mllint 、オープンソースのツールと公開された実践のみを推奨することを目指しています。もちろん、フィードバックはいつでも大歓迎です!
mllint 、機械学習プロジェクトにおけるコードの匂いとソフトウェア品質のトピックに関するTu DelftのSoftware Engineering Research Group(SERG)およびFintech Research LabのAIのSoftware Engineering Research Group(SERG)のコンピューターサイエンスの修士論文中に作成されました。
この例プロジェクトで生成された完全なレポートについては
docs/example-report.mdを参照してください。
mllint-example-projectsリポジトリも参照して、mllintを使用してプロジェクトの例のレポートを調査し、いくつかの反復にわたってプロジェクトの品質を測定および改善します。すべての糸くずのルールとカテゴリのオンラインドキュメントについては、
mllintのWebサイトも参照してください。
mllint 、Linux、MacOS、およびWindows用にコンパイルされています。64および32ビットx86(MacOS 64ビットのみ)、およびLinuxおよびMacOS(Apple M1)の64ビットアームです。
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]また、Python 3.6、3.7、3.8、および3.9のbvobart/mllintのDocker Hubにあるmllint Dockerコンテナもあります。これらは、GitLab CIやGitHubアクションなどのCI環境でmllint実行する場合に特に役立ちます。使用できる利用可能なタグの完全なリストについては、Dockerハブを参照してください。
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あなたのプロジェクトを分析し、その分析のマークダウン形式のレポートを作成します。デフォルトでは、これは端末にかなり印刷されます。
代わりに、Raw Markdownテキストをファイルにエクスポートすることを好む場合は、CI、 --output 、または-oフラグを実行してファイル名を提供するときに特に役立ちます。 mllint 、 --forceまたは-fが使用されない限り、宛先ファイルが既に存在する場合、宛先ファイルを上書きしません。例えば:
mllint --output report.mdファイル-として(ダッシュ)を使用して、生のマークダウンを端末に直接印刷します。
mllint -o -CIスクリプトでは、このような生のマークダウン出力(ファイルとして、または標準出力に印刷されているかどうか)を使用して、リポジトリにプル/マージのリクエストにコメントするか、wikiページを作成できます。
mllint生成するレポートの例については、プロジェクトのサンプル用に生成されたレポートの例については、docs/example-report.mdを参照してください。
もちろん、 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のWebサイトのカテゴリとルールページにアクセスして、これらのルールの最新のオンラインドキュメントを表示します。
また、 mllint分析を実行している間に実行されるスクリプトまたはプログラムを実装することにより、独自のカスタムリントルールを定義することもできます。これらのカスタムルールは、 mllintの構成で定義する必要があります。これを行う方法の詳細については、 mllint describe customか、ドキュメントをオンラインでご覧ください。
mllint 、 .mllint.ymlファイルを使用して、またはプロジェクトのpyproject.tomlを使用して構成できます。これにより、次のことができます。
このような構成ファイルの例については、以下に記載されているコードスニペットとコマンドを参照してください。
mllintの現在の構成をYAML形式で印刷するには、実行します(オプションではプロジェクトのフォルダーへのパスを提供します):
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 commandと同様に、これは部分的なナメクジも一致します。したがって、バージョン制御データに関するすべてのルールを無効にするには、 version-control/dataを使用します。
.mllint.ymlが見つかった場合、 mllintプロジェクトのpyproject.tomlを[tool.mllint]セクションを検索します。 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 for Your Operating Systemをインストールしてから、このリポジトリをクローンして実行しgo run .このリポジトリのルート。 go test ./...またはtest.shを実行するには、 mllintのすべてのテストを実行します。
現在のプラットフォーム用にコンパイルとパッケージmllint Pythonホイールにテストするには、 test.package.shを実行します。