すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:MLflowモデルレジストリの設定

最終更新日:Jan 07, 2025

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 Bymlflowに設定されます。 詳細については、「データベースの作成」をご参照ください。

  • (オプション) MLflowユーザー認証情報を格納するために、ApsaraDB RDS for PostgreSQLインスタンスにmlflow_basic_authという名前のデータベースが作成されます。 Authorized Bymlflowに設定されます。 詳細については、「データベースの作成」をご参照ください。

  • Arenaクライアントは、モデルを管理するように構成されています。 アリーナのバージョンは0.9.14以降です。 詳細については、「Arenaクライアントの設定」をご参照ください。

手順1: ACKクラスターにMLflowをデプロイする

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ヘルム] を選択します。

  3. [デプロイ] をクリックします。 [デプロイ] パネルで、[アプリケーション名][mlflow] に、[名前空間][kube-ai] に設定します。 [チャート] セクションで、検索して [mlflow] をクリックし、[次へ] をクリックします。 表示されるメッセージで、グラフのデフォルトの名前空間としてmlflowを使用するかどうかを確認します。

    • AI Developer Consoleを使用してモデルを管理するには、MLflowをkube-ai名前空間にデプロイし、デフォルトのリリース名mlflowを使用する必要があります。

    • Arenaを使用してモデルを管理するには、任意の名前空間にMLflowをデプロイし、デフォルトのリリース名mlflowを使用します。

  4. [デプロイ] パネルで、グラフのパラメーターを設定します。

    1. 次の例に示すように、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を取得します。

      詳細については、「データベース接続」をご参照ください。

    2. (オプション) 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へのアクセス

  1. 次のコマンドを実行して、ローカルポート5000からMLflow web UIサービスのポッドにトラフィックを転送します。

    kubectl port-forward -n kube-ai services/mlflow 5000

    期待される出力:

    転送から127.0.0.1:5000 -> 5000
    [::1]:5000 -> 5000からの転送
    5000の接続の取り扱い
    5000の接続の取り扱い
    ... 
  2. MLflow web UIにアクセスするには、ブラウザのアドレスバーにhttp:// 127.0.0.1:5000と入力します。

    image

次に行うこと: 管理モデル

クラウドネイティブAIスイートを使用して、MLflow Model Registryでモデルを管理できます。 AI開発者コンソールとArena CLIを使用してモデルを管理する方法の詳細については、「MLflowモデルレジストリでモデルを管理する」をご参照ください。