我正在尝试使用mlflow将我的模型工件存储到s3。在API服务中,我们使用MLFLOW_S3_ENDPOINT_URL作为s3桶。在mlflow服务中,我们将其作为环境变量传递。但是,mlflow容器服务程序在以下例外情况下会失败:
mflow_server | botocore.exceptions.HTTPClientError: An HTTP Client raised an unhandled exception: Not supported URL scheme s3docker-编写如下文件:
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?
发布于 2022-01-04 05:46:56
我找到了解决办法。
我已经在环境变量中添加了["AWS_DEFAULT_REGION"],它起了作用。
发布于 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储存库,它为该项目创建了码头映像。他们这样做:
#!/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桶。因此,您还可以在代码中解析环境变量,并将其设置如下:
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 codehttps://stackoverflow.com/questions/70539698
复制相似问题