从原始数据到模型服务:使用 Kubeflow 的 AI/ML 生命周期蓝图

这是一篇关于使用 Kubeflow 和开源工具实现机器学习项目从原始数据到部署生产就绪模型的教程。

项目概述:用于欺诈检测用例的完整 MLOps 工作流,需实时决策、特征一致、可扩展、持续学习和合规审计,工作流从数据摄入到实时推理服务部署,由 Kubeflow Pipeline orchestrated。

数据说明:假设初始数据集已存在,提供了合成数据生成脚本,数据上传到 MinIO 用于存储和访问。

为什么使用 Kubeflow

  • 基础设施抽象:处理 Kubernetes 基础设施复杂性,让开发者专注于数据和模型性能。
  • 专注于 AI:自动化基础设施后,可投入时间于影响模型性能的活动。
  • 可重现和可扩展:确保每次运行步骤相同,环境配置相同,可扩展到更大集群。
  • 从第一天起即可用于生产:使用生产级工具,开发管道已为生产部署做好准备。
  • 可移植和与云无关:在标准 Kubernetes 上运行,可跨不同云提供商或本地环境使用。

开始步骤

  • 设置本地环境:需要容器引擎(如 Podman 或 Docker)、Python、uv、kubectl、kind、mc 等,在具有 12GB RAM、8 CPUs 和 150GB 磁盘空间的 VM 上测试。
  • 创建本地 Kubernetes 集群:使用 kind 创建集群,kind create cluster -n fraud-detection-e2e-demo --image kindest/node:v1.31.6
  • 部署 Kubeflow Pipelines:推荐使用独立安装,遵循官方指南。
  • 将原始数据上传到 MinIO:先 port-forward MinIO 服务,生成合成数据并复制到指定目录,安装 MinIO Client 并设置别名上传数据集。
  • 安装 Model Registry、KServe、Spark Operator 并设置策略:依次安装并应用相关资源,确保 KServe 和 Spark 作业有正确权限和配置。

构建和理解管道镜像

  • 图像位置data_preparation/Containerfile等多个文件。
  • 如何构建:使用 Podman 或 Docker 构建,如cd data_preparation && podman build -t fraud-detection-e2e-demo-data-preparation:latest.
  • 入口点:每个组件的入口点不同,如data_preparationpython main.py等。
  • 推送镜像:构建后推送至容器注册表,并更新管道中的镜像引用。

Kubeflow 管道

  • 数据准备(Spark):使用 Spark 和 Kubeflow Spark Operator 处理原始交易数据,包括合并数据集、类型转换、时间戳添加、点时间特征计算等,输出为 CSV 和 Parquet 文件。
  • 特征工程(Feast):使用 Feast 管理和服务特征,定义特征视图,应用特征定义,物化特征并上传到 MinIO,确保训练和推理时特征一致。
  • 模型训练:获取处理后的特征并训练欺诈检测模型,包括加载特征、数据分割、缩放、构建和训练神经网络模型并导出为 ONNX 格式。
  • 模型注册:使用 Kubeflow Model Registry 跟踪、版本管理模型,注册模型包括分配名称和版本、存储元数据等,确保模型可发现、可重现和可管理。
  • 实时推理(KServe):使用 KServe 将注册模型部署为实时推理服务,创建 InferenceService 并指定容器镜像、命令等,自定义预测器与 Feast 在线特征存储集成,获取用户特征进行推理。

导入和运行管道

  • 打开 Kubeflow Pipelines UI,上传编译的管道 YAML 文件。
  • 点击管道创建运行,可监控进度和查看日志。

测试实时端点:port-forward 推理 pod 使服务可本地访问,发送预测请求并查看结果,结果可能因上传的原始数据而异。

结论:通过此教程,了解了完整的 AI/ML 工作流,可根据此蓝图适应和扩展自己的机器学习项目,Kubeflow 的模块化平台和生态系统可管理整个 ML 生命周期。完整源代码在 GitHub 上。

阅读 15
0 条评论