使用Docker运行MLflow Projects时如何指定Tracking Server?
解决MLflow Run指定Tracking Server的问题
核心问题解析
你用mlflow run localhost:5000报错是因为理解错了命令参数:mlflow run后面跟的是MLflow项目的路径/Git仓库地址,不是Tracking Server的URI!mlflow以为你要拉取localhost上的Git仓库,所以尝试SSH连接22端口,自然被拒绝。
而mlflow run .能运行但不使用指定服务器,是因为你没告诉mlflow要把数据发到哪个Tracking Server,它默认启动了本地临时服务器。
正确操作步骤
1. 确保Tracking Server正常运行
先确认你的容器化MLflow Tracking Server已经启动,并且端口映射正确(比如用docker run -p 5000:5000 mlflow server或者docker-compose配置了端口映射),能通过http://localhost:5000访问UI界面。
2. 运行项目时指定Tracking Server
有两种方式让mlflow知道要把数据发到你的目标服务器:
方法一:用环境变量指定
在WSL终端里先设置环境变量,再运行项目:
# 设置Tracking Server地址 export MLFLOW_TRACKING_URI=http://localhost:5000 # 运行当前目录的MLflow项目 mlflow run .
方法二:命令行参数直接指定
不用设置环境变量,直接在命令里加--tracking-uri参数:
mlflow run . --tracking-uri http://localhost:5000
3. WSL/Docker网络连通性排查(如果还是不行)
如果用了上面的方法还是没数据到Tracking Server,检查网络:
- WSL内访问Windows的localhost:有时候WSL的localhost映射有问题,你可以在WSL里执行
ip addr show eth0找到WSL的IP(比如192.168.1.100),然后把Tracking URI改成http://192.168.1.100:5000 - Docker容器间的网络:如果你的项目也是用Docker运行的(比如MLproject里指定了docker环境),要确保项目容器和Tracking Server容器在同一个Docker网络里。比如用docker-compose把两者都加入同一个网络,然后用Tracking Server的服务名作为地址,比如
http://mlflow-tracking:5000
验证
运行项目后,打开http://localhost:5000的MLflow UI,查看是否有新的Run记录生成,确认数据已经被正确跟踪。
内容的提问来源于stack exchange,提问作者cbagusjk
相关产品推荐
相关产品推荐

