十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MLflow LightGBM Autologging 实战指南:从原生 Booster 到 scikit-learn 模型的一站式自动记录

MLflow LightGBM Autologging 实战指南:从原生 Booster 到 scikit-learn 模型的一站式自动记录 MLflow LightGBM Autologging 实战指南从原生 Booster 到 scikit-learn 模型的一站式自动记录【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflowLightGBM 是业界广泛使用的高性能梯度提升框架而 MLflow 提供了mlflow.lightgbm.autolog()这一键式集成让训练过程中的超参数、逐轮指标、特征重要性以及训练好的模型自动落库。本指南以仓库中 examples/lightgbm 下的两个官方示例为骨架深入讲解 LightGBM 原生 APIlightgbm.train()与 scikit-learn APILGBMClassifier两种训练方式的自动记录原理、运行方式与底层实现读完即可在自己的训练脚本中复刻完整实验追踪方案。示例概览两种 API一条 autolog 链路仓库在examples/lightgbm/目录下提供了两个互补的示例lightgbm_native演示通过lightgbm.train()训练 Booster 模型时的自动记录见 train.pylightgbm_sklearn演示 LightGBM scikit-learn 风格模型如LGBMClassifier的自动记录见 train.py。两个示例的核心都是同一行代码mlflow.lightgbm.autolog()正如主 README 所述无论采用哪种 APILightGBM 模型的 autologging 均由mlflow.lightgbm.autolog()统一开启。从源码看该集成位于 mlflow/lightgbm/init.py其 docstring 明确列出了自动记录的内容lightgbm.train中指定的参数每轮迭代的指标当指定valid_sets时最佳迭代处的指标当指定early_stopping_rounds或设置了early_stopping回调时特征重要性split 与 gain 两种类型的 JSON 文件与可视化图训练好的模型包括有效输入示例与推断出的模型签名。示例一LightGBM 原生 API 自动记录脚本逐段拆解lightgbm_native/train.py的完整流程如下train.py命令行参数解析通过argparse暴露三个可调超参数——--learning-rate默认 0.1控制每一步 boosting 的步长、--colsample-bytree默认 1.0构建每棵树时的列采样比例、--subsample默认 1.0训练样本的采样比例数据准备加载 sklearn 内置的 iris 鸢尾花数据集按test_size0.2, random_state42划分训练集与测试集开启自动记录调用mlflow.lightgbm.autolog()构造 LightGBM 数据集lgb.Dataset(X_train, labely_train)在mlflow.start_run()上下文中训练设置objectivemulticlass、num_class3、metricmulti_logloss等参数调用lgb.train(params, train_set, num_boost_round10, valid_sets[train_set], valid_names[train])评估与手动补充指标用训练好的模型对测试集做预测计算log_loss与accuracy并通过mlflow.log_metrics(...)显式记录。值得注意mlflow.lightgbm.autolog()与mlflow.start_run()的配合方式是 MLflow 自动记录的标准用法——autolog 会自动把参数、指标、模型挂到当前激活的 run 下而用户在 run 上下文中显式调用的mlflow.log_metrics会写入同一个 run实现自动记录 手动补充的混合追踪。运行方式按 lightgbm_native/README.md 的说明直接以 Python 脚本方式运行python train.py --colsample-bytree 0.8 --subsample 0.9可以尝试不同的参数组合观察不同超参数对实验结果的影响python train.py --learning-rate 0.4 --colsample-bytree 0.7 --subsample 0.8训练完成后启动 MLflow 服务端在浏览器中对比各次 run 的实验表现mlflow server以 MLflow Project 方式运行lightgbm_native目录同时是一份标准的 MLflow Project其 MLproject 声明了项目名lightgbm-example、依赖环境python_env.yaml以及入口点main并把learning_rate、colsample_bytree、subsample三个参数映射为命令行传参。因此可以脱离脚本直接调用mlflow run . -P learning_rate0.2 -P colsample_bytree0.8 -P subsample0.9该命令会自动读取 python_env.yaml 中声明的依赖mlflow1.6.0、matplotlib、lightgbm在隔离环境中重建运行环境并执行训练适合需要可复现实验的团队协作场景。示例二LightGBM scikit-learn 模型自动记录脚本逐段拆解lightgbm_sklearn/train.py展示的是 scikit-learn API 的用法train.py数据准备load_iris(return_X_yTrue, as_frameTrue)加载鸢尾花数据为 DataFrame并用train_test_split划分开启自动记录同样调用mlflow.lightgbm.autolog()注释明确指出this includes lightgbm.sklearn estimators即该集成同时覆盖原生 Booster 与 scikit-learn 估计器训练实例化lgb.LGBMClassifier(n_estimators20, reg_lambda1.0)调用fit(X_train, y_train, eval_set[(X_test, y_test)])——传入eval_set后 autolog 会记录验证集上的逐轮指标获取 run 信息通过mlflow.last_active_run().info.run_id拿到当前 run 的 ID回读日志内容调用utils.py中的fetch_logged_data(run_id)把该 run 的 params、metrics、tags 和 artifacts 全部打印出来直观展示 autolog 究竟记录了什么。如何回读自动记录的数据lightgbm_sklearn/utils.py提供了一个非常实用的调试工具utils.pyyield_artifacts(run_id, pathNone)递归遍历MlflowClient.list_artifacts产出 run 下所有 artifact 的相对路径fetch_logged_data(run_id)通过client.get_run(run_id).data拉取参数与指标过滤掉以mlflow.开头的系统标签并汇总 artifact 列表。运行python train.py后终端会打印出形如Logged data and model in run run_id的信息随后分块展示该 run 记录的 params、metrics、tags 与 artifacts——这是验证 autolog 是否生效、排查漏记问题最直接的检查手段。深入原理autolog 到底记录了什么结合 mlflow/lightgbm/init.py 的源码可以确认mlflow.lightgbm.autolog()的完整能力边界与行为细节。参数Params自动记录lightgbm.train或LGBMClassifier构造中指定的全部超参数例如 docstring 示例输出中的boosting_type: gbdt、categorical_feature: auto、colsample_bytree: 1.0、verbose_eval: warn等。这意味着每次实验的超参组合都会以结构化 Params 的形式进入 MLflow 跟踪服务可直接在 UI 或 API 层面做对比筛选。指标Metrics指定valid_sets后autolog 会记录每一轮迭代在验证集上的指标指定early_stopping_rounds或使用early_stopping回调时还会记录最佳迭代处的指标。由于 LightGBM 的原生回调机制_autolog_callback见 mlflow/lightgbm/init.py指标写入被交给 MLflow 的 metrics 队列异步批量落库避免逐轮同步写库拖慢训练速度。特征重要性Feature Importanceautolog 会同时计算 split 与 gain 两种类型的特征重要性并产出四份 artifactfeature_importance_gain.json feature_importance_gain.png feature_importance_split.json feature_importance_split.png其中 JSON 保存原始数值PNG 是由log_feature_importance_plot见 mlflow/lightgbm/init.py绘制的柱状图二者共同支撑特征可解释性分析。模型与模型签名训练结束后模型会以 MLflow Model 的标准目录结构落盘docstring 示例输出显示 artifacts 包含model/MLmodel model/conda.yaml model/model.pkl model/python_env.yaml model/requirements.txtmodel.pkl即序列化后的模型对象MLmodel是模型元数据requirements.txt与python_env.yaml记录了模型运行所需依赖。当log_model_signaturesTrue时还会基于训练数据推断输入输出的 ModelSignature当log_input_examplesTrue时会采集训练数据样本作为输入示例一并记录。关键配置参数一览mlflow.lightgbm.autolog()的完整签名见 mlflow/lightgbm/init.py如下可在实际项目中按需调整参数默认值作用log_input_examplesFalse是否记录训练数据的输入示例仅当log_modelsTrue时有效log_model_signaturesTrue是否记录推断出的模型输入/输出签名log_modelsTrue是否将训练好的模型作为 MLflow Model artifact 记录log_datasetsTrue是否记录训练集/验证集的数据集信息disableFalseTrue时关闭 LightGBM autologging 集成exclusiveFalseTrue时 autolog 内容不写入用户创建的 fluent rundisable_for_unsupported_versionsFalseTrue时对未经测试或兼容性未知的 lightgbm 版本禁用 autologgingsilentFalseTrue时抑制 MLflow 在 autologging 期间的日志与警告registered_model_nameNone指定后每次训练结束自动把模型注册为同名 Registered Model 的新版本extra_tagsNone附加到每个 autolog 托管 run 上的额外标签字典从示例到生产实践结合两个示例与源码可以沉淀出几条可复用的实践建议尽早调用 autologmlflow.lightgbm.autolog()应在训练开始前调用两个示例均在数据准备之后、模型训练之前开启其本质是 monkey-patch LightGBM 的训练入口使其在内部自动执行参数/指标/模型记录显式 自动结合autolog 不感知业务自定义指标像原生示例中那样在 run 内手动mlflow.log_metrics补充log_loss、accuracy等是团队指标口径统一的常见做法用 fetch_logged_data 做验收scikit-learn 示例中的回读脚本是验证 autolog 覆盖度的最佳模板可在接入 CI 后自动断言关键参数与指标是否入库善用 MLproject 提升可复现性把训练脚本封装为 Project参考 lightgbm_native/MLproject配合mlflow run与python_env.yaml锁定依赖即可实现一次编写、处处可复现的实验交付。小结examples/lightgbm用两个最小可运行的示例覆盖了 LightGBM 的两大主流训练 APIlightgbm_native展示原生 Booster 训练lightgbm_sklearn展示 scikit-learn 估计器二者共用mlflow.lightgbm.autolog()这一入口。配合 mlflow/lightgbm/init.py 的源码阅读可以完整掌握 autolog 在参数、指标、特征重要性、模型 artifact 四个维度上的记录行为以及log_input_examples、log_models、registered_model_name等配置项的实际效果——这套自动记录 手动补充 结构化回读的组合正是 MLflow 实验追踪体系在梯度提升类模型上的标准落地范式。【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表