MLflow,助你轻松搞定机器学习实验管理
搞机器学习的小伙伴都懂,跑实验的时候各种参数、模型版本满天飞,过段时间再看都忘了哪个效果最好。 MLflow 就是来解决这个头疼问题的,它就像是给你的机器学习项目装了个黑匣子,把实验过程中的一切都给记录下来。
1.
基本功能咋用
MLflow 主要帮咱们搞定四个事:实验跟踪、项目打包、模型管理和模型部署。不过咱先说最常用的实验跟踪功能。
import mlflow
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 开启实验记录
mlflow.start_run()
# 记录参数
mlflow.log_param(“n_estimators”, 100)
mlflow.log_param(“random_state”, 42)
# 训练模型
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
# 记录指标
accuracy = rf.score(X_test, y_test)
mlflow.log_metric(“accuracy”, accuracy)
# 保存模型
mlflow.sklearn.log_model(rf, “random_forest_model”)
mlflow.end_run()
温馨提示:别忘了在代码开头加 mlflow.start_run(),结尾加 mlflow.end_run(),不然实验记录会乱糟糟的。
2.
UI 界面有多好使
跑完实验后,终端里敲个 mlflow ui 命令,哇塞,一个漂亮的网页界面就出来了!所有实验的参数、指标都能一目了然地看到,还能画图比较不同实验的结果。看着这些曲线图,找到最佳模型就跟玩似的。
3.
项目打包有点东西
MLflow 还能帮咱们把整个项目打包,包括代码、环境配置啥的都给整理好。写个 MLproject 文件就成:
name: my_project
conda_env: conda.yaml
entry_points:
main:
parameters:
n_estimators: {type: int, default: 100}
command: “python train.py --n_estimators {n_estimators}”
这样你把项目给别人的时候,人家直接用 mlflow run 就能复现你的实验结果,贼方便。
4.
模型部署也不难
训练好的模型想要部署?MLflow 内置了一个模型服务器:
# 加载已保存的模型
# 启动模型服务
噢对了,模型服务默认是跑在本地的 5000 端口上,要是端口被占用了就得换个端口号。
实验管理这活儿,要是没有 MLflow 这种工具,那就跟蒙着眼睛打架一样。有了它,实验记录清清楚楚,模型管理也变得特别轻松。记住啊,好记性不如烂笔头,多用工具帮咱们记录,少给自己找罪受。
在看的,麻烦点一下再走好吗
领取专属 10元无门槛券
私享最新 技术干货