MLflow は、機械学習のライフサイクル管理のためのオープンソースプラットフォームです。モデルのトレーニング情報を追跡し、機械学習モデルを管理およびデプロイします。このトピックでは、モデル管理のために MLflow モデルレジストリを設定する方法について説明します。
MLflow モデルレジストリの概要
MLflow モデルレジストリの詳細については、MLflow Model Registry — MLflow documentation をご参照ください。
前提条件
-
Kubernetes バージョン 1.20 以降の Container Service for Kubernetes (ACK) Pro クラスターを作成済みであること。詳細については、「ACK Pro クラスターの作成」をご参照ください。
-
RDS PostgreSQL インスタンスを作成済みであること。詳細については、「RDS PostgreSQL インスタンスの作成」をご参照ください。
RDS PostgreSQL インスタンスを作成する際に、ACK クラスターがデプロイされている VPC を選択し、その VPC の CIDR ブロックをホワイトリストに追加することを推奨します。これにより、内部エンドポイントを使用してデータベースにアクセスできます。RDS インスタンスと ACK クラスターが異なる VPC にある場合は、RDS インスタンスのパブリックネットワークアクセスを有効にし、ACK クラスターの VPC の CIDR ブロックをホワイトリストに追加します。詳細については、「ホワイトリストの設定」をご参照ください。
-
RDS PostgreSQL インスタンスで
mlflowという名前の標準アカウントを作成済みであること。詳細については、「アカウントの作成」をご参照ください。 -
モデルメタデータを格納するために、RDS PostgreSQL インスタンスに
mlflow_storeという名前のデータベースを作成済みであること。 Authorized Account をmlflowアカウントに設定してください。詳細については、「データベースの作成」をご参照ください。 -
(任意) MLflow のユーザー認証情報を格納するために、RDS PostgreSQL インスタンスに
mlflow_basic_authという名前のデータベースを作成済みであること。 Authorized Account をmlflowアカウントに設定してください。詳細については、「データベースの作成」をご参照ください。 -
モデル管理のために Arena クライアントを設定済みであること。Arena のバージョンは 0.9.14 以降が必要です。詳細については、「Arena クライアントの設定」をご参照ください。
手順1:ACK クラスターへの MLflow のデプロイ
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
デプロイ をクリックします。デプロイ ページで、アプリケーション名 を
mlflowに、名前空間 をkube-aiに設定します。グラフ セクションでmlflowを検索して選択します。次へ をクリックします。表示されたダイアログボックスで、Chart のデフォルトの Namespace として mlflow を使用するかどうかを確認します。-
AI Suite 開発コンソールを使用してモデルを管理するには、MLflow を
kube-aiNamespace にデプロイし、リリース名をデフォルト値のmlflowのままにします。 -
Arena を使用してモデルを管理するには、MLflow を任意の Namespace にデプロイできますが、リリース名はデフォルト値の
mlflowのままにします。
-
-
デプロイ ページで、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データベースのエンドポイントに置き換えます。たとえば、postgresql+psycopg2://mlflow:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_storeを使用します。重要RDS インスタンスと ACK クラスターが同じ VPC 内にある場合は、RDS インスタンスの内部エンドポイントを使用します。そうでない場合は、パブリックエンドポイントを使用し、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データベースのエンドポイントに置き換えます。たとえば、postgresql+psycopg2://<username>:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_basic_authを使用します。 -
trackingServer.basicAuth.adminUsernameおよびtrackingServer.basicAuth.adminPasswordパラメーターを変更して、MLflow 管理者のユーザー名と初期パスワードを設定します。新しい管理者アカウントは、まだ存在しない場合にのみ作成されます。
-
MLflow パラメーターの完全なリストについては、MLflow をご参照ください。
-
手順2:Kubernetes にデプロイされた MLflow Web UI へのアクセス
-
次のコマンドを実行して、MLflow Web UI Service をローカルマシンのポート 5000 に転送します。MLflow を
kube-ai以外の Namespace にデプロイした場合は、コマンド内の-nパラメーターの値を実際の Namespace に置き換えてください。kubectl port-forward -n kube-ai 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 を表示します。
アクセスに成功すると、MLflow Web UI の [Default] experiment ページが表示されます。メッセージ「No runs logged」は、run がまだ記録されていないことを示します。これにより、MLflow Service が Kubernetes 上に正常にデプロイされ、正常に実行されていることが確認できます。
次のステップ:モデル管理
クラウドネイティブ AI スイートは、MLflow モデルレジストリでのモデル管理をサポートしています。クラウドネイティブ AI スイート開発コンソールおよび Arena コマンドラインインターフェイスを使用してモデルを管理する方法の詳細については、「Arena を使用した MLflow レジストリモデルの管理」をご参照ください。