MLFlow运行自定义项目提示Could not find main among entry points报错求助
问题根因排查
你触发报错的核心原因是MLProject配置文件的字段名拼写错误:
- MLFlow官方要求的入口点配置字段是
entry_points(下划线分隔),你写的是entry-points(中划线分隔),导致MLFlow无法识别配置的main入口,认为入口点列表为空,所以抛出找不到main的错误。
除此之外还有两个易引发后续运行报错的配置问题:
- MLProject和代码文件尽量使用相对路径,不要用绝对的
~/Desktop/MLflow/路径,避免环境差异导致路径找不到 - Test.py中
mlflow.log_metric方法参数错误:该方法单次只能传单个指标名和值,传字典需要用mlflow.log_metrics(末尾加s)
可行解决方案
第一步:修正MLProject文件
将你的MLProject文件内容替换为以下内容:
name: lightgbm-example conda_env: conda.yaml entry_points: main: parameters: learning_rate: {type: float, default: 0.1} colsample_bytree: {type: float, default: 1.0} subsample: {type: float, default: 1.0} command: | python3 Test.py \ --learning-rate={learning_rate} \ --colsample-bytree={colsample_bytree} \ --subsample={subsample}
同时确保conda.yaml、MLProject、Test.py、Churn_demo.csv四个文件都放在~/Desktop/MLflow/目录下。
第二步:修正Test.py中的日志方法错误
找到Test.py最后一行日志的代码:
mlflow.log_metric({"specificity" : specificity, "accuracy" : acc})
替换为:
mlflow.log_metrics({"specificity" : specificity, "accuracy" : acc})
第三步:调整运行命令
运行MLFlow项目时,先进入项目目录再执行命令即可:
cd ~/Desktop/MLflow mlflow run .
如果要自定义参数可以加-P参数,例如:
mlflow run . -P learning_rate=0.05
内容的提问来源于stack exchange,提问作者nihad1918
相关产品推荐
相关产品推荐

