MLflowクライアントの互換性
GitLab 15.11 のExperimentリリースで
ml_experiment_tracking
というフラグで導入。デフォルトでは無効。
MLflowは機械学習実験トラッキングのための有名なオープンソースツールです。GitLabModel experiment trackingはMLflow Clientと互換性があり、実験のログを記録します。セットアップには、既存のコードへの最小限の変更が必要です。
GitLabはMLflowサーバーの役割を果たします。mlflow server
を実行する必要はありません。
MLflowクライアントとのインテグレーションを有効にします。
前提条件:
-
個人、プロジェクト、またはグループのアクセストークン、少なくとも開発者ロール、および
api
権限。 - プロジェクト ID。プロジェクト ID:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定] > [全般]を選択します。
ローカル環境から MLflow クライアントの互換性を使用するには:
-
コードを実行するホスト上でトラッキング URI とトークン環境変数を設定します。これは、ローカル環境、CI パイプライン、またはリモートホストになります。例えば
export MLFLOW_TRACKING_URI="<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow" export MLFLOW_TRACKING_TOKEN="<your_access_token>"
-
トレーニングコードに
mlflow.set_tracking_uri()
への呼び出しが含まれている場合、それを削除します。
トレーニングコードを実行すると、MLflowは実験、実行、ログパラメータ、メトリクス、メタデータ、アーティファクトをGitLab上に作成します。
実験が記録された後、それらは/<your project>/-/ml/experiments
の下にリストされます。ランは次のように登録されます:
- モデル候補として登録され、実験を選択して探索することができます。
- メタデータとして登録されるタグ。
CI/CDジョブへの候補者の関連付け
GitLab 16.1 で導入されました。
トレーニングコードがCI/CDジョブから実行されている場合、GitLabはその情報を使って候補者のメタデータを強化することができます。CI/CD ジョブに候補者を関連付けるには:
-
プロジェクト CI 変数に、以下の変数を含めます:
-
MLFLOW_TRACKING_URI
:"<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow"
-
MLFLOW_TRACKING_TOKEN
:<your_access_token>
-
-
実行コンテキスト内のトレーニングコードに、以下のスニペットを追加します:
with mlflow.start_run(run_name=f"Candidate {index}"): # Your training code # Start of snippet to be included if os.getenv('GITLAB_CI'): mlflow.set_tag('gitlab.CI_JOB_ID', os.getenv('CI_JOB_ID')) # End of snippet to be included
サポートされる MLflow クライアントメソッドと注意事項
GitLabはMLflowクライアントのこれらのメソッドをサポートしています。他のメソッドもサポートされている可能性がありますが、テストはしていません。詳しくはMLflowドキュメントをご覧ください。
方法 | 対応 | 追加バージョン | コメント |
---|---|---|---|
get_experiment | はい | 15.11 | |
get_experiment_by_name | はい | 15.11 | |
set_experiment | はい | 15.11 | |
get_run | はい | 15.11 | |
start_run | はい | 15.11 | (16.3) 名前が提供されない場合、候補者はランダムなニックネームを受け取ります。 |
log_artifact | 注意事項あり | 15.11 | (15.11)artifact_path は空でなければなりません。ディレクトリはサポートしません。 |
log_artifacts | 注意事項あり | 15.11 | (15.11)artifact_path は空でなければなりません。ディレクトリはサポートしません。 |
log_batch | はい | 15.11 | |
log_metric | はい | 15.11 | |
log_metrics | はい | 15.11 | |
log_param | はい | 15.11 | |
log_params | はい | 15.11 | |
log_figure | はい | 15.11 | |
log_image | はい | 15.11 | |
log_text | 注意事項あり | 15.11 | (15.11) ディレクトリをサポートしていません。 |
log_dict | 注意事項あり | 15.11 | (15.11) ディレクトリをサポートしていません。 |
set_tag | はい | 15.11 | |
set_tags | はい | 15.11 | |
set_terminated | はい | 15.11 | |
end_run | はい | 15.11 | |
update_run | はい | 15.11 | |
log_model | 一部 | 15.11 | (15.11) アーティファクトは保存しますが、モデルデータは保存しません。artifact_path は空でなければなりません。 |
制限事項
- GitLabがサポートするAPIはMLflowバージョン1.28.0で定義されたものです。
- 上記以外のAPIエンドポイントはサポートしていません。
- 実験やランの作成中、ExperimentTagsは表示されなくても保存されます。
- MLflowモデルレジストリには対応していません。