首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MlFlow -无法以S3作为缺省值运行-工件-root

MlFlow -无法以S3作为缺省值运行-工件-root
EN

Stack Overflow用户
提问于 2021-12-31 06:46:29
回答 2查看 1.2K关注 0票数 1

我正在尝试使用mlflow将我的模型工件存储到s3。在API服务中,我们使用MLFLOW_S3_ENDPOINT_URL作为s3桶。在mlflow服务中,我们将其作为环境变量传递。但是,mlflow容器服务程序在以下例外情况下会失败:

代码语言:javascript
复制
mflow_server  | botocore.exceptions.HTTPClientError: An HTTP Client raised an unhandled exception: Not supported URL scheme s3

docker-编写如下文件:

代码语言:javascript
复制
version: "3.3"
services:
  prisim-api:
    image: prisim-api:latest
    container_name: prisim-api
    expose:
      - "8000"
    environment: 
    - S3_URL=s3://mlflow-automation-artifacts/
    - MLFLOW_SERVER=http://mlflow:5000
    - AWS_ID=xyz+
    - AWS_KEY=xyz

    networks:
      - prisim 
    depends_on:
      - mlflow
    links:
            - mlflow
    volumes:
      - app_data:/usr/data
  mlflow:
    image: mlflow_server:latest
    container_name: mflow_server
    ports:
      - "5000:5000"    
    environment:
      - AWS_ACCESS_KEY_ID=xyz+
      - AWS_SECRET_ACCESS_KEY=xyz
      - MLFLOW_S3_ENDPOINT_URL=s3://mlflow-automation-artifacts/
    healthcheck:
      test: ["CMD", "echo", "mlflow server is running"]
      interval: 1m30s
      timeout: 10s
      retries: 3
    networks:
       - prisim 
networks:
 prisim:
volumes:
  app_data:

为什么不支持方案s3?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-04 05:46:56

我找到了解决办法。

我已经在环境变量中添加了["AWS_DEFAULT_REGION"],它起了作用。

票数 0
EN

Stack Overflow用户

发布于 2021-12-31 07:09:17

虽然我在文档中看到的是,您使用了错误的环境变量来设置S3桶,但我对miflow有0的经验。或者更精确地说,你试图做的事情似乎没有环境变量。

如果您不对MLFLOW_S3_ENDPOINT_URL使用AWS,并且需要一个普通的API (从http/https开始),则应该使用S3。来自文档

要将工件存储在自定义端点中,请将MLFLOW_S3_ENDPOINT_URL设置为端点的URL。例如,如果端口9000上有一个1.2.3.4的MinIO服务器: export MLFLOW_S3_ENDPOINT_URL=http://1.2.3.4:9000

我还遇到了一个github储存库,它为该项目创建了码头映像。他们这样做:

代码语言:javascript
复制
#!/bin/sh

set -e

if [ -z "$FILE_DIR" ]; then
  echo >&2 "FILE_DIR must be set"
  exit 1
fi

if [ -z "$AWS_BUCKET" ]; then
  echo >&2 "AWS_BUCKET must be set"
  exit 1
fi

mkdir -p "$FILE_DIR" && mlflow server \
    --backend-store-uri sqlite:///${FILE_DIR}/sqlite.db \
    --default-artifact-root s3://${AWS_BUCKET}/artifacts \
    --host 0.0.0.0 \
    --port $PORT

搜索此标志,以及它的环境变量将我带到相同的文档中,并且它没有列出它的环境变量。

此外,我还使用了一个代码示例,它允许您在代码中设置S3桶。因此,您还可以在代码中解析环境变量,并将其设置如下:

代码语言:javascript
复制
import mlflow

mlfow.set_tracking_uri("your_postgres_uri")  # replace
expr_name = "new_experiment_2" # replace
s3_bucket = "your_s3_bucket_uri"  # replace

mllfow.create_experiment(expr_name, s3_bucket)
mlflow.set_experiment(expr_name)

with mlflow.start_run():
    # your code
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70539698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档