MLflow は、トレーニング実行の追跡、モデルの管理、およびデプロイを行うためのオープンソースの機械学習ライフサイクルプラットフォームです。このトピックでは、RDS PostgreSQL をバックエンドとして使用する ACK Pro クラスターでモデル管理を行うために、MLflow モデルレジストリを設定する方法について説明します。
MLflow モデルレジストリの概要
前提条件
-
Kubernetes 1.20 以降でACK Pro クラスターが作成されている必要があります。
-
RDS PostgreSQL インスタンスが作成されている必要があります。
ACK クラスターと同じ VPC を選択し、内部からアクセスできるようにその CIDR ブロックをホワイトリストに追加することを推奨します。RDS インスタンスと ACK クラスターが異なる VPC にある場合は、パブリックネットワークアクセスを有効にし、ACK クラスターの VPC CIDR ブロックをホワイトリストに追加します。
-
RDS PostgreSQL インスタンスに
mlflowという名前の標準アカウントが作成されている必要があります。 -
RDS PostgreSQL インスタンスに、モデルメタデータ用の
mlflow_storeという名前の データベース が作成されます。アカウントの権限付与 をmlflowアカウントに設定します。 -
(オプション) データベース
mlflow_basic_authは、MLflow 認証データ用に RDS PostgreSQL インスタンスに作成されます。アカウントの権限付与 をmlflowアカウントに設定します。 -
Arena クライアント (バージョン 0.9.14 以降) が設定されている必要があります。
手順 1:ACK クラスターへの MLflow のデプロイ
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
デプロイ をクリックします。デプロイ ページで、アプリケーション名 を
mlflowに、名前空間 をkube-aiに設定します。グラフ でmlflowを検索して選択し、次へ をクリックします。-
AI Suite コンソールを使用するには、デフォルトのリリース名
mlflowを使用してkube-aiNamespace にデプロイします。 -
Arena を使用するには、デフォルトのリリース名
mlflowを使用して任意の Namespace にデプロイします。
-
-
デプロイ ページで、Chart のパラメーターを設定します。
-
defaultArtifactRootとbackendStoreを設定します。trackingServer: # -- mlflow トラッキングサーバーの実行モードを指定します。指定可能なオプションは `serve-artifacts`、`no-serve-artifacts`、`artifacts-only` です mode: no-serve-artifacts # -- ログ記録用のデフォルトのアーティファクトの場所を指定します。アーティファクトサービングが有効な場合、データは `mlflow-artifacts/:` に記録され、それ以外の場合は `./mlruns` に記録されます defaultArtifactRoot: "./mlruns" # バックエンドストアの設定方法の詳細については、https://mlflow.org/docs/latest/tracking/backend-stores.html を参照してください backendStore: # -- バックエンドストアの URI (例: `+://:@:/`) backendStoreUri: postgresql+psycopg2://mlflow:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_storebackendStore.backendStoreUriを、実際のmlflow_storeデータベースのエンドポイントに置き換えます。重要RDS インスタンスと ACK クラスターが同じ VPC 内にある場合は、内部エンドポイントを使用します。そうでない場合は、パブリックエンドポイントを使用し、ACK クラスターからアクセスできることを確認してください。
RDS PostgreSQL コンソールにログインします。[インスタンスID] > [データベース接続] > [内部/外部エンドポイント] の順にクリックして、
pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.comなどのエンドポイントを取得します。データベースへの接続をご参照ください。
-
(任意) Basic 認証を有効にするには、次のように設定します。
trackingServer: # -- mlflow トラッキングサーバーの実行モードを指定します。指定可能なオプションは `serve-artifacts`、`no-serve-artifacts`、`artifacts-only` です mode: no-serve-artifacts # -- ログ記録用のデフォルトのアーティファクトの場所を指定します。アーティファクトサービングが有効な場合、データは `mlflow-artifacts/:` に記録され、それ以外の場合は `./mlruns` に記録されます defaultArtifactRoot: "./mlruns" # Basic 認証の設定。詳細については、https://mlflow.org/docs/latest/auth/index.html#configuration を参照してください basicAuth: # -- Basic 認証を有効にするかどうかを指定します enabled: true # -- すべてのリソースに対するデフォルトの権限です。指定可能なオプションは `READ`、`EDIT`、`MANAGE`、`NO_PERMISSIONS` です defaultPermission: NO_PERMISSIONS # -- 権限とユーザーデータを格納するデータベースの場所 (例: `+://:@:/`) databaseUri: postgresql+psycopg2://<username>:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_basic_auth # -- 管理者がまだ作成されていない場合のデフォルトの管理者ユーザー名 adminUsername: admin # -- 管理者がまだ作成されていない場合のデフォルトの管理者パスワード adminPassword: password # -- リクエストを認証する関数 authorizationFunction: mlflow.server.auth:authenticate_request_basic_auth # バックエンドストアの設定方法の詳細については、https://mlflow.org/docs/latest/tracking/backend-stores.html を参照してください backendStore: # -- バックエンドストアのURI (例: `+://:@:/`) backendStoreUri: postgresql+psycopg2://mlflow:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_store-
trackingServer.basicAuth.databaseUriを、実際のmlflow_basic_authデータベースのエンドポイントに置き換えます。 -
trackingServer.basicAuth.adminUsernameとtrackingServer.basicAuth.adminPasswordを MLflow の管理者認証情報として設定します。新しい管理者アカウントは、まだ存在しない場合にのみ作成されます。
-
すべての Chart パラメーターは MLflow に記載されています。
-
手順 2:Kubernetes にデプロイされた MLflow Web UI へのアクセス
-
MLflow Web UI Service をローカルポート 5000 にポートフォワードします。
kubectl port-forward -n kube-ai services/mlflow 5000期待される出力:
Forwarding from 127.0.0.1:5000 -> 5000 Forwarding from [::1]:5000 -> 5000 Handling connection for 5000 Handling connection for 5000 ... -
http://127.0.0.1:5000 にアクセスして、MLflow Web UI を表示します。
"No runs logged" と表示された [Default] エクスペリメントページが表示され、MLflow がデプロイされ実行中であることが確認できます。
次のステップ:モデル管理
AI Suite コンソールまたは Arena を使用して、MLflow モデルレジストリでモデルを管理します。詳細については、「Arena を使用した MLflow モデルレジストリでのモデル管理」をご参照ください。