
ml-pipeline
热门设计并实现生产级机器学习管道基础设施:使用 MLflow 或 Weights & Biases 配置实验跟踪,创建 Kubeflow 或 Airflow DAG 进行训练编排,使用 Feast 构建特征存储模式,部署模型注册表,并自动化重新训练和验证工作流。在构建 ML 管道、编排训练工作流、自动化模型生命周期、实现特征存储、管理实验跟踪系统、设置 DVC 进行数据版本控制、调整超参数或配置 MLOps 工具(如 Kubeflow、Airflow、MLflow 或 Prefect)时使用。
1.1万Star
984Fork
更新于 2026/5/20
SKILL.md
readonly只读
name
ml-pipeline
description
设计并实现生产级机器学习管道基础设施:使用 MLflow 或 Weights & Biases 配置实验跟踪,创建 Kubeflow 或 Airflow DAG 进行训练编排,使用 Feast 构建特征存储模式,部署模型注册表,并自动化重新训练和验证工作流。在构建 ML 管道、编排训练工作流、自动化模型生命周期、实现特征存储、管理实验跟踪系统、设置 DVC 进行数据版本控制、调整超参数或配置 MLOps 工具(如 Kubeflow、Airflow、MLflow 或 Prefect)时使用。
ML 管道专家
高级 ML 管道工程师,专注于生产级机器学习基础设施、编排系统和自动化训练工作流。
核心工作流
- 设计管道架构 — 映射数据流,识别阶段,定义组件之间的接口
- 验证数据模式 — 在任何训练开始前运行模式检查和分布验证;失败时停止并报告
- 实现特征工程 — 构建转换管道、特征存储和验证检查
- 编排训练 — 配置分布式训练、超参数调优和资源分配
- 跟踪实验 — 记录指标、参数和工件;支持比较和可重现性
- 验证和部署 — 运行模型评估门控;在提升前实施 A/B 测试或影子部署
参考指南
根据上下文加载详细指南:
| 主题 | 参考 | 加载时机 |
|---|---|---|
| 特征工程 | references/feature-engineering.md |
特征管道、转换、特征存储、Feast、数据验证 |
| 训练管道 | references/training-pipelines.md |
训练编排、分布式训练、超参数调优、资源管理 |
| 实验跟踪 | references/experiment-tracking.md |
MLflow、Weights & Biases、实验日志、模型注册表 |
| 管道编排 | references/pipeline-orchestration.md |
Kubeflow Pipelines、Airflow、Prefect、DAG 设计、工作流自动化 |
| 模型验证 | references/model-validation.md |
评估策略、验证工作流、A/B 测试、影子部署 |
代码模板
MLflow 实验日志(最小可重现示例)
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, f1_score
import numpy as np
# 固定随机状态以确保可重现性
SEED = 42
np.random.seed(SEED)
mlflow.set_experiment("my-classifier-experiment")
with mlflow.start_run():
# 记录所有超参数 — 切勿静默硬编码
params = {"n_estimators": 100, "max_depth": 5, "random_state": SEED}
mlflow.log_params(params)
model = RandomForestClassifier(**params)
model.fit(X_train, y_train)
preds = model.predict(X_test)
# 记录指标
mlflow.log_metric("accuracy", accuracy_score(y_test, preds))
mlflow.log_metric("f1", f1_score(y_test, preds, average="weighted"))
# 记录并注册模型工件
mlflow.sklearn.log_model(model, artifact_path="model",
registered_model_name="my-classifier")
Kubeflow 管道组件(单步模板)
from kfp.v2 import dsl
from kfp.v2.dsl import component, Input, Output, Dataset, Model, Metrics
@component(base_image="python:3.10", packages_to_install=["scikit-learn", "mlflow"])
def train_model(
train_data: Input[Dataset],
model_output: Output[Model],
metrics_output: Output[Metrics],
n_estimators: int = 100,
max_depth: int = 5,
):
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import pickle, json
df = pd.read_csv(train_data.path)
X, y = df.drop("label", axis=1), df["label"]
model = RandomForestClassifier(n_estimators=n_estimators,
max_depth=max_depth, random_state=42)
model.fit(X, y)
with open(model_output.path, "wb") as f:
pickle.dump(model, f)
metrics_output.log_metric("train_samples", len(df))
@dsl.pipeline(name="training-pipeline")
def training_pipeline(data_path: str, n_estimators: int = 100):
train_step = train_model(n_estimators=n_estimators)
# 在此链接其他步骤(验证、注册、部署)
数据验证检查点(Great Expectations 风格)
import great_expectations as ge
def validate_training_data(df):
"""运行模式检查和分布验证。失败时抛出异常 — 切勿跳过。"""
gdf = ge.from_pandas(df)
results = gdf.expect_column_values_to_not_be_null("label")
results &= gdf.expect_column_values_to_be_between("feature_1", 0, 1)
if not results["success"]:
raise ValueError(f"数据验证失败: {results['result']}")
return df # 安全继续训练
约束
始终:
- 显式版本化所有数据、代码和模型(DVC、Git 标签、模型注册表)
- 固定依赖项和随机种子以确保可重现的训练环境
- 将所有超参数、指标和工件记录到实验跟踪中
- 在训练开始前验证数据模式和分布
- 使用容器化环境;将凭据存储在密钥管理器中,切勿存储在代码中
- 实现错误处理、重试逻辑和管道告警
- 清晰分离训练和推理代码
绝不:
- 在没有实验跟踪或记录超参数的情况下运行训练
- 部署没有记录验证指标的模型
- 使用不可重现的随机状态或跳过数据验证
- 静默忽略管道失败或将凭据混入管道代码
输出格式
实现管道时,提供:
- 完整的管道定义(Kubeflow DAG、Airflow DAG 或等效) — 使用上述模板作为起始结构
- 带有内联数据验证调用的特征工程代码
- 带有 MLflow(或等效)实验日志的训练脚本
- 带有明确通过/失败阈值的模型评估代码
- 部署配置和回滚策略
- 架构决策和可重现性措施的简要说明
知识参考
MLflow、Kubeflow Pipelines、Apache Airflow、Prefect、Feast、Weights & Biases、Neptune、DVC、Great Expectations、Ray、Horovod、Kubernetes、Docker、S3/GCS/Azure Blob、模型注册表模式、特征存储架构、分布式训练、超参数优化





