将AI/ML的想法付诸生产

56 阅读5分钟

近年来,在产品中整合人工智能和ML已经成为一种趋势。公司正试图将这些技术纳入其产品,以提高其效率和性能。而今年,特别是随着ChatGPT的蓬勃发展,几乎每家公司都在尝试引入这一领域的功能。AI和ML的主要好处之一是它们的学习和适应能力。它们可以分析数据,并随着时间的推移利用它来提高自己的性能。这意味着,随着时间的推移,采用这些技术的产品可以变得更聪明,更有效率。

现在让我们了解一下公司是如何将他们的想法付诸生产的。通常情况下,他们开始雇用一些数据科学家,他们会弄清楚创建什么模型来解决问题,对其进行微调,然后移交给MLOps或DevOps工程师来部署。你的DevOps工程师可能知道也可能不知道如何有效地将这些模型带到生产中。这就是你需要专门技能的地方,如机器学习工程师和MLOps,他们了解如何有效地管理CI/CD/CT管道的整个过程。

部署策略的成熟度

许多工程师会先把模型和API打包在一个流行的Python框架中,比如Flask或FastAPI,放在一个容器中,然后部署在Docker或Kubernetes上。这对实验室类型的环境很有效,但并不适合生产用例。

更成熟的公司会拿出他们的工具来协调和部署服务。我认为他们的设置很好,但他们的系统与生态系统不一致,需要长期管理和维护系统的大量努力。

最后,你在最右边,部署一个专门的机器学习平台,如Kubeflow、Ray、ClearML等,提供端到端的工具来管理ML服务的生命周期。

Model Serving at the Edge Made Easier.

信用:边缘的模型服务变得更容易:Paul Van Eck和Animesh Singh,IBM

从哪里开始?

如果你是MLOps的新手,要了解你的堆栈到底需要什么并不那么容易。为了简化这个问题,MLOps社区分享了一个模板,可以帮助你做一些自我评估,并浏览大型AI/ML平台的生态系统。

 MLOps Stack Template

不是所有的组件都需要在堆栈中,但你可以把你对每个组件的要求,并确定适合你的工具。从本质上讲,你需要一种方法将数据带到平台上,并进行版本控制,运行和记录实验,需要一个ML管道来自动运行你的数据科学家在笔记本上构架的代码,还需要一个模型注册处,你将在那里存储模型和它们的血统,然后是模型服务和监控推理的性能。

Lifecycle of AI/ML Project

AI/ML项目的生命周期

为工作找到合适的工具

正如我前面所说,这个生态系统正在蓬勃发展,有数百种工具和框架正在出现,以管理一个子集或整个生命周期。

tools and frameworks coming up to manage a subset or the full lifecycle.

Neptune.ai编制了上述堆栈,我认为这对了解这些产品是如何配合的相当有用。这里有一些你可以探索的选择。

这里有一些你可以探索的选择。

云服务

如果你在任何主要的公共云中,你将获得像谷歌云中的顶点AI、AWS中的Sagemaker和微软Azure中的Azure ML这样的服务。他们已经做了相当好的工作,使有用的端到端生命周期管理。显然,其中一些比其他的更成熟,其中一些性价比不高。例如,我不觉得他们的模型服务选项不是很有效。他们不允许你在部署推出期间使用零碎的GPU或运行一个完整的GPU机器的副本。

在Kubernetes上构建你的堆栈

如果你很勇敢,想采取一些开源的框架,如Kubeflow或Ray,你可以创建你的堆栈。这些框架在与MLFlow结合时大多是完整的。

商业产品

最后,还有像truefoundry、weights and biases、ClearML等玩家,他们以最小的操作开销提供完整的解决方案。ClearML也有一个开源的自我托管版本,但你又回到了第2点,建立你的堆栈。

还有更多的工具和产品,但我不想关注它们;相反,我想给出一个堆栈的粗略轮廓。无论你选择什么,托管这些MLOps堆栈的事实上的行业标准是Kubernetes;有时云计算为你提供管理以简化操作,有时将其留给你在你的集群上运行。

挑战

  • 大多数情况下,我们忽视了数据隐私和安全,只有当我们被黑客攻击或需要获得一些合规性时才意识到这一点。
  • 缺乏对生态系统非常了解的技术资源。
  • 稀少的工具,没有为生产做好准备。例如,我发现MLOps堆栈中的许多流行工具缺乏RBAC和认证。
  • 对正确的堆栈的错误或缺乏理解导致了低效的流程。
  • 对计算的低效使用,如GPU,可能会打击你的成本。我们常常一开始就忽略了成本,直到后来被账单冲击的时候才意识到。
  • 一个低效的底层平台可能是你的Kubernetes集群,它没有有效地处理计算,有不可靠的集群设计,等等。