MLflowはオープンソースの機械学習ライフサイクル管理プラットフォームであり、モデルトレーニング情報の追跡、機械学習モデルの管理、機械学習モデルのデプロイに使用できます。 このトピックでは、モデル管理機能のMLflowモデルレジストリを構成する方法について説明します。
Introduction to MLflow Model Registry
MLflowモデルレジストリの詳細については、「MLflowモデルレジストリ-MLflowドキュメント」をご参照ください。
前提条件
Kubernetes 1.20以降を実行するContainer Service for Kubernetes (ACK) Proクラスターが作成されます。 詳細については、「ACK Proクラスターの作成」をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンスが作成されました。 詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンスの作成時にACKクラスターの仮想プライベートクラウド (VPC) を選択し、インスタンスのホワイトリストにVPC CIDRブロックを追加して、プライベートIPアドレスを使用してインスタンスにアクセスできるようにすることを推奨します。 ApsaraDB RDS for PostgreSQLインスタンスとACKクラスターが異なるVPCにある場合は、ApsaraDB RDS for PostgreSQLインスタンスでインターネットアクセスが有効になっていることを確認し、ACKクラスターのVPC CIDRブロックをインスタンスのホワイトリストに追加します。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンスに
mlflow
という名前の通常のユーザーアカウントが作成されます。 詳細については、「アカウントの作成」をご参照ください。モデルメタデータを保存するために、ApsaraDB RDS for PostgreSQLインスタンスに
mlflow_store
という名前のデータベースが作成されます。 Authorized Byはmlflow
に設定されます。 詳細については、「データベースの作成」をご参照ください。(オプション) MLflowユーザー認証情報を格納するために、ApsaraDB RDS for PostgreSQLインスタンスに
mlflow_basic_auth
という名前のデータベースが作成されます。 Authorized Byはmlflow
に設定されます。 詳細については、「データベースの作成」をご参照ください。Arenaクライアントは、モデルを管理するように構成されています。 アリーナのバージョンは0.9.14以降です。 詳細については、「Arenaクライアントの設定」をご参照ください。
手順1: ACKクラスターにMLflowをデプロイする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[デプロイ] をクリックします。 [デプロイ] パネルで、[アプリケーション名] を
[mlflow]
に、[名前空間] を[kube-ai]
に設定します。 [チャート] セクションで、検索して[mlflow]
をクリックし、[次へ] をクリックします。 表示されるメッセージで、グラフのデフォルトの名前空間としてmlflowを使用するかどうかを確認します。AI Developer Consoleを使用してモデルを管理するには、MLflowを
kube-ai
名前空間にデプロイし、デフォルトのリリース名mlflow
を使用する必要があります。Arenaを使用してモデルを管理するには、任意の名前空間にMLflowをデプロイし、デフォルトのリリース名
mlflow
を使用します。
[デプロイ] パネルで、グラフのパラメーターを設定します。
次の例に示すように、
defaultArtifactRoot
およびbackendStore
パラメーターを設定します。trackingServer: #-使用可能なオプションは「serve-artifacts」、「no-serve-artifacts」、「artifacts-only」です。 モード: no-serve-artifacts # -- デフォルトのアーティファクトの場所を指定します。アーティファクトの提供が有効になっている場合、データは 'mlflow-artifacts/:'に記録されます。 defaultArtifactRoot: "./mlruns" # バックエンドストアの設定方法の詳細については、https://mlflow.org/docs/latest/tracking/backend-stores.html をご覧ください。backendStore: # -- バックエンドストアの例 '<dialect>+<driver>://<username >:< password >@< host >:< port>/<database>' backendStoreUri: postgresql + psycopg2:// mlflow:<password>@ pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_store
backendStore.backendStoreUri
を、[前提条件] セクションのmlflow_store
という名前のデータベースのアドレスに置き換えます。 例:postgresql + psycopg2:// mlflow:<password>@ pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_store
重要ApsaraDB RDSインスタンスとACKクラスターがVPCにある場合は、ApsaraDB RDSインスタンスの内部エンドポイントを使用します。 それ以外の場合は、ApsaraDB RDSインスタンスのパブリックエンドポイントを使用し、ACKクラスターがアクセスできることを確認します。
RDS PostgreSQLコンソールにログインし、[インスタンスID]> [データベースへのログイン]> [内部 /パブリックエンドポイント] をクリックして、データベースエンドポイントの
pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com
を取得します。詳細については、「データベース接続」をご参照ください。
(オプション) BasicAuthを有効にするには、次のパラメーターを設定します。
trackingServer: #-使用可能なオプションは「serve-artifacts」、「no-serve-artifacts」、「artifacts-only」です。 モード: no-serve-artifacts # -- デフォルトのアーティファクトの場所を指定します。アーティファクトの提供が有効になっている場合、データは 'mlflow-artifacts/:'に記録されます。 defaultArtifactRoot: "./mlruns" # 基本的な認証設定、 # 詳細については、https://mlflow.org/docs/latest/auth/index.html#configuration をご覧ください basicAuth: # -- 基本認証を有効にするかどうかを指定します enabled: true #-すべてのリソースに対するデフォルトの権限。使用可能なオプションは「READ」、「EDIT」、「MANAGE」、「NO_PERMISSIONS」です。 defaultPermission: NO_PERMISSIONS # -- アクセス許可とユーザーデータを保存するデータベースの場所たとえば、'<dialect>+<driver>://<username >:< password >@< host >:< port>/<Database>' databaseUri: postgresql + psycopg2://<username >:< password>@ pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_basic_auth # -- adminがまだ作成されていない場合のデフォルトのadminユーザー名 adminUsername: admin # -- adminがまだ作成されていない場合のデフォルトのadminパスワード adminPassword: パスワード # -- リクエストを認証する関数 authorizationFunction: mlflow.server.auth:authenticate_request_basic_auth # バックエンドストアの設定方法の詳細については、https://mlflow.org/docs/latest/tracking/backend-stores.html をご覧ください。backendStore: # -- バックエンドストアの例 '<dialect>+<driver>://<username >:< password >@< host >:< port>/<database>' 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: ACKクラスターにデプロイされたMLflow web UIへのアクセス
次のコマンドを実行して、ローカルポート5000からMLflow web UIサービスのポッドにトラフィックを転送します。
kubectl port-forward -n kube-ai services/mlflow 5000
期待される出力:
転送から127.0.0.1:5000 -> 5000 [::1]:5000 -> 5000からの転送 5000の接続の取り扱い 5000の接続の取り扱い ...
MLflow web UIにアクセスするには、ブラウザのアドレスバーにhttp:// 127.0.0.1:5000と入力します。
次に行うこと: 管理モデル
クラウドネイティブAIスイートを使用して、MLflow Model Registryでモデルを管理できます。 AI開発者コンソールとArena CLIを使用してモデルを管理する方法の詳細については、「MLflowモデルレジストリでモデルを管理する」をご参照ください。