DataRobotのMLflow連携¶
本機能の提供について
DataRobotでのMLflowとの連携はプレビュー機能です。 この機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。
DataRobotのMLflow連携により、MLflowからモデルをエクスポートしてDataRobot モデルレジストリにインポートし、MLflowモデルのトレーニングパラメーター、指標、タグ、アーティファクトから キー値を作成します。
MLflow連携の前提条件¶
DataRobotのMLflow連携には、以下が必要です。
- Python >= 3.9
- DataRobot >= 9.0
この統合ライブラリは、プレビュー版のAPIエンドポイントを使用します。APIトークンに関連付けられたDataRobotユーザーは、DataRobotのモデルパッケージに対してオーナーまたはユーザーの権限を持っている必要があります。
DataRobotのMLflow連携をインストールする¶
datarobot-mlfow
連携はpip
でインストールできます。
pip install datarobot-mlflow
Azureで連携を実行している場合は、次のコマンドを使用します。
pip install "datarobot-mlflow[azure]"
コマンドラインオプションの設定¶
drflow_cli
では、次のコマンドライン操作を使用できます。
オプション | 説明 |
---|---|
--mlflow-url |
MLflow追跡URLを定義します。(例:
|
--mlflow-model |
MLflowモデル名を定義します("cost-model" など)。 |
--mlflow-model-version |
MLflowモデルバージョンを定義します("2" など)。 |
--dr-url |
DataRobotインスタンスのメインURLを提供します(https://app.datarobot.com など)。 |
--dr-model |
キー値アップロードでの登録済みモデルのIDを定義します(64227b4bf82db411c90c3209 など)。 |
--prefix |
DataRobotにインポートされたすべてのキー値の名前の前に追加する文字列を指定します。 デフォルト値は空です。 |
--debug |
Pythonログレベルをlogging.DEBUG に設定します。 デフォルトのレベルはlogging.WARNING です。 |
--verbose |
以下のプロセス中に情報を標準出力に出力します。
|
--with-artifacts |
MLflowモデルアーティファクトを/tmp/model にダウンロードします。 |
--service-provider-type |
validate-auth のサービスプロバイダーを定義します。 AzureのDatabricks MLflowでサポートされている値はazure-databricks です。 |
--auth-type |
validate-auth の認証タイプを定義します。 Azureサービスプリンシパルでサポートされている値はazure-service-principal です。 |
--action |
DataRobotでMLflow連携を実行する操作を定義します。 |
--action
オプションでは、次のコマンドライン操作を使用できます。
アクション | 説明 |
---|---|
sync |
パラメーター、タグ、指標、アーティファクトを、MLflowモデルからキー値としてDataRobotモデルパッケージにインポートします。 このアクションには--mlflow-url 、--mlflow-model 、--mlflow-model-version 、--dr-url および--dr-model が必要です。 |
list-mlflow-keys |
MLflowモデルのパラメーター、タグ、指標、アーティファクトを一覧表示します。 このアクションには--mlflow-url 、--mlflow-model および--mlflow-model-version が必要です。 |
validate-auth |
トラブルシューティングのために、Azure ADサービスプリンシパルの資格情報を検証します。 このアクションには--auth-type と--service-provider-type が必要です。 |
環境変数の設定¶
上記のコマンドラインオプションに加えて、ユースケースに必要な環境変数も指定する必要があります。
環境変数 | 説明 |
---|---|
MLOPS_API_TOKEN |
DataRobot APIキー(DataRobot 開発者ツールにあります)。 |
AZURE_TENANT_ID |
Azure PortalにあるAzure Databricks MLflowインスタンスのAzureテナントID。 |
AZURE_CLIENT_ID |
Azure PortalにあるAzure Databricks MLflowインスタンスのAzureクライアントID。 |
AZURE_CLIENT_SECRET |
Azure PortalにあるAzure Databricks MLflowインスタンスのAzureクライアントシークレット。 |
export
を使用して、ユースケースに必要な情報をこれらの環境変数に定義できます。
export MLOPS_API_TOKEN="<dr-api-key>"
export AZURE_TENANT_ID="<tenant-id>"
export AZURE_CLIENT_ID="<client-id>"
export AZURE_CLIENT_SECRET="<secret>"
同期アクションを実行して、MLflowからDataRobotにモデルをインポートする¶
上で定義したコマンドラインオプションとアクションを使用して、MLflowからMLflowモデル情報をエクスポートし、DataRobotのモデルレジストリにインポートできます。
DR_MODEL_ID="<MODEL_PACKAGE_ID>"
env PYTHONPATH=./ \
python datarobot_mlflow/drflow_cli.py \
--mlflow-url http://localhost:8080 \
--mlflow-model cost-model \
--mlflow-model-version 2 \
--dr-model $DR_MODEL_ID \
--dr-url https://app.datarobot.com \
--with-artifacts \
--verbose \
--action sync
このコマンドが正常に実行されると、登録されているモデルバージョンのキー値タブにMLflow情報が表示されます。
さらに、キー値タブのアクティビティログでは、キー値作成イベントのレコードを表示できます。
Azure ADサービスプリンシパルの資格情報のトラブルシューティング¶
トラブルシューティングのためにAzure ADサービスプリンシパルの資格情報を検証するには、以下のコマンドライン例を利用できます。
export MLOPS_API_TOKEN="n/a" # not used for Azure auth check, but the environment variable must be present
env PYTHONPATH=./ \
python datarobot_mlflow/drflow_cli.py \
--verbose \
--auth-type azure-service-principal \
--service-provider-type azure-databricks \
--action validate-auth
必要な環境変数を設定していない場合、このコマンドで次の出力を生成する必要があります。
Required environment variable is not defined: AZURE_TENANT_ID
Required environment variable is not defined: AZURE_CLIENT_ID
Required environment variable is not defined: AZURE_CLIENT_SECRET
Azure AD Service Principal credentials are not valid; check environment variables
このエラーが表示された場合は、必要なAzure ADサービスプリンシパルの資格情報を環境変数として指定します。
export AZURE_TENANT_ID="<tenant-id>"
export AZURE_CLIENT_ID="<client-id>"
export AZURE_CLIENT_SECRET="<secret>"
Azure ADサービスプリンシパルの資格情報の環境変数が定義されると、以下の出力が表示されます。
Azure AD Service Principal credentials are valid for obtaining access token