2

当我使用 Docker 容器运行时,我想传递我的GOOGLE_APPLICATION_CREDENTIALS环境变量:mlflow run

这是我docker run使用 mlflow 运行时的当前状态:

 Running command 'docker run --rm -e MLFLOW_RUN_ID=f18667e37ecb486cac4631cbaf279903 -e MLFLOW_TRACKING_URI=http://3.1.1.11:5000 -e MLFLOW_EXPERIMENT_ID=0 mlflow_gcp:33156ee python -m trainer.task --job-dir /tmp/ \
    --num-epochs 10 \
    --train-steps 1000 \
    --eval-steps 1 \
    --train-files gs://cloud-samples-data/ml-engine/census/data/adult.data.csv \
    --eval-files gs://cloud-samples-data/ml-engine/census/data/adult.test.csv \
    --batch-size 128

这就是我通常会通过它的方式:

docker run \
   -p 9090:${PORT} \
   -e PORT=${PORT} \
   -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/[FILE_NAME].json

选择将此值传递给mlflow的最佳方法是什么?我正在 GCS 中编写文件,而 Docker 需要访问 GCP。

ML项目内容

name: mlflow_gcp
docker_env:
  image: mlflow-gcp-example
entry_points:
  main:
    parameters:
      job_dir:
        type: string
        default: '/tmp/'
      num_epochs:
        type: int
        default: 10
      train_steps:
        type: int
        default: 1000
      eval_steps:
        type: int
        default: 1
      batch_size:
        type: int
        default: 64
      train_files:
        type: string
        default: 'gs://cloud-samples-data/ml-engine/census/data/adult.data.csv'
      eval_files:
        type: string
        default: 'gs://cloud-samples-data/ml-engine/census/data/adult.test.csv'
      mlflow_tracking_uri:
        type: uri
        default: ''

    command: |
        python -m trainer.task --job-dir {job_dir} \
            --num-epochs {num_epochs} \
            --train-steps {train_steps} \
            --eval-steps {eval_steps} \
            --train-files {train_files} \
            --eval-files {eval_files} \
            --batch-size {batch_size} \
            --mlflow-tracking-uri {mlflow_tracking_uri}

我已经在 Python 文件中尝试过,但由于 Docker 无法访问本地文件系统而失败:

import os
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/Users/user/key.json"
4

0 回答 0