Meetup 回顾|DevOps&MLOps 如何在企业中解决机器学习困境?
![Meetup回顾|DevOps&MLOps如何在企业中解决机器学习困境?](https://static001.geekbang.org/infoq/a4/a4d4b6c1b581a0927f3b47cbdf989a46.png)
6 月 5 日,由星策社区主办的「DevOps+MLOps Meetup」于线上召开,活动由 51CTO 视频号、CSDN 直播间、开源中国视频号、极狐 GitLab 视频号四平台同步支持,累计观看人次超过 5000。星策社区发起人——谭中意,在本次活动中重点介绍了 DevOps 与 MLOps 的概念与异同之处;极狐 GitLab 架构师——刘巍锋,分享了如何使用传统的代码管理工具和流水线平台 Gitlab,实现机器学习模型的开发自动化;第四范式 OpenMLDB 研发负责人——卢冕,介绍了如何使用 OpenMLDB 解决特征线上线下一致性问题,加速机器学习的开发和上线过程。
🌟本文根据三位老师分享的重点内容整理而成,视频回顾见文章末尾,PPT 获取请关注公众号星策开源并回复 0605~
精彩内容回顾
Part1:DevOps+MLOps,都是为了效率—谭中意
星策社区发起人,开源软件推进联盟副秘书长,开放原子基金会 TOC 副主席—谭中意,在此次 meetup 中重点介绍了 DevOps、MLOps 的由来、概念和两者的异同之处。
![](https://static001.geekbang.org/infoq/47/470294be62f15f836882f028da9c31c1.png)
什么是 DevOps?
DevOps 这个词从提出来流行在国内已有将近有十来年的历史,他的目标是在保证质量的基础上更快的 Deliver 软件。在传统的工作模式下面,Dev(开发者)负责将编译好的代码交给 Ops(运维团队)部署到线上,前者关心的是更快的上线,实现功能,后者关心的是系统的稳定性与可用性,因为目标的不一致,造成在传统研发模式下,Dev 与 Ops 的矛盾越来越大,形成了一道阻碍沟通的“部门墙”。 为了解决这一问题,打破这道墙,出现了一种新的研发模式即 DevOps。通过 CI+CD 让研发与运维联合起来,形成一个 DevOps 双环,以此打破团队界限,用一种更高效、更流水性的自动化方式来工作。这种方式后来被广泛应用,如今已有十多年之久,同时也出现了各种形式的 Ops 和以及工具,目标是为了提升机器学习落地的效率。
![](https://static001.geekbang.org/infoq/b5/b596739f61c6d287d764ee426c3f23b3.png)
什么是 MLOPs?
MLOps 是面向机器学习领域,为了提高机器学习落地效率的。其中涉及角色包括数据科学家和软件工程师。他的任务包括定义场景、数据收集和整理、模型训练和部署、持续监控和更新,这是一个完整的 pipeline 的四个部分,在这一套生命周期里面每一个环节他都需要更快的迭代和更快的反馈。同时它的范围不仅仅只是代码,还包括模型和数据。所以简单来说 MLOps 就是包含了代码、模型和数据的持续集成、持续部署、持续训练和持续监控,同时还包括了各种平台工具,比如 FeatureStore、ModelStore、ModelMonitoring 等。
![](https://static001.geekbang.org/infoq/74/74408eb6adb7a61f41a6533925ad17c1.png)
DevOps Vs MLOps
不同点:对于 DevOps 和 MLOps 来说,他们面向的对象、过程和触发方式是不一样的。DevOps 的触发方式主要是代码的修改,而 MLOps 不仅仅是代码修改,当数据发生修改、Model Decay 模型性能发生衰退都会触发流水线。 相同点:DevOps 与 MLOps 的出现,都是为了提升效率。其实不管是什么 OPS,它的目标都是为最终的用户创造价值。DevOps 与 MLOps 的基本理念也是相同的,包括都是尽可能的自动化;对于提升实践的关键特点、关键做法也是相同的,其中系统的思考,尽快的反馈,持续的学习和改进,被称之为 DevOps 的 3 个方法论,在 MLOps 里面同样适用。
![](https://static001.geekbang.org/infoq/54/549eab469f86e43fa76d7b9158d0e7ba.png)
Part2:MLOps 在极狐 GitLab 的应用探索——刘巍锋
极狐 GitLab 架构师——刘巍锋在此次 meetup 中重点介绍了极狐 GitLab 中的 MLOps,以及使用 GitLab 实现 MLOps 所面临的挑战和展望。
![](https://static001.geekbang.org/infoq/3d/3df07709d9cc7fa0c733a13927e38ae6.png)
MLOps 是什么
MLOps 就是机器学习时代的 DevOps。它的主要作用是连接模型构建团队和业务,运维团队,建立起一个标准化的模型开发,部署与运维流程,使得企业组织能更好的利用机器学习的能力来促进业务增长。
极狐 GitLab 中的 MLOps
众所周知,极狐 GitLab 是 MLOps 领域里一个非常成熟的产品,它的强项领域就是在 DevOps。而 DevOps 和 MLOps 的高度相似让极狐 GitLab 产生了思考,能不能借助 DevOPS 平台来解决一些 MLOpd 的事情呢?基于此,为 GitLab 进行重新定位,让极狐 GitLab 成为机器学习工程师和数据科学家的完美伙伴和工具,并在整个机器学习生命周期(模型创建、测试、部署、监控和迭代)中为他们提供更好的用户体验。 如下图所示,橙色部分属于 GItlab,白色部分属于由第三方平台或者工具来提供的。其中代码、超参数、部署等过程可以使用 GitLab 来完成。整个过程可以理解为一个机器学习 pipeline,这个 pipeline 是通过使用 GItlab 自带的 CI pipeline 所实现的。
![](https://static001.geekbang.org/infoq/62/6234987dd6e48a59428a2358dec5fc81.png)
当前现状
GItLab 当前针对 MLOps 所做改进有以下几点:
完美支持 ipynb 格式文件(>v14.5)
整合 MLFlow (进行中)
JupyterLab 插件 (进行中)
与客户在大数据/机器学习领域展开探索实践
极狐 GitLba 的探索
下图所示为当前实现的流程图,中间的每一步都可以看作 GitLab Pipeline 中的 Job,每一个工作都在 GitLab 的 MLRunner 中,可以认为它是一个执行器。整体上看,通过 DVC 把 S3 中的指定的训练数据集拉下来,进行模型训练,之后进行模型评估,结果算出后写到 MR 中去,基于这些信息产生一个评估结果,数据科学家根据评估结果进行再次评估、更改。如果不符合需求,可以选择将 MR 丢掉不处理,或者回到训练数据/代码/配置重新更改,再次触发整个流程。如果符合需求,这个 MR 的代码才会合并到主分支中去,同时把生成镜像以及模型保存下来。
最右边 CD 过程,是通过 JH GitLab KAS 的 GitOps 工作流模式实现,包含以下几个特点:
部署脚本保存在单独 project 中
JH GitLab 的 agent server 监控内容是否有更新
Agent server 通知 k8s 中的 agentk 配置更改
agentk 根据情况更新部署环境
![](https://static001.geekbang.org/infoq/89/89b78c04f461a1c3603d4cb84cfa5355.png)
面临的挑战和展望
对于当前使用 GitLab 实现 MLOps 面临着以下挑战:1:用户需要熟悉 GitLab CI,GitOps 等工具和流程才可以实现。2:极狐 GitLab 暂时没有 MLOps 模版可用。3:缺少与其他主流 ML 框架/工具整合方案。4:海量数据的传输保存面临挑战。未来 Gitlab 将针对以上问题进行不断探索与改进。
Part3:OpenMLDB:开源实施特征计算平台——卢冕、
第四范式系统架构师、OpenMLDB 研发负责人——卢冕,在此次 meetup 中重点介绍了 OpenMLDB 解决机器学习全流程(MLOps)特征问题。
![](https://static001.geekbang.org/infoq/b2/b26edf9632bb634eba8d9571fcca76b0.png)
如下图所示,MLOps 可以看作机器学习应用开发到上线的全流程,它包含离线开发和线上服务两部分,这两套流程中同时包含从数据到特征计算到模型训练的全过程。和大部分 DevOps 落地过程中遇到的问题类似,MLOps 也遇到了很多难点,重点包含两个方面,首先是线上线下一致性校验问题,其次是实时特征拼接和聚合问题。 OpenMLDB 可以恰当的解决 MLOps 过程中关于特征数据 FeatureOps 的问题,应用于决策类场景基于时序数据的特征工程,可以极大的提升机器学习上线的效率,满足生产级上线需求的实时推荐系统,降低机器学习从业人员的门槛。
![](https://static001.geekbang.org/infoq/8b/8bb4c0c48e16693956100082459de095.png)
从架构来看,OpenMLDB 对外提供了唯一的开发语言 SQL,数据科学家只要会写 SQL 就能用 SQL 开发特征计算脚本。从内部看,OpenMLDB 有两套引擎,一套是批处理的 SQL 引擎,另一套是实时的 SQL 引擎。批处理的 SQL 引擎主要针对线下开发过程,基于 Spark 做了一些源代码级别的优化,可以更好的处理特征平台特征计算。而实时 SQL 部分,OpenMLDB 团队从零构建了一个分布式的时序内存数据库,完全针对于时序数据优化的一个 SQL 引擎。架构图中间是一致性执行计划生成器,它承接输入方的 SQL,在内部自动转换成线下的执行计划和线上的执行计划,从内部自动保障了线上、线下计算逻辑的一致,省去人为的线上线下一致性的校验过程,做到开发即上线。简单总结来看只需要三个步骤就可以完成这个过程,即 1.线下 SQL 特征脚本开发 2.一键部署上线 3.接入实时请求数据流。
![](https://static001.geekbang.org/infoq/e1/e1fb66afc44e4ee53d7a060f9ae23154.png)
目前 OpenMLDB 新版本 v0.5.0 带来了性能、成本、灵活性的重大优化升级。主要升级体现在:1.通过预聚合技术,显著提升可长窗口性能。2.成本降低。提供了基于内存和外存的两种存储引擎选择,大大降低了成本。3.易用性增强。支持 C/C++ UDF,并支持 UDF 动态注册,方便使用者扩展计算逻辑,提升了应用覆盖范围。总结来看,新版本的 OpenMLDB 在线性能数量级有了大幅提升,提供了低成本落地选择,使用场景的灵活性也得到扩展。未来 0.6.0 版本将更加关注易用性和可运维性,包括数据库状态自检和报告工具、查询调试和 tracing 工具、数据库性能分析和统计报告生成工具、Flink connector、整合特征编码等相关算法等。
总结
DevOps 与 MLOps 的出现都是为了提高企业的效率,提升研发领域的效率,为了更好的给客户提供价值。而 MLOpd 作为基于 DevOps 发展而涌现出的后起之秀,可以在领域即数据分析和机器学习领域,起到非常大的作用。相信随着企业数字化转型纷纷进入到高级阶段即智能化阶段,AI 在企业大批的落地并发挥关键作用,MLOps 也会成为热词,并在未来的 10 年内,成为业内 AI 落地的必不可少的默认词。 最后,欢迎大家持续关注 DevOps 与 MLOps,加入社群和我们一起讨论 MLOps 相关内容。
视频回顾
DevOps&MLOps:都是为了效率——谭中意
https://www.bilibili.com/video/BV1NL4y1T7zd?spm_id_from=333.999.0.0
MLOps 在极狐 GitLab 中的应用探索——刘巍锋
https://www.bilibili.com/video/BV1ZT411V7DT?spm_id_from=333.999.0.0
OpenMLDB 在 MLOps 的应用——卢冕
https://www.bilibili.com/video/BV1zA4y1o7jY?spm_id_from=333.999.0.0
直播预告|FeatureStore Meetup V3
FeatureStore 作为 MLOps 领域中重要又较为新颖的概念,国内已有不少公司拥有了自己的技术实现,云上产品和开源项目。但企业在实际搭建和应用过程中仍然面临着诸多问题。本次活动将携手华为商城中级算法工程师-曾中铭、第四范式 OpenMLDB PMC-陈迪豪、众安保险金融数据应用团队负责人- 郭育波,3 位大咖讲师共同探讨如何实现和应用好特征平台 FeatureStore,交流建设心得,传播经验体会。
⏰时间:6 月 12 日(周日)14:00-17:00 不见不散
🔍详情:直播预告|FeatureStore Meetup V3 重磅来袭!
🙋♂️报名:https://6684201514000.huodongxing.com/event/6653672280522
评论