FEATURED · 精选文章

MLOps Zoomcamp 2024 单元三:基于 Mage 构建端到端 ML 流水线的 MLOps 实战指南

发布时间 / 2026/9/14 2:04:38
来源 / 创域科博编辑部
栏目 / 资讯中心
MLOps Zoomcamp 2024 单元三:基于 Mage 构建端到端 ML 流水线的 MLOps 实战指南 MLOps Zoomcamp 2024 单元三基于 Mage 构建端到端 ML 流水线的 MLOps 实战指南【免费下载链接】mlops-zoomcampFree MLOps course from DataTalks.Club. Register here to get notified about the next cohort项目地址: https://gitcode.com/GitHub_Trending/ml/mlops-zoomcamp本文基于 MLOps ZoomcampDataTalks.Club 免费 MLOps 课程2024 届第 3 单元「Orchestration and ML Pipelines」的课程文档展开完整覆盖该单元从 MLOps 概念、Mage 环境启动到数据准备ETL 与特征工程、sklearn/XGBoost 双模型训练、可观测性监控与告警、推理与再训练触发再到生产部署和课后作业的全流程。读完本文你可以按 2024 届的课程脉络用 Mage 搭建一条带数据校验、实验追踪MLflow、SHAP 解释性和 CI/CD 的端到端 ML 流水线并知道每个环节对应的代码块与配置文件在哪里。模块定位与整体结构2024 届的单元 3 是课程中「工作流编排」主题的教学单元模块编号与标题定义在 meta.json 中module.number 3module.title Orchestration and ML Pipelines。单元索引页 cohorts/2024/03-orchestration/README.md 将课程拆成六个递进的小节小节主题文档位置3.0引言ML Pipelines 与 Mage3.0/README.md3.1数据准备ETL 与特征工程3.1/README.md3.2训练sklearn 模型与 XGBoost3.2/README.md3.3可观测性监控与告警3.3/README.md3.4触发推理与再训练3.4/README.md3.5部署在生产环境运行3.5/README.md3.6作业homework.md从文档结构可以看出 2024 届的技术选型编排平台从 2022/2023 届的 Prefect见 2022 版说明 与 2023 版说明切换为 Mage。单元索引页的「Notes」部分也明确保留了历届学习资料的入口并列出社区贡献的 Ch3 学习笔记体现了课程文档「历届对比 社区共建」的组织方式。所有小节配套的可运行代码存放在课程协作仓库mage-ai/mlops中下文各节给出的data_loaders/、transformers/等文件路径均指该协作仓库内的子项目unit_3_observability本仓库中保留的是各小节的教学说明与配置清单。3.0 引言MLOps 概念与 Mage 环境启动MLOps 的四步生命周期3.0/README.md 先给出课程对 MLOps 的定义Operationalizing ML models involves moving them from development to production to drive business value. 将 ML 模型从开发推向生产以驱动业务价值即为模型运维化。文档将这一过程拆为四步Step 1 准备模型优化性能、确保模型能处理真实世界数据、打包以便集成进现有系统Step 2 部署模型从开发环境迁移到生产环境使其对用户和应用可访问Step 3 持续监控部署后必须持续监控准确性与可靠性必要时用新数据再训练、更新模型Step 4 融入业务流程把运维化的模型接入现有工作流、应用与决策过程产生业务影响。文档同时给出组织层面做 MLOps 的四个理由这也是后续各环节设计的依据Productivity生产力为数据科学家、ML 工程师和 DevOps 提供统一的实验追踪、特征工程、模型管理与部署环境打破团队壁垒、加速 ML 全生命周期Reliability可靠性通过干净的数据集、充分的测试与验证、CI/CD 实践、监控和治理保证生产模型质量Reproducibility可复现性对数据集、代码和模型做版本管理提供透明度与可审计性满足政策合规Time-to-value价值交付速度简化 ML 生命周期让更多项目成功上生产规模化获得 AI/ML 投资回报。Mage 在 MLOps 中的三个作用文档随后说明 Mage 平台如何支撑上述目标数据准备构建、运行和管理数据管道包括流水线编排、notebook 环境、数据集成、面向实时数据的流式管道训练与部署准备数据、训练 ML 模型并以可访问的 API 端点部署标准化复杂流程用统一平台覆盖数据管道、模型开发、部署、版本管理、CI/CD 与维护让开发者专注模型本身。快速启动 Mage3.0 小节提供了完整的 Quick Start 命令。克隆包含本模块全部代码的协作仓库并进入目录git clone https://github.com/mage-ai/mlops.git cd mlops启动 Mage 与 PostgreSQL 数据库服务./scripts/start.sh如果环境没有 bash文档给出等价的docker compose命令注意PROJECT_NAME、MAGE_CODE_PATH和 SMTP 变量的写法PROJECT_NAMEmlops \ MAGE_CODE_PATH/home/src \ SMTP_EMAIL$SMTP_EMAIL \ SMTP_PASSWORD$SMTP_PASSWORD \ docker compose up文档特别提示若出现The PYTHONPATH variable is not set. Defaulting to a blank string.警告可以忽略。启动成功后示例项目位于子项目unit_3_observability包含全部管道与代码。运行示例管道的操作步骤为浏览器打开http://localhost:6789在左上角 Mage logo 与mlops项目名旁的项目选择下拉框中选择unit_0_setup选项点击名为example_pipeline的管道点击Run once按钮执行一次。这一「Docker 一键拉起 网页 IDE 运行」的模式贯穿整个单元后续所有小节都在这个本地 Mage 实例中开发管道避免了手工搭建编排引擎的运维负担。3.1 数据准备ETL 与特征工程3.1/README.md 讲解如何用 Mage 的 block 体系搭建数据准备管道对应协作仓库中的子项目unit_1_data_preparation。创建项目与摄取Ingestion创建 Mage 项目的操作路径是在 Text editor命令中心输入 text editor 打开中右键一个文件夹选择New Mage project再到Settings中点击Register project完成注册。注册后项目内是一个空管道课程要求用 block 逐步开发。第一个 block 是ingestion block用 Python 代码下载 Green taxi 数据集 13 月的 parquet 文件并拼接同时生成用于数据画像data profiling的图表。课程使用的代码文件为data_loaders/ingest.py文档还给出一个常见坑的修复如果时间轴图表不显示在ingest.py的dfs.append(df)一行上方插入df[lpep_pickup_datetime_cleaned] df[lpep_pickup_datetime].astype(np.int64) // 10**9这段代码把纳秒时间戳转回秒级解决 pandas 时间列在可视化中的显示问题。通用工具函数Utility helpersutils目录下预置了三个工具模块供后续 transformer block 导入使用utils/data_preparation/cleaning.py数据清洗utils/data_preparation/feature_selector.py特征选择utils/data_preparation/splitters.py训练/验证集切分。这种「工具函数与管道 block 分离」的组织方式让同一份逻辑可被多条管道复用是 2024 届课程强调的工程习惯。数据准备 block 与可视化数据准备阶段的代码在transformers/prepare.py。文档给出一条实操提示要让直方图正确显示需把默认绘图代码的最后两行改为col trip_distance x df_1[df_1[col] 20][col]即把trip_distance截断到 20 以内再画分布避免极端值压扁直方图。构建训练集与数据校验构建训练集依赖两个文件utils/data_preparation/encoders.py类别特征编码PULocationID/DOLocationID 等data_exporters/build.py导出训练/验证数据集。该小节还引入 Mage 内置测试框架built-in testing framework做数据校验data_exporters/build.py中即包含数据校验data validation的写法保证导出数据集的行数、取值范围等约束在每次运行时被检查。整条数据准备管道的拓扑与调度配置记录在pipelines/data_preparation/metadata.yaml中——这也是 Mage「配置即代码」的体现管道结构block 依赖、触发器保存在 YAML可进版本库审查。3.2 训练sklearn 模型与 XGBoost3.2/README.md 讲解如何把「训练」本身也编排成管道课程并行搭建了两条训练管道sklearn 与 XGBoost。sklearn 训练管道课程按如下顺序搭 blockGDP 训练集使用 Global Data ProductGDPMage 跨管道共享数据集的机制消费 3.1 产出的训练集避免重复计算动态加载模型custom/load_models.pyblock 负责动态加载 sklearn 模型类配合utils/models/sklearn.py中封装的模型工具超参数调优transformers/hyperparameter_tuning/sklearn.py执行调参本单元依赖清单 requirements.txt 中包含hyperopt0.2.7即调参用的贝叶斯优化库训练模型transformers/下的训练 block 用最优超参训练导出模型data_exporters/sklearn.py保存模型产物。两条训练管道共享的超参定义放在utils/hyperparameters/shared.py保证 sklearn 与 XGBoost 管道对「什么是好的搜索空间」有一致的约定。XGBoost 训练管道XGBoost 管道结构与 sklearn 对称关键文件为utils/models/xgboost.py模型工具封装transformers/hyperparameter_tuning/xgboost.pyXGBoost 超参搜索data_exporters/xgboost.py模型导出。两条管道的编排配置分别保存在pipelines/sklearn_training/metadata.yaml与pipelines/xgboost_training/metadata.yaml。从源码结构看这种「每个模型族一条独立管道 共享 utils 共享超参定义」的设计使得后续 3.3/3.4 小节可以为两条管道分别挂监控、解释性和再训练触发器互不干扰。3.3 可观测性监控与告警3.3/README.md 覆盖四类可观测性能力。1. 管道健康监控课程先查看 sklearn 训练管道的运行健康状态block 级成功率、运行时长、数据行数等运行记录在 Mage 的运行历史中可见。这是「管道级」监控回答「训练是不是按时、按量跑完了」。2. 模型可解释性SHAP 仪表盘解释性部分是本小节的技术亮点涉及协作仓库中的以下文件custom/dashboard_data_source.py产生计算与绘制 SHAP 值所需的输出charts/shap_values.pySHAP 值图表charts/shap_values_bar.pySHAP 条形图特征重要性排序charts/shap_values_force_chart.pySHAP force plot单样本预测解释。课程演示了自定义 dashboard 布局Customize layout把 SHAP 图表组合成 XGBoost 解释性仪表盘。布局文件位于presenters/pipelines/pipeline_name/dashboard/block_layout.yaml文档中给出了xgboost_training与sklearn_training两个 dashboard 的block_layout.yaml路径。3. 模型性能仪表盘项目级总览仪表盘回答「哪次训练最好、指标如何漂移」涉及图表 blockcharts/training_metrics__rmse_.pyRMSE 时序图charts/time_series__mse_.pyMSE 时序图charts/distribution_of_performance_metrics.py性能指标分布直方图charts/total_runs_by_model.py按模型统计训练次数条形/饼图utils/analytics/data.py供各仪表盘共用的分析数据工具。仪表盘配置保存在presenters/overview/dashboard/block_layout.yaml。4. 告警Alerting告警配置写在项目级metadata.yaml协作仓库路径unit_3_observability/metadata.yaml并配合项目设置中的 SMTP邮件发送配置。文档列出了 Mage 支持的告警通道Email、Opsgenie、Slack、Teams、Discord、Telegram覆盖了「管道运行状态触发 → 推送到值班渠道」的完整链路。3.4 触发推理与再训练3.4/README.md 讲解管道的「触发」能力即让流程自动化闭环。再训练管道Retraining pipeline关键 block 有三个sensors/detect_new_data.py传感器 block检测是否有新数据到位custom/retrain/sklearn.py触发 sklearn 训练管道custom/retrain/xgboost.py触发 XGBoost 训练管道。从源码结构看这是一条典型的「数据驱动再训练」管道sensor 检测到新数据 → 触发对应模型族的训练管道实现 MLOps 四步中「持续监控并再训练」环节的自动化。再训练管道的编排配置在pipelines/automatic_retraining/metadata.yaml。推理管道Inference pipelinecustom/inference.py推理 block加载模型并对输入做预测管道配置在pipelines/predict/metadata.yaml课程还演示了Playground交互式界面无代码 UI 交互配置在interactions/playground.yaml可以直接在界面上输入特征获得预测也可以通过 Mage 的 API 端点拿到预测结果——这意味着推理能力既可以人工交互调试也可以作为服务被程序调用。文档同时整理了 Mage 触发机制的四种方式在 Mage 官方文档中可查到对应章节在代码中保存触发器、从 block 触发另一条管道、通过 API 端点触发、按周期调度运行。这四类触发器正是 3.4 两条管道的底层机制。3.5 部署在生产环境运行3.5/README.md 把前面所有管道放进生产视角分三步。1. 权限AWS IAMcustom/permissions.pyblock 用于演示在 AWS 上配置 Mage 部署所需的 IAM 权限。课程强调生产部署前必须先解决「这个身份能做什么」的问题对应的 IAM 策略分为 Terraform apply 与 Terraform destroy 两类权限。2. 部署与销毁Terraform部署流程本身也被编排成管道由三个 block 组成custom/infrastructure_setup.py执行 Terraform 初始化/初始化云环境custom/deploy.py执行部署terraform applycustom/teardown_deployed_resources.py销毁已部署资源terraform destroy避免遗留资源产生费用。整条部署管道的编排配置在pipelines/deploying_to_production/metadata.yaml。3. CI/CDcustom/ci_and_cd.pyblock 演示用 GitHub Actions 做持续集成与持续部署代码变更 → 触发 CI 校验 → 通过 Mage 部署流程发布。文档给出的资源清单涵盖仓库配置、AWS IAM 策略apply/destroy 两份、Terraform 配置与 CI/CD 概览构成了「部署流水线即代码」的完整闭环。作业实战用 Mage MLflow 完成一次完整训练闭环cohorts/2024/03-orchestration/homework.md 是本单元的能力验收目标是用 Mage 搭建一条简单的训练管道用 MLflow 追踪实验并注册最优模型。数据集沿用课程的 NYC taxi 数据作业指定使用Yellowtaxi 2023 年 3 月数据。六个问题覆盖了单元核心技能Q1 运行 Mage按 Quick Start 用 Docker Compose 启动回答 UI 中看到的 Mage 版本Q2 创建项目新建名为homework_03的项目回答生成的metadata.yaml行数35/45/55/65 四选一考察是否真正创建并查看了项目配置Q3 创建摄取 block读取 2023 年 3 月 Yellow taxi 数据回答加载的记录数Q4 数据准备写一个 transformer block课程给出了调整自 Green 版逻辑的参考实现见 homework.mddef read_dataframe(filename): df pd.read_parquet(filename) df.tpep_dropoff_datetime pd.to_datetime(df.tpep_dropoff_datetime) df.tpep_pickup_datetime pd.to_datetime(df.tpep_pickup_datetime) df[duration] df.tpep_dropoff_datetime - df.tpep_pickup_datetime df.duration df.duration.dt.total_seconds() / 60 df df[(df.duration 1) (df.duration 60)] categorical [PULocationID, DOLocationID] df[categorical] df[categorical].astype(str) return df逻辑要点把上下车时间转 datetime、计算以分钟为单位的duration、过滤 160 分钟的行程、把上下车地点 ID 转字符串以便后续字典编码 5.Q5 训练模型与单元 2 作业一致——fit 一个 dict vectorizer训练默认参数的线性回归pickup/dropoff 地点分开使用不做组合特征返回 vectorizer 与 model回答模型截距intercept 6.Q6 注册模型停止 MageCtrlC或docker-compose down为 MLflow 单独建一个容器并与 Mage 同网络。文档给出了完整的mlflow.dockerfileFROM python:3.10-slim RUN pip install mlflow2.12.1 EXPOSE 5000 CMD [ \ mlflow, server, \ --backend-store-uri, sqlite:///home/mlflow_data/mlflow.db, \ --host, 0.0.0.0, \ --port, 5000 \ ]以及 docker-compose.yaml 中要追加的服务注意app-network必须与 mage、postgres 容器同网络mlflow: build: context: . dockerfile: mlflow.dockerfile ports: - 5000:5000 volumes: - ${PWD}/mlflow_data:/home/mlflow_data/ networks: - app-network重启 compose 后MLflow 服务在http://mlflow:5000可达容器网络内的主机名即服务名mlflow。作业要求在 Mage 项目中安装mlflow2.12.1然后创建一个data exporter block记录线性回归模型log model并保存与上传 dict vectorizer 作为 artifactlog artifact。最后查看 MLflow 中的 MLModel 文件回答model_size_bytes的值。文档还提示最后两步log model 与 log artifact通常放在同一个代码 block 内完成。这份作业把「摄取 → 准备 → 训练 → 注册」四个环节压进一条 Mage 管道且 MLflow 以独立容器接入正是 3.2 训练管道与单元 2 实验追踪知识的综合应用。环境依赖与历届资料对照2024 届依赖清单cohorts/2024/03-orchestration/requirements.txt 锁定了本单元使用的关键依赖依赖版本用途mlflow2.3.1实验追踪与模型注册作业中单独起服务时用 2.12.1注意以作业说明为准hyperopt0.2.73.2 小节的超参数调优xgboost1.7.5XGBoost 训练管道scikit_learn1.2.2sklearn 训练管道pandas/fastparquet2.0.1 / 2023.4.0数据读取与处理seaborn0.12.2数据画像与指标可视化prefect/prefect-aws2.10.8 / 0.3.1从 2023 届沿用下来的历史依赖2024 届正文已不再使用 Prefectblack/orjson23.3.0 / 3.8.1代码格式化 / 高速 JSON 序列化从依赖清单结构可以推断requirements.txt是从 2023 届Prefect 单元延续维护的2024 届实际教学改用了 Mage其中prefect相关条目属于历史遗留动手时建议按各小节实际用到的包安装。与其他届的对照2022 届与 2023 届的同主题单元使用 Prefect可参考 cohorts/2022/03-orchestration/README.md 和 cohorts/2023/03-orchestration/prefect/README.md含 Prefect 本地服务器启动、Prefect Cloud 登录等操作步骤当前主线2025 届的编排单元改为了「自主选择编排工具」的开放式练习工具清单包含 Airflow、Prefect、Dagster、Kestra、Mage 等并给出了参数化调度月度运行、训练/验证数据取前两个月、backfill 等要求见 03-orchestration/README.md其中也保留了与本作业一致的 MLflow Docker 部署方案。小结2024 届第 3 单元用 Mage 串起了 MLOps 的完整闭环3.0建立 MLOps 四步生命周期认知并用 Docker 一键启动编排环境3.1用 ingestion/transformer/exporter 三类 block 完成 ETL、特征工程与数据校验3.2把 sklearn 与 XGBoost 的训练、调参、导出本身编排成管道并用metadata.yaml固化管道拓扑3.3从管道健康、SHAP 可解释性、性能仪表盘到多渠道告警补齐可观测性3.4用 sensor 与 trigger 实现「新数据到位 → 自动再训练」与可交互/可 API 化的推理3.5用 IAM 权限、Terraform 部署/销毁和 GitHub Actions CI/CD 收口到生产。配合 homework.md 的 Mage MLflow 六问练习该单元提供了从本地实验到生产运维、且每个环节都可代码化、可复现的完整 MLOps 教学路径。【免费下载链接】mlops-zoomcampFree MLOps course from DataTalks.Club. Register here to get notified about the next cohort项目地址: https://gitcode.com/GitHub_Trending/ml/mlops-zoomcamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻