我设置了一个ML流作为 Ubuntu 上的 systemd 服务的远程跟踪服务器(这里我遵循的教程)。简而言之,我在 python 中运行程序并通过 sftp 将一些指标和文件发送到远程服务器。
在etc/systemd/system
我定义了一个mlflow-tracking.service
文件,如下所示:
[Unit]
Description=MLflow server
After=network.target
[Service]
Restart=on-failure
RestartSec=20
ExecStart=/bin/bash -c 'PATH=_mypath_/anaconda3/envs/mlflow_server/bin/:$PATH exec mlflow server --backend-store-uri postgresql://mlflow:mlflow@localhost/mlflow --default-artifact-root file:_mypath_/MLFLOW_SERVER/mlruns -h 0.0.0.0 -p 8000'
[Install]
WantedBy=multi-user.target
只要涉及从我的计算机到远程服务器的文件传输,一切似乎都工作正常:所有文件最终都到达了它们应该到达的位置。但是,在 MLFlow UI 中我收到以下错误消息:
无法列出存储在 sftp://192.XXX 下的工件:我自己的路当前运行的 /MLFLOW_SERVER/mlruns/bc899e79336b461d9ca86d7dbcc37abf/artifacts。请联系您的跟踪服务器管理员,通知他们此错误,当跟踪服务器缺乏在当前运行的根工件目录下列出工件的权限时,可能会发生这种情况。
192.XXX
运行服务的远程计算机的 IP 地址在哪里,并且bc899e79336b461d9ca86d7dbcc37abf/artifacts
是我写入文件的文件夹之一。
服务可能缺乏列出本地文件夹中文件的权限是否有原因?注意所有文件夹的权限都是drwxrwxr-x
.
答案1
SFTP 连接[email protected]
-user
是具有目录和文件权限的远程用户。
SSH 登录远程 sftp 机器。
跑whoami
或更好地跑id
用户名/组应与所有者+权限匹配ls -l /mypath