MLflowクライアントの互換性

GitLab 15.11 のExperimentリリースでml_experiment_tracking というフラグで導入。デフォルトでは無効。

note
モデル実験のトラッキングは実験的な機能です。フィードバックや機能リクエストはhttps://gitlab.com/gitlab-org/gitlab/-/issues/381660 を参照してください。

MLflowは機械学習実験トラッキングのための有名なオープンソースツールです。GitLabModel experiment trackingはMLflow Clientと互換性があり、実験のログを記録します。セットアップには、既存のコードへの最小限の変更が必要です。

GitLabはMLflowサーバーの役割を果たします。mlflow server を実行する必要はありません。

MLflowクライアントとのインテグレーションを有効にします。

前提条件:

  • 個人プロジェクト、またはグループのアクセストークン、少なくとも開発者ロール、およびapi 権限。
  • プロジェクト ID。プロジェクト ID:
    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. 設定] > [全般]を選択します。

ローカル環境から MLflow クライアントの互換性を使用するには:

  1. コードを実行するホスト上でトラッキング URI とトークン環境変数を設定します。これは、ローカル環境、CI パイプライン、またはリモートホストになります。例えば

    export MLFLOW_TRACKING_URI="<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow"
    export MLFLOW_TRACKING_TOKEN="<your_access_token>"
    
  2. トレーニングコードにmlflow.set_tracking_uri() への呼び出しが含まれている場合、それを削除します。

トレーニングコードを実行すると、MLflowは実験、実行、ログパラメータ、メトリクス、メタデータ、アーティファクトをGitLab上に作成します。

実験が記録された後、それらは/<your project>/-/ml/experiments の下にリストされます。ランは次のように登録されます:

  • モデル候補として登録され、実験を選択して探索することができます。
  • メタデータとして登録されるタグ。

CI/CDジョブへの候補者の関連付け

GitLab 16.1 で導入されました

トレーニングコードがCI/CDジョブから実行されている場合、GitLabはその情報を使って候補者のメタデータを強化することができます。CI/CD ジョブに候補者を関連付けるには:

  1. プロジェクト CI 変数に、以下の変数を含めます:
    • MLFLOW_TRACKING_URI:"<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow"
    • MLFLOW_TRACKING_TOKEN:<your_access_token>
  2. 実行コンテキスト内のトレーニングコードに、以下のスニペットを追加します:

    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モデルレジストリには対応していません。