MLflow 项目组织机器学习项目的代码

MLflowProjects

什么是 MLFlow 项目?

组织和编写代码的规则。

MLFlow 项目部署流程

  1. 选择环境
  2. 编写环境配置文件
  3. 运行项目

更多信息

  • 通过添加作为 YAML 格式的文本文件的文件,可以更详细地描述项目。
  • 支持 Conda 环境、虚拟环境、Docker 容器
  • 康达环境
    • CuDNN,英特尔MKL治疗支持
    • 您可以通过在 conda.yaml 项目目录的根目录中包含文件或conda_env条目来指定 MLflow 项目的 Conda 环境。
  • Virtualenv环境
    • 下载python与pyenv
    • 在虚拟环境中启用作为执行环境
    • 通过在python_env文件中包含条目,可以指定 MLflow 项目的虚拟环境
  • Docker 容器环境
    • 使用 Docker 容器时,
  • 您可以使用命令行工具或 Python API 运行任何项目
  • 将 MLproject 文件添加到根目录以进行详细设置
  • 指定环境
    • 康达环境
    • conda_env: files/config/conda_environment.yaml
    • VIrtualenv环境
    • python_env: files/config/python_env.yaml
    • Docker 容器环境
    • docker_env:
      image: mlflow-docker-example-environment
  • 命令语法
  • 参数规范
    • 可以为每个参数指定数据类型和默认值
    • parameter_name: data_type
    • data_type
      • string
      • fload
      • path
      • uri
  • 运行项目
    • 从命令行工具运行mlflow
    • 选项
      • -e, –entry-point
      • -v, –version
      • -P, –param-list
      • -A, –docker-args
      • –experiment-name
      • –experiment-id
      • -b, –backend
      • -c, –backend-config
      • –no-conda
      • –env-manager
      • –storage-dir
      • –run-id
      • –run-name
      • –skip-image-build
    • Python API到mlflow.projects.run()
  • 在库伯内特斯运行 MLflow 项目的方法(实验阶段)
  • 在库伯内斯上的医生环境中运行 MLflow 项目
  • API 可能会因实验阶段而更改
  • kubernetes_backend.jsonkubernetes_job_template.yaml
  • 使用
    • 在库伯内特上运行 MLflow 项目
    • MLflow 生成包含项目的新 Docker 映像
    • MLflow 将新项目映像推送到指定的 Docker 注册表
    • 在指定的库伯内特群集上启动库伯内特斯作业
  • 执行指南
    • 如果 Docker 环境尚不存在,请将其添加到 MLflow 项目中
    • 创建后端配置 JSON 文件
    • 获取访问项目医生和库伯内斯资源的凭据
    • 指定项目 URI 和后端配置文件的路径,并使用 MLflow 项目 CLI 或

每个环境的设置描述示例

康达环境

conda_environment.yaml

name: My Project

conda_env: my_env.yaml
# Can have a docker_env instead of a conda_env, e.g.
# docker_env:
#    image:  mlflow-docker-example

entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

VIrtualenv环境

python_env.yaml

python: "3.7.13"
# Dependencies required to build packages. This field is optional.
build_dependencies:
  - pip
  - setuptools
  - wheel==0.37.1
# Dependencies required to run the project.
dependencies:
  - mlflow
  - scikit-learn==1.0.2

Docker 容器环境

示例 1:图像

docker_env:
  image: mlflow-docker-example-environment

示例 2:装载卷并指定环境变量

docker_env:
  image: mlflow-docker-example-environment
  volumes: ["/local/path:/container/mount/path"]
  environment: [["NEW_ENV_VAR", "new_var_value"], "VAR_TO_COPY_FROM_HOST_ENVIRONMENT"]

示例 3:远程注册表中的映像

docker_env:
  image: 012345678910.dkr.ecr.us-west-2.amazonaws.com/mlflow-docker-example-environment:7.0

示例 4:使用预构建映像

docker_env:
  image: python:3.7

向下

mlflow run ... --skip-image-build

示例 5:使用库贝内特

apiVersion: batch/v1
kind: Job
metadata:
  name: "{replaced with MLflow Project name}"
  namespace: mlflow
spec:
  ttlSecondsAfterFinished: 100
  backoffLimit: 0
  template:
    spec:
      containers:
      - name: "{replaced with MLflow Project name}"
        image: "{replaced with URI of Docker image created during Project execution}"
        command: ["{replaced with MLflow Project entry point command}"]
        env: ["{appended with MLFLOW_TRACKING_URI, MLFLOW_RUN_ID and MLFLOW_EXPERIMENT_ID}"]
        resources:
          limits:
            memory: 512Mi
          requests:
            memory: 256Mi
      restartPolicy: Never