MLOps实践(初学者)

167 阅读3分钟

前言: 87%的数据项目不会投入生产。只有AI/ML工程投入生产,数据科学项目才会真正体现价值。因此,MLOps项目需要数据科学家和MLOps工程师合作。

什么是MLOps?

Maching Learning Operations. MLOps提供端到端的机器学习开发流程,支持设计、构建和管理可重复、可测试和可进化的机器学习软件。接下来会通过几个端到端数据项目,介绍怎么利用MLOps构建可生产的数据项目。

设计MLOps方案

MLOps技术变化非常快,MLOps任务的tools非常多,这就导致非常多选择,但这意味着在实际case中必须要能选择性能最优的方案。在不同的场景下,设计架构是件非常有挑战的事情。对比DevOps具有CI/CD软件方案,MLOps同样具有CI(Continuous Integration)/CD(Continuous Delivery)/CT(Continuous Training)/CM(Continuous Monitoring)的方案。 如下是MLOps软件栈模板:

mlops_stack.JPG

  • Data Analysis: 数据分析组件可使用各种tools,开发语言例如Python或R。
  • Experimentation:结合领域知识的实验,可以帮助选择工具集。
  • Feature Store:特征仓用来存储各种特征数据,供各个开发团队使用。
  • Code Repository:数据和代码仓。
  • ML Pipeline:ML流水使机器学习项目的状态,从data到模型结果转移。
  • Metadata Store:元数据仓。
  • Model Registry:模型记录,反映模型的多次迭代。
  • Model Serving:真实场景下的模型推理。
  • Model Monitoring:模型在生产环境部署后,监控真实场景下模型参数,有助于反馈问题,从而重训模型或处理数据。

10个MLOps项目实践(Beginners)

MLOps当前还处于新生阶段。各大云厂商和开源应用正在尝试支持production-ready ML。接下来,我们探索一些更好数据项目落地的MLOps实践:

1) 优雅的项目结构- Cookiecutter & readme.so

优化项目结构是一件非常重要的事情,cookiecutter是一个python工具包,能方便的构建ML项目结构。 数据项目最容易缺失文档,然后完整的文档是非常关键的。 readme.so是一个方便的readme编辑工具。 实践项目:在Kaggle Titanic EDA to ML Challenge找个项目,使用Cookiecutter和文档重新构建。

2) 快速数据分析 - Pandas Profiling, SweetViz

Exploratory Data Analysis (EDA) ,利用Jupyter Notebooks上的图像、分析功能有时是远远不够的,推荐以下提升EDA效率的方式:

  • Pandas Profiling: 快速分析数据,包括类型推断、唯一值、缺失值、分位数统计、描述性统计、直方图、相关性、文本分析等。仅仅一行代码,就能快速完成可视化数据分析。 SweetViz: SweetViz 提供了深入的EDA,它比 Pandas 分析更进一步,提供目标分析、特征分析、比较和相关性分析。

实践项目:Zomato Restaurants dataset

3) 数据版本控制 - DVC

Track data science projects with CI, CD, CT, CM. DVC使模型可共享和可复制。GitHub只关注代码,而DVC能处理大型文件、数据集、机器学习模型、指标和代码。 实践项目: 利用Kaggle Telco Customer Churn Dataset数据集,完成EDA、数据清洗、建模,DVC。

4) 可解释性AI/XAI

5) 快速部署ML项目- Docker,FastAPI

使用Docker或FastAPI 来打包、连接机器学习模型以供生产使用。 Docker:利用操作系统级虚拟化来简化部署,以称为容器形式交付软件。 FastAPI:开发Web应用的软件框架,FastAPI 是一个用于构建 API 的现代高性能 Web 框架。 实践项目:使用Kaggle Boston House Prices数据集,构建一个随机森林回归器。任务流程如下:

6) 端到端机器学习- MLflow

7) 构建ML流水-模型注册、特征仓(Feast, ButterFlow)

8) DASK

9) 构建对话机器人并部署

10) FaaS框架 - Apache OpenWhisk, OpenFaas