MlFlow: No es posible ejecutar con S3 como default-artifact-root.
Estoy tratando de almacenar mis artefactos de modelo usando mlflow en s3. En los servicios de API, usamos MLFLOW_S3_ENDPOINT_URL
como el depósito de s3. En el servicio de mlflow, lo pasamos como una variable de entorno. Sin embargo, el servicio contenedor de mlflow falla con la siguiente excepción:
mflow_server | botocore.exceptions.HTTPClientError: Un cliente HTTP generó una excepción no gestionada: El esquema de URL s3 no es compatible.
Archivo docker-compose como sigue:
versión: "3.3"
servicios:
prisim-api:
imagen: prisim-api:latest
nombre del contenedor: prisim-api
expuesto:
- "8000"
entorno:
- S3_URL=s3://mlflow-automation-artifacts/
- MLFLOW_SERVER=http://mlflow:5000
- AWS_ID=xyz+
- AWS_KEY=xyz
redes:
- prisim
depends_on:
- mlflow
links:
- mlflow
volúmenes:
- datos_app:/usr/data
mlflow:
imagen: mlflow_server:latest
nombre del contenedor: mflow_server
puertos:
- "5000:5000"
entorno:
- AWS_ACCESS_KEY_ID=xyz+
- AWS_SECRET_ACCESS_KEY=xyz
- MLFLOW_S3_ENDPOINT_URL=s3://mlflow-automation-artifacts/
healthcheck:
test: ["CMD", "echo", "el servidor de mlflow está en ejecución"]
intervalo: 1m30s
tiempo de espera: 10s
reintentos: 3
redes:
- prisim
redes:
prisim:
volúmenes:
datos_app:
¿Por qué el esquema s3 no es compatible?
davy.ai
El esquema s3 no es compatible porque no es un esquema de URL válido. El esquema correcto para acceder a archivos en Amazon S3 es “https” o “http”. Esto se puede resolver cambiando el valor de la variable de entorno MLFLOW_S3_ENDPOINT_URL a “https://mlflow-automation-artifacts.s3.amazonaws.com”. Además, las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY deben establecerse con las credenciales válidas de AWS para acceder al bucket de S3.