MLflow是一個開源的機器學習生命周期管理平臺,可以用來追蹤模型訓練信息、管理和部署機器學習模型。本文介紹如何為模型管理功能配置MLflow模型倉庫。
MLflow模型倉庫介紹
關于MLflow模型倉庫功能的詳細介紹,請參見MLflow Model Registry — MLflow documentation。
前提條件
已創建ACK Pro集群且Kubernetes版本不低于1.20。具體操作,請參見創建ACK Pro版集群。
已創建RDS PostgreSQL實例。具體操作,請參見創建RDS PostgreSQL實例。
建議創建RDS PostgreSQL實例時優先選擇ACK集群所在的VPC并將VPC所在的網段加入白名單,這樣可以使用內網地址訪問數據庫。如果RDS實例和ACK集群位于不同的VPC內,請確保RDS開啟了公網訪問,并將ACK集群的VPC網段加入白名單中。具體操作,請參見設置白名單。
在RDS PostgreSQL實例中創建一個名為
mlflow
的普通賬號。具體操作,請參見創建賬號。在RDS PostgreSQL實例創建一個名為
mlflow_store
的數據庫用于存儲模型元數據,并將其授權賬號設置為mlflow
賬號。具體操作,請參見創建數據庫。(可選)在RDS PostgreSQL實例創建一個名為
mlflow_basic_auth
的數據庫用于存儲MLflow用戶認證信息,并將其授權賬號設置為mlflow
賬號。具體操作,請參見創建數據庫。已配置Arena客戶端用于進行模型管理,Arena版本需為0.9.14及以上版本。具體操作,請參見配置Arena客戶端。
步驟一:在ACK集群中部署MLflow
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
單擊創建,然后在創建頁面,將應用名設置為
mlflow
、命名空間設置為kube-ai
,在Chart區域的搜索欄搜索并選中mlflow
,完成后單擊下一步,在彈出的對話框中,確認是否采用mlflow為Chart的默認的命名空間。如果需要通過AI套件開發控制臺進行模型管理,需要將mlflow部署在
kube-ai
命名空間中,發布名稱需保持為默認值mlflow
。如果需要通過Arena進行模型管理,可以將Mlflow部署在任意命名空間中,但是發布名稱需保持為默認值
mlflow
。
在創建頁面,配置Chart的參數。
配置
defaultArtifactRoot
及backendStore
參數,配置示例如下所示。trackingServer: # -- Specifies which mode mlflow tracking server run with, available options are `serve-artifacts`, `no-serve-artifacts` and `artifacts-only` mode: no-serve-artifacts # -- Specifies a default artifact location for logging, data will be logged to `mlflow-artifacts/:` if artifact serving is enabled, otherwise `./mlruns` defaultArtifactRoot: "./mlruns" # For more information about how to configure backend store, please visit https://mlflow.org/docs/latest/tracking/backend-stores.html backendStore: # -- Backend store uri e.g. `<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
。重要如果RDS實例和ACK集群位于同一VPC中,請使用RDS內網連接地址,否則請使用RDS外網地址,并確保ACK集群能夠訪問。
登錄RDS PostgreSQL控制臺,依次單擊實例ID > 數據庫連接 > 內/外網地址,獲取
pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com
數據庫地址。更多信息,請參見連接數據庫。
(可選)如需開啟BasicAuth,請配置如下參數。
trackingServer: # -- Specifies which mode mlflow tracking server run with, available options are `serve-artifacts`, `no-serve-artifacts` and `artifacts-only` mode: no-serve-artifacts # -- Specifies a default artifact location for logging, data will be logged to `mlflow-artifacts/:` if artifact serving is enabled, otherwise `./mlruns` defaultArtifactRoot: "./mlruns" # Basic authentication configuration, # for more information, please visit https://mlflow.org/docs/latest/auth/index.html#configuration basicAuth: # -- Specifies whether to enable basic authentication enabled: true # -- Default permission on all resources, available options are `READ`, `EDIT`, `MANAGE` and `NO_PERMISSIONS` defaultPermission: NO_PERMISSIONS # -- Database location to store permissions and user data e.g. `<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>` databaseUri: postgresql+psycopg2://<username>:<password>@pgm-xxxxxxxxxxxxxx.pg.rds.aliyuncs.com/mlflow_basic_auth # -- Default admin username if the admin is not already created adminUsername: admin # -- Default admin password if the admin is not already created adminPassword: password # -- Function to authenticate requests authorizationFunction: mlflow.server.auth:authenticate_request_basic_auth # For more information about how to configure backend store, please visit https://mlflow.org/docs/latest/tracking/backend-stores.html backendStore: # -- Backend store uri e.g. `<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。
步驟二:訪問部署在Kubernetes上的MLflow Web UI
執行以下命令,將MLflow Web UI服務轉發到本地的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。
后續操作:模型管理
云原生AI套件支持對MLflow模型倉庫中的模型進行管理,關于如何使用云原生AI套件開發控制臺和Arena命令行工具進行模型管理,請參見對MLflow模型倉庫中的模型進行管理。