7

在对 mlflow 进行 dockerizing 时,由于在 mlflow ui 中创建了 .trash ,因此出现错误,因为“不存在实验”

dockerfile

FROM python:3.7.0

RUN pip install mlflow==1.0.0

WORKDIR /data

EXPOSE 5000

CMD mlflow server \
    --backend-store-uri /data/ \
    --default-artifact-root /data/ \
    --host 0.0.0.0

码头工人撰写:

  mlflow:
    # builds track_ml Dockerfile
    build:
      context: ./mlflow_dockerfile
    expose: 
      - "5000"
    ports:
      - "5000:5000"
    volumes: 
      - ./data:/data
4

2 回答 2

12

你可以使用这个 Dockerfile,取自mlflow-workshop,它更通用,支持不同的 ENV 来调试和使用不同的版本。

默认情况下,它会将工件和文件存储在 /opt/mlflow 中。可以定义以下变量:

MLFLOW_HOME (/opt/mlflow)
MLFLOW_VERSION (0.7.0)
SERVER_PORT (5000)
SERVER_HOST (0.0.0.0)
FILE_STORE (${MLFLOW_HOME}/fileStore)
ARTIFACT_STORE (${MLFLOW_HOME}/artifactStore)

Dockerfile

FROM python:3.7.0
LABEL maintainer="Albert Franzi"

ENV MLFLOW_HOME /opt/mlflow
ENV MLFLOW_VERSION 0.7.0
ENV SERVER_PORT 5000
ENV SERVER_HOST 0.0.0.0
ENV FILE_STORE ${MLFLOW_HOME}/fileStore
ENV ARTIFACT_STORE ${MLFLOW_HOME}/artifactStore

RUN pip install mlflow==${MLFLOW_VERSION} && \
    mkdir -p ${MLFLOW_HOME}/scripts && \
    mkdir -p ${FILE_STORE} && \
    mkdir -p ${ARTIFACT_STORE}

COPY scripts/run.sh ${MLFLOW_HOME}/scripts/run.sh
RUN chmod +x ${MLFLOW_HOME}/scripts/run.sh

EXPOSE ${SERVER_PORT}/tcp

VOLUME ["${MLFLOW_HOME}/scripts/", "${FILE_STORE}", "${ARTIFACT_STORE}"]

WORKDIR ${MLFLOW_HOME}

ENTRYPOINT ["./scripts/run.sh"]

脚本/run.sh

#!/bin/sh

mlflow server \
    --file-store $FILE_STORE \
    --default-artifact-root $ARTIFACT_STORE \
    --host $SERVER_HOST \
    --port $SERVER_PORT

启动 MLFlow 跟踪 Docker

docker build -t my_mflow_image .
docker run -d -p 5000:5000 --name mlflow-tracking my_mflow_image

运行培训

由于我们的 MLflow Tracking docker 暴露在 5000,我们可以通过设置 env 变量 MLFLOW_TRACKING_URI 来记录执行。

MLFLOW_TRACKING_URI=http://localhost:5000 python example.py

此外,最好- ./data:/data在第一次运行时删除,在不挂载的情况下进行调试,以及建议的 dockerfile,您可能需要根据需要挂载 ENV 中提到的不同路径。

于 2019-09-06T06:36:53.113 回答
0

是一个指向 Github 的链接,我将 MLflow 放在后台使用 azurite 的 docker 中,以便稍后从中提取模型。

作为一个简短的通知,您需要为您的脚本提供如何执行它应该保存工件的地址。您可以使用 .env 文件执行此操作或手动设置这些内容。

set MLFLOW_TRACKING_URI=http://localhost:5000

重要的是不仅要提供这些信息,还要提供模型训练的脚本;)

在这里你可以找到一个完整的教程,如何在不同的理论场景中一起使用 MLflow 和 SKlearn,因为它稍后也有点棘手。

我希望你能得到足够的灵感来使用它。

于 2021-12-28T16:00:29.107 回答