开发者社区> 灵杰开发者> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用Databricks+Mlflow进行机器学习模型的训练和部署【Databricks 数据洞察公开课】

简介: 介绍如何使用Databricks和MLflow搭建机器学习生命周期管理平台,实现从数据准备、模型训练、参数和性能指标追踪、以及模型部署的全流程。
+关注继续查看

作者:李锦桂 阿里云开源大数据平台开发工程师


ML工作流的痛点

1.png

机器学习工作流中存在诸多痛点:


  • 首先,很难对机器学习的实验进行追踪。机器学习算法中有大量可配置参数,在做机器学习实验时,很难追踪到哪些参数、哪个版本的代码以及哪个版本的数据会产生特定的结果。
  • 其次,机器学习实验的结果难以复现。没有标准的方式来打包环境,即使是相同的代码、相同的参数以及相同的数据,也很难复现实验结果。因为实验结果还取决于采用的代码库。
  • 最后,没有标准的方式管理模型的生命周期。算法团队通常会创建大量模型,而这些模型需要中央平台进行管理,特别是模型的版本所处阶段和注释等元数据信息,以及版本的模型是由哪些代码、哪些数据、哪些参数产生,模型的性能指标如何。也没有统一的方式来部署这些模型。


MIflow 就是为了解决机器学习工作流中的上述痛点问题而生。它可以通过简单的 API 实现实验参数追踪、环境打包、模型管理以及模型部署整个流程。


MIflow的第一个核心功能: MIflow Tracking。

2.png

它可以追踪基于学习的实验参数、模型的性能指标以及模型的各种文件。在做机器学习时实验时,通常需要记录一些参数配置以及模型的性能指标,而 MIflow 可以帮助用户免去手动记录的操作。它不仅能记录参数,还能记录任意文件,包括模型、图片、源码等。


从上图左侧代码可以看到,使用 MIflow start_run可以开启一次实验;使用 log_param 可以记录模型的参数配置;使用log_metric 可以记录下模型的性能指标,包括标量的性能指标和向量的性能指标;使用 log_model 可以记录下训练好的模型;使用 log_artifact 可以记录下任何想要记录的文件,比如上图中记录下的就是源码。


MIflow的第二个核心功能:MIflow Project

3.png

它会基于代码规约来打包训练代码,并指定执行环境、执行入口以及参数等信息,以便复现实验结果。而且这种规范的打包方式能够更方便代码的共享以及平台的迁移。


如上图, miflow-training 项目里包含两个很重要的文件,分别是 content.yaml 和 MLprojectcontent.yaml 文件中指定了 project 的运行环境,包含它所有依赖的代码库以及这些代码库的版本;MLproject 里指定了运行的环境,此处为conda.yaml,指定了运行的入口,即如何将 project 运行起来,入口信息里面包含了相应的运行参数,此处为 alpha 和 l1_ratio 两个参数。


除此之外,MIflow 还提供了命令行工具,使得用户能够方便地运行 MIflow project 。比如打包好project 并将其上传到 git 仓库里了,用户只需要通过 mIflow run 指令即可执行project 通过 -P 传入 alpha 参数。


MIflow 的第三个核心功能: MIflow Models。

4.png

它支持以统一的方式打包记录和部署多种算法框架模型。训练完模型后,可以使用 MIflow log_model将模型记录下来,MIflow 会自动将模型进行存储(可存储到本地或 OSS 上),而后即可在 MIflow WebUI 上查看模型与代码版本、参数和metric 之间的关系,以及模型的存储路径。


此外,MIflow 提供了 API 用于部署模型。使用 mIflow models serve 部署模型后,即可使用 rest API 调用模型,得到预测的结果。


MIflow 的第四个核心功能: MIflow Registry。

5.png

MIflow 不但能够存储模型,还提供了 WebUI 以管理模型。WebUI 界面上展示了模型的版本和所处的阶段,模型的详情页显示了模型的描述、标签以及schema。其中模型的标签可以用于检索和标记模型,模型的schema 用于表示模型输入和输出的格式。此外,MIflow 还建立了模型以及运行环境、代码和参数之间的关系,即模型的血缘。


MIflow 的四个核心功能很好地解决了机器学习工作流中的痛点,总结起来可以分为三个方面:

  1. MIflow Tracking 解决了机器学习实验难以追踪的问题。
  2. MIflow Project解决了机器学习工作流中没有标准的方式来打包环境导致实验结果难以复现的问题。
  3. MIflow Models Model Registry 解决了没有标准的方式来管理模型生命周期的问题。


Demo演示

接下来介绍如何使用 MIflow DDI 搭建机器学习平台以管理机器学习的生命周期。

6.png

在架构图中可以看到,主要的组件有 DDI 集群、OSS ECS 。DDI 集群负责做一些机器学习的训练,需要启动一台 ECS 来搭建 MIflow tracking server 以提供 UI 界面。此外还需要在 ECS 上安装 MySQL 以存储训练参数、性能和标签等元数据。OSS 用于存储训练的数据以及模型源码等。


部署要点请观看演示视频

https://developer.aliyun.com/live/248988



产品技术咨询

https://survey.aliyun.com/apps/zhiliao/VArMPrZOR  

加入技术交流群

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用 scikit-learn 玩转机器学习——模型评价(上)
对于分类模型来说,我们一般会用模型的准确率来进行模型的评价,模型的准确率是用预测正确的样本数除以模型的总数。如果一个模型的准确率达到了95%,那么在我们的印象中,是不是这个模型表现的还挺不错的,那如果达到了99%呢,岂不是更好?
34 0
独家 | 在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)
本文首先介绍了TensorFlow.js的重要性及其组件,并介绍使用其在浏览器中构建机器学习模型的方法。然后,构建使用计算机的网络摄像头检测身体姿势的应用程序。
2503 0
蚂蚁金服开源机器学习工具 SQLFlow,技术架构独家解读
SQLFlow 的目标是将 SQL 引擎和 AI 引擎连接起来,让用户仅需几行 SQL 代码就能描述整个应用或者产品背后的数据流和 AI 构造。
822 0
【深度揭秘】重磅!蚂蚁金服开源机器学习工具SQLFlow
SQLFlow 的目标是将 SQL 引擎和 AI 引擎连接起来,让用户仅需几行 SQL 代码就能描述整个应用或者产品背后的数据流和 AI 构造。
4623 0
用浏览器训练Tensorflow.js模型的18个技巧(下)
送你18个训练Tensorflow.js模型的小技巧!
1608 0
用浏览器训练Tensorflow.js模型的18个技巧(上)
送你18个训练Tensorflow.js模型的小技巧!
2079 0
[译] 写给机器学习工程师:如何测试Tensorflow模型
## 引言 这篇文章来自斯坦福大学计算与数学工程所(Institute for Computational & Mathematical Engineering)博士生Guillaume Genthial的[博客](https://guillaumegenthial.github.io/testing.html)。主要介绍了如何将工程界里已经得到充分认可的单元测试实践应用到算法建模的领域中,
1783 0
我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
概述 这个工作尝试重现这个论文的结果 A Neural Conversational Model (aka the Google chatbot). 它使用了循环神经网络(seq2seq 模型)来进行句子预测。
1309 0
TensorFlow训练单特征和多特征的线性回归
线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。相关知识可看“相关阅读”。
2284 0
14
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载