自定义artifact_location导致MLFlow模型仓库加载失败求助
MLFlow自定义工件目录下注册模型无法加载问题
操作流程与问题
- 创建自定义工件目录的实验
使用mlflow.create_experiment()指定/mlruns外部路径作为工件存储位置,代码如下:
experiment = mlflow.create_experiment( name=exp_name, artifact_location="artifact_location", tags={"env":"dev", "version":"1.0.0"} )
- 注册模型到仓库
将最优模型注册到MLFlow模型仓库:
best_run_id = best_run.run_id model_uri = f"runs:/{best_run_id}/model" mlflow.register_model(model_uri=model_uri, name="cat_classifier")
- 尝试加载注册模型
使用models:/格式URI加载模型时失败,代码:
model_name = "cat_classifier" model_version = 1 model_uri = f"models:/{model_name}/{model_version}" load_model = mlflow.pyfunc.load_model(model_uri)
报错信息
--------------------------------------------------------------------------- OSError Traceback (most recent call last) Cell In[366], line 4 2 model_version = 1 3 model_uri = f"models:/{model_name}/{model_version}" ----> 4 load_model = mlflow.pyfunc.load_model(model_uri) ........ OSError: No such file or directory: '/home/User/workplace/cat/artifact_location/0eb40601413841e78f8b7b89fbf82be7/artifacts/models/.'
目录结构验证
实际工件目录结构为:
|-- model |-- conda.yaml |-- MLModel |-- model.pkl |-- python_env.yaml |-- requirement.txt
不存在报错中指向的/artifacts/models/.路径。MLFlow UI可正常显示该注册模型,也能成功设置别名,但无法加载模型。
补充测试结果
将实验的artifact_location设置为Path.cwd().joinpath("mlruns").as_uri()后,注册并加载模型一切正常,但自定义外部路径的问题仍未解决,需要相关解决方案。
内容的提问来源于stack exchange,提问作者curiouz
相关产品推荐
相关产品推荐

