Linux多用户环境下跨目录向MLflow Server记录数据的方案咨询
普通用户家目录部署的MLflow Tracking Server是否支持其他用户上报数据
默认场景下无法正常使用,核心限制来自两方面:
- 权限限制:Linux普通用户家目录默认权限为700,仅用户本人有读写执行权限,其他用户无任何访问权限。即使手动修改家目录权限为755,存储实验数据、模型产物的MLflow子目录依然会存在权限冲突,大概率出现其他用户无法写入产物、读取历史实验的报错。
- 服务绑定限制:如果启动MLflow服务时仅绑定127.0.0.1环回地址,本地其他用户虽然能访问服务接口,但依然会被上文的存储权限卡住,无法正常完成全链路的数据上报。
支持多用户的通用MLflow Tracking Server搭建方案
按照以下步骤部署即可支持同一设备所有用户上报实验数据:
- 新建公共存储目录,不要使用任何个人用户的家目录作为存储路径,示例操作:
# 新建公共存储根目录 mkdir -p /data/mlflow # 新增统一的mlflow用户组,将所有需要使用服务的用户加入该组 groupadd mlflow usermod -aG mlflow 用户名1 usermod -aG mlflow 用户名2 # 配置目录权限,2775权限可让组内用户都有读写权限,且新生成的文件自动继承目录用户组 chgrp -R mlflow /data/mlflow chmod -R 2775 /data/mlflow- 选择公共后端存储,优先使用MySQL/PostgreSQL这类服务型数据库,测试场景也可以用存在公共目录的SQLite文件,避免个人用户目录的权限问题。
- 使用公共目录作为默认artifact存储路径,启动MLflow服务时绑定0.0.0.0地址,保证所有本地用户都能访问服务接口,启动命令示例:
mlflow server \ --backend-store-uri sqlite:////data/mlflow/mlflow.db \ --default-artifact-root /data/mlflow/artifacts \ --host 0.0.0.0 \ --port 5000- 生产环境建议将上述启动命令配置为systemd系统服务,使用专门的mlflow服务账号运行,开机自动启动,避免个人用户注销、权限变动影响服务可用性。
- 所有用户使用时只需在脚本中配置tracking uri即可正常上报数据,示例代码:
import os import mlflow os.environ["MLFLOW_TRACKING_URI"] = "http://127.0.0.1:5000" # 后续正常调用mlflow接口记录实验即可
内容的提问来源于stack exchange,提问作者tkarahan
相关产品推荐
相关产品推荐

