MLflow Tracking Server

MLflow 为训练和微调工作负载提供实验跟踪功能。在 Alauda AI 中,MLflow 通过 MLflow Operator 作为集群插件进行安装。该 operator 会部署一个 MLflow Tracking Server,通过平台 ingress 公开访问,并在 Tools 菜单中添加一个 MLFlow 入口。

先决条件

  • 目标集群已安装 Alauda AI。
  • 已为 MLflow 元数据提供可用的 PostgreSQL 数据库。
  • 已配置平台 OAuth/OIDC 提供程序。
  • 对于由 namespace 支持的 workspace,目标 workspace 的 namespace 需要带有 MLflow 配置所选用的标签,例如 mlflow-enabled=true

安装或升级

  1. 将 MLflow 集群插件软件包上架到 global 集群。
  2. 在 Web Console 中,进入 管理员 > Marketplace > 上架软件包,并确认 MLflow 软件包版本已显示。
  3. 为目标集群安装或升级 MLflow 集群插件。
  4. 配置 PostgreSQL 的主机、端口、用户名和密码。
  5. 当用户需要访问由 Kubernetes namespace 支持的 MLflow workspaces 时,启用多租户。
  6. 插件状态变为运行后,打开 Alauda AI > Tools > MLFlow

Workspace 访问

MLflow workspaces 与 Kubernetes namespace 映射。只有与已配置标签选择器匹配的 namespace 才会作为 workspace 显示。

示例 namespace:

apiVersion: v1
kind: Namespace
metadata:
  name: team-a
  labels:
    mlflow-enabled: "true"
  annotations:
    mlflow.kubeflow.org/workspace-description: "Team A MLflow workspace"

通过 Kubernetes RBAC 授予用户对 workspace 中 MLflow 资源的访问权限:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: mlflow-manager
  namespace: team-a
rules:
  - apiGroups: ["mlflow.kubeflow.org"]
    resources: ["experiments", "datasets", "registeredmodels"]
    verbs: ["get", "list", "create", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: mlflow-manager
  namespace: team-a
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: mlflow-manager
subjects:
  - kind: Group
    name: team-a-mlflow-users
    apiGroup: rbac.authorization.k8s.io

客户端配置

将 MLflow tracking URI 设置为平台 route,并选择 workspace:

import mlflow

mlflow.set_tracking_uri("https://<platform>/clusters/<cluster-name>/mlflow")
mlflow.set_workspace("team-a")

with mlflow.start_run():
    mlflow.log_param("tenant", "team-a")

对于 HTTP 客户端,请传递 workspace 标头:

curl \
  -H "X-MLFLOW-WORKSPACE: team-a" \
  "https://<platform>/clusters/<cluster-name>/mlflow/api/2.0/mlflow/experiments/search"

高可用性和存储

MLflow 使用外部 PostgreSQL 数据库存储元数据。在生产环境中,请使用高可用的 PostgreSQL 服务。

默认的 artifact 路径位于 MLflow pod 本地。对于生产环境,在用户存储实验 artifact 之前,请通过 MLflow 部署设置配置持久化 artifact 存储。默认的 MLflow server 部署不是多副本高可用部署,除非你所用版本的 release notes 另有说明。

故障排查

  • 如果 MLFlow 的 Tools 菜单入口缺失,请确认 aml-mlflow-menu-config ConfigMap 存在于 MLflow namespace 中,并且带有标签 aml.cpaas.io/centralMenuItem: "true"
  • 如果 workspace 不可见,请确认其 namespace 与 MLflow workspace 标签选择器匹配。
  • 如果请求被拒绝,请检查用户在 workspace namespace 中的 Kubernetes RoleBinding
  • 如果 server 无法启动,请确认 PostgreSQL 连通性和凭据。