MLOps
mlops-roadmap/MLOpsRoadmap2020.md at master · tdcox/mlops-roadmap (github.com)
什么是MLOps?
MLOps可以狭义地定义为“将DevOps原则应用于机器学习应用程序的能力”,但正如我们稍后将看到的,这种狭义的定义错过了MLOps对客户的真正价值。相反,我们将MLOps定义为“DevOps方法论的扩展,将机器学习资产(和数据科学资产)作为DevOps生态中的一等公民”。
MLOps应被视为一种持续管理产品ML方面的实践,其方式与成功将这些产品商业化所需的所有其他技术和非技术元素相统一,并在市场上具有最大的生存潜力。
什么不是MLOps?(对于MLOps的错误认识和定义外延)
MLOps不是“将Jupyter notebook投入生产环境”。
像Jupyter Notebooks这样的RAD工具牺牲了可维护性、可测试性和 scalability,以实现快速方法探索和教学
很大一部分ML从业者从未接触过过去70年在商业环境中管理软件资产的经验教训。
数据科学家创建的训练好的ML模型只是可行性的概念证明,与能够在生产环境中安全将该资产转换为商业产品之间存在很大的概念差距。
此外,机器学习的解决方案往往用于决策系统,而不仅仅是数据处理系统,因此,交付项目的标准高得多,质量和治理流程的门槛非常高,在许多情况下需要满足区域立法规定的法律合规流程。
随着这些决策解决方案越来越多地取代商业和政府中的人类决策者,我们遇到了一类新的治理问题,统称为“负责任的人工智能”。这些问题围绕ML模型中的道德、公平和偏见等复杂问题带来了一系列挑战,通常属于政府监管范围,要求模型具有可解释性,通常标准高于适用于员工的标准。
MLOps动机/目的
展望
MLOps最期望的情况是在CI/CD环境中,机器学习资产与所有其他软件资产得到一致的处理,作为统一发布过程的一部分,机器学习模型可以与包裹和使用它们的服务一起部署。
- MLOps必须与语言无关。ML模型的训练脚本可以用各种不同的编程语言编写。
- MLOps必须与框架无关。目前有大量不同的机器学习框架在使用,预计随着时间的推移,这些框架将继续激增。必须能够在MLOps中使用任何所需的框架,并且能够在任何给定的部署中组合多个框架。
- MLOps必须与平台和基础设施无关。MLOps能在之前已经配置好的公司的基础设施下使用。保守假设,仅仅是MLOps,不足以需要导致整个基础设施根本变革。
- MLOps应该努力做到与目标硬件无关。人们可能想让模型在CPU、GPU、TPU、专用ASIC或其它芯片上进行运行。应该可以在尽可能广泛的目标硬件范围内使用MLOps。在某些情况下,可能还需要促进“交叉编译”,模型在一类硬件上训练以提高训练速度,并部署在另一类的硬件上以优化成本或性能。
- MLOps应遵循“约定优于配置”(convention over configuration)原则,通过遵循一定的约定来减少配置工作,从而使系统更加简洁、可维护和可扩展。比如,在MLOps实践中,通常会有许多构建(build)和部署(deployment)的资产,如模型、代码、配置文件等,可以通过遵循一致的约定,来简化管理和维护。对于必需的配置,应该尽可能地通过自动生成或推导来减少手动配置的工作量,(如模板、脚本或自动化工具),并提供配置模板和示例,这些示例可以被客户或用户逐步修改以满足他们的特定需求,以减少错误的可能性。
- MLOps应遵循MLOps的方法论。虽然许多客户在数据科学领域可能是专家,但他们可能对DevOps(开发运维一体化)或其他软件开发生命周期(SDLC)原则了解甚少。MLOps的设计应该始终与生产环境中的最佳实践保持一致,而不是为了满足专家用户在测试环境中快速尝试工具而采取“快速而粗糙”的方法。
挑战
XXX
备注:
一等公民/一级对象
In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, modified, and assigned to a variable.
在编程语言中,一等公民是指支持所有操作的实体, 这些操作通常包括作为参数传递,作为函数返回值,允许值的修改并赋值给变量等。不同的函数语言在设计时使用了不同的一等公民。
常见的一等公民包括int、float、char等基本数据类型,在老的语言比如C中,字符串和数组不是一等公民,因为我们不能用一个数组赋值另一个数组,当它们作为参数传递时,实际上只传递了它们的第一个元素的位置——它们的大小会丢失。
更高级的一等公民包括一等函数first-class function、一等类first-class class、一等数据类型first-class data type等。以一等函数为例,函数可以作为返回值和参数传递、并且可以赋值给变量,常见于匿名函数、闭包等。
RAD:Rapid Application Development 快速应用开发
比如jupyter notebook,牺牲了可维护性、可测试性和 scalability,以实现快速方法探索和教学
反模式
- Anti-patterns是在软件开发和工程实践中出现的一些常见但不佳的方法或模式,通过研究并分类反模式,以防在后续开发过程中重蹈覆辙。
ZenML (github.com)
MLOps(六)-回顾2023年开源的MLOps产品、框架、工具与格局变化_百度知道 (baidu.com)