一个新版本的MLFlow (1.23)提供了一个--serve-artifacts选项(通过这拉请求)以及一些示例代码。这应该允许我简化数据科学家服务器的推出,只需要为跟踪服务器提供一个URL,而不是为跟踪服务器提供一个URI,为工件服务器提供一个URI,为工件服务器提供一个用户名/密码。至少我就是这么理解的。
我遇到的一个复杂问题是,对于我的容器,我需要使用podman而不是docker (并且不依赖podman-compose)。我请求您记住这些要求;我知道这是一种奇怪的情况。
在这次更新之前(对于MLFlow 1.22),我所做的是创建一个kubernetes play yaml配置,并且我成功地发出了一个podman play kube ...命令来启动一个pod,并且在设置了适当的四个env变量之后,从另一台机器成功地运行了一个实验并保存了工件。我一直在努力用最新的版本来解决问题。
我遵循docker-compose提供的这里示例。我正在尝试一种(希望)更简单的方法。下面是我的kubernetes播放文件,它定义了一个吊舱。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2022-01-14T19:07:15Z"
labels:
app: mlflowpod
name: mlflowpod
spec:
containers:
- name: minio
image: quay.io/minio/minio:latest
ports:
- containerPort: 9001
hostPort: 9001
- containerPort: 9000
hostPort: 9000
resources: {}
tty: true
volumeMounts:
- mountPath: /data
name: minio-data
args:
- server
- /data
- --console-address
- :9001
- name: mlflow-tracking
image: localhost/mlflow:latest
ports:
- containerPort: 80
hostPort: 8090
resources: {}
tty: true
env:
- name: MLFLOW_S3_ENDPOINT_URL
value: http://127.0.0.1:9000
- name: AWS_ACCESS_KEY_ID
value: minioadmin
- name: AWS_SECRET_ACCESS_KEY
value: minioadmin
command: ["mlflow"]
args:
- server
- -p
- 80
- --host
- 0.0.0.0
- --backend-store-uri
- sqlite:///root/store.db
- --serve-artifacts
- --artifacts-destination
- s3://mlflow
- --default-artifact-root
- mlflow-artifacts:/
# - http://127.0.0.1:80/api/2.0/mlflow-artifacts/artifacts/experiments
- --gunicorn-opts
- "--log-level debug"
volumeMounts:
- mountPath: /root
name: mlflow-data
volumes:
- hostPath:
path: ./minio
type: Directory
name: minio-data
- hostPath:
path: ./mlflow
type: Directory
name: mlflow-data
status: {}我从podman play kube mlflowpod.yaml开始。在同一台计算机(或另一台计算机,没关系)上,我已经将mlflow克隆并安装到虚拟环境中。在这个虚拟环境中,我将环境变量MLFLOW_TRACKING_URI设置为<name-of-server>:8090。然后在example.py示例目录中运行mlflow_artifacts文件。我得到以下答复:
....
botocore.exceptions.NoCredentialsError: Unable to locate credentials客户端似乎需要minIO的服务器凭据,我认为代理应该处理这些凭证。
如果我还提供env变量
$env:MLFLOW_S3_ENDPOINT_URL="http://<name-of-server>:9000/"
$env:AWS_ACCESS_KEY_ID="minioadmin"
$env:AWS_SECRET_ACCESS_KEY="minioadmin"然后事情就开始运作了。但这种做法违背了代理的目的..。
通过kubernates、play、yaml和podman设置代理是怎么回事?
发布于 2022-03-10 01:46:28
万一有人发现了这件事,根据你的描述,我也有同样的问题。然而,我这边的问题是,我尝试用一个预先存在的实验(默认)来测试这一点,并且我没有创建新的实验,因此旧的设置继续进行,从而导致MLFlow试图使用s3槽凭据而不是https。
希望这能帮到你们中的一些人。
https://stackoverflow.com/questions/70792868
复制相似问题