機械学習およびディープラーニングのトレーニングランのトラッキング
MLflow 追跡コンポーネントを使用すると、機械学習またはディープラーニング モデルのトレーニングに関連するソース プロパティ、パラメーター、メトリクス、タグ、アーティファクトをログに記録できます。MLflow の使用を開始するノートブックの例については、「 チュートリアル: Databricks のエンドツーエンド ML モデル」を参照してください。
エクスペリメントとランを使用したMLflowトラッキング
MLflowトラッキングは、 エクスペリメント と ランという 2 つの概念に基づいています。
注
2024 年 3 月 27 日より、 MLflow 、既存および新規のすべての実行に対する パラメーター、タグ、メトリック ステップ の合計数と、既存および新規のすべての拡張に対する 実行 の合計数にクォータ制限が課せられます。リソース制限を参照してください。 実行あたりの拡張クォータに達した場合、 、Databricks の deleteAPI Python実行 を使用して 不要になった実行を削除することをお勧めします。他のクォータ制限に達した場合、Databricks では、制限内に抑えるためにログ記録戦略を調整することをお勧めします。 この制限を増やす必要がある場合は、ユースケースの簡単な説明、提案された緩和策が機能しない理由、および要求する新しい制限を添えて、Databricks アカウント チームに連絡してください。
MLflow エクスペリメント は、MLflow 実行の組織とアクセス制御の主要な単位です。すべての MLflow 実行はエクスペリメントに属します。 エクスペリメントを使用すると、実行を視覚化、検索、比較したり、他のツールで分析するために実行アーティファクトとメタデータをダウンロードしたりできます。
MLflow の実行は、モデル コードの 1 回 の実行 に対応します。
MLflowトラッキングAPI は、モデルの実行からパラメーター、メトリクス、タグ、および成果物をログに記録します。追跡 API は、MLflow トラッキングサーバーと通信します。 Databricks を使用すると、Databricks でホストされているトラッキングサーバーがデータをログに記録します。 ホストされている MLflow トラッキング サーバーには、Python、Java、および R APIsがあります。
注
機械学習フローは、 Databricks Runtime 機械学習クラスターにインストールされます。 Databricks Runtime クラスターで MLflow を使用するには、 mlflow
ライブラリをインストールする必要があります。クラスターにライブラリをインストールする手順については、「 クラスターにライブラリをインストールする」を参照してください。 MLflow 用にインストールする特定のパッケージは次のとおりです。
Python の場合は、[ライブラリ ソース PyPI] を選択し、[パッケージ] フィールドに
mlflow
と入力します。R の場合は、[ライブラリ ソース CRAN] を選択し、[パッケージ] フィールドに
mlflow
と入力します。Scala の場合は、次の 2 つのパッケージをインストールします。
[ライブラリ ソース Maven]を選択し、[座標]フィールドに
org.mlflow:mlflow-client:1.11.0
を入力します。ライブラリ ソース PyPI を選択し、[パッケージ] フィールドに
mlflow
と入力します。
MLflowのランがログ記録される場所
すべての MLflow の実行はアクティブなエクスペリメントに記録され、次のいずれかの方法で設定できます。
mlflow.set_experiment() コマンドを使用します。
mlflow.start_run() コマンドで
experiment_id
パラメーターを使用します。MLflow 環境変数エクスペリメント またはエクスペリメントのいずれかを設定します。
アクティブなエクスペリメントが設定されていない場合、実行は ノートブックのエクスペリメントに記録されます。
エクスペリメントを実行しているワークスペース以外のワークスペースで、リモートでホストされている MLflow Tracking サーバーにエクスペリメントの結果を記録するには、 mlflow.set_tracking_uri()
を使用してリモート ワークスペースを参照するようにトラッキング URI を設定し、 mlflow.set_experiment()
を使用してリモート ワークスペース内のエクスペリメントへのパスを設定します。
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
エクスペリメントをローカルで実行していて、エクスペリメントの結果を Databricks MLflow Tracking サーバーに記録する場合は、Databricks ワークスペース インスタンス (DATABRICKS_HOST
) と Databricks personal アクセストークン (DATABRICKS_TOKEN
) を指定します。 次に、 mlflow.set_tracking_uri()
を使用してワークスペースを参照するように追跡 URI を設定し、 mlflow.set_experiment()
を使用してエクスペリメントへのパスを設定できます。 DATABRICKS_HOST
環境変数と DATABRICKS_TOKEN
環境変数の値を見つける場所の詳細については、「Databricks 個人用アクセストークン認証の実行」を参照してください。
次のコード例は、これらの値の設定を示しています。
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
ログ記録のサンプル ノートブック
このノートブックでは、実行をノートブック エクスペリメントとワークスペース エクスペリメントに記録する方法を示します。 ノートブック内で開始された MLflow の実行のみをノートブック エクスペリメントに記録できます。 任意のノートブックまたは APIs から起動された MLflow の実行は、ワークスペース エクスペリメントに記録できます。 ログに記録された実行の表示に関する情報については、「ノートブックの表示 エクスペリメント」および「ワークスペースの表示 エクスペリメント」 を参照してください。
Databricks外部からのMLflowトラッキングサーバーへのアクセス
また、MLflow CLI などを使用して、Databricks の外部からトラッキングサーバーへの書き込みと追跡サーバーからの読み取りを行うこともできます。 「 Databricks の外部から MLflowトラッキングサーバーにアクセスする」を参照してください。
MLflowのランをプログラムを使って分析する
MLflow 実行データには、次の 2 つの DataFrame APIsを使用してプログラムでアクセスできます。
MLflow Python クライアント search_runs API は、pandas DataFrameを返します。
MLflow エクスペリメント データソースは、Apache Spark DataFrame を返します。
この例では、MLflow Python クライアントを使用して、時間の経過に伴う評価メトリクスの変化を視覚化し、特定のユーザーによって開始された実行数を追跡し、すべてのユーザーの実行の合計数を測定するダッシュボードを構築する方法を示します。
モデルトレーニングメトリクスと出力が異なる理由
機械学習で使用されるアルゴリズムの多くは、アルゴリズム自体の中にサンプリングやランダムな初期条件などのランダムな要素を持っています。 これらのアルゴリズムのいずれかを使用してモデルをトレーニングすると、同じ条件で実行を開始した場合でも、各実行で結果が同じにならない場合があります。 多くのライブラリは、これらの確率的要素の初期条件を修正するためのシードメカニズムを提供します。 ただし、シードによって制御されない他の変動源があるかもしれません。 一部のアルゴリズムはデータの順序に敏感であり、分散機械学習アルゴリズムもデータのパーティション分割方法の影響を受ける可能性があります。 一般に、この変動は重要ではなく、モデル開発プロセスでは重要ではありません。
順序とパーティション分割の違いによって生じる変動を制御するには、PySpark 関数の再 パーティション と 並べ替えを使用します。