首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过‘-服务-不传递凭据-服务-提供MLFlow工件

通过‘-服务-不传递凭据-服务-提供MLFlow工件
EN

Stack Overflow用户
提问于 2022-01-20 20:15:11
回答 1查看 1K关注 0票数 1

一个新版本的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播放文件,它定义了一个吊舱。

代码语言:javascript
复制
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文件。我得到以下答复:

代码语言:javascript
复制
....
botocore.exceptions.NoCredentialsError: Unable to locate credentials

客户端似乎需要minIO的服务器凭据,我认为代理应该处理这些凭证。

如果我还提供env变量

代码语言:javascript
复制
$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设置代理是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2022-03-10 01:46:28

万一有人发现了这件事,根据你的描述,我也有同样的问题。然而,我这边的问题是,我尝试用一个预先存在的实验(默认)来测试这一点,并且我没有创建新的实验,因此旧的设置继续进行,从而导致MLFlow试图使用s3槽凭据而不是https。

希望这能帮到你们中的一些人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70792868

复制
相关文章

相似问题

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