前言: 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软件栈模板:
- 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数据集,构建一个随机森林回归器。任务流程如下: