生产部署
生产到底是什么意思?当然,答案依赖于你问谁以及他们正在从事什么应用。利用机器学习和数据科学创造商业价值有许多不同的方法,因此不可能有一个明确的定义或将项目部署到生产的单一方式。
然而,所有生产部署都有一些共同的特征:
生产部署应该在没有人工干预的情况下运行。使用需要您在笔记本电脑上执行
run来驱动重要业务流程或产品的结果并不实际。生产环境的部署应该以可靠的方式高可用地运行。即使基础设施遇到偶发性故障,结果也应该可预测地出现。
考虑Metaflow旅程
到目前为止,步骤涉及到人类参与,从 本地开发 到 可扩展流程。相比之下,生产部署的一个定义特征是它们是完全自动化的。我们通过 调度流程 在 生产级工作流调度器 上自动运行来实现这一点,因此您无需手动编写 run 来生成所需的结果。
可靠运行的自动化工作流
生产部署的第二个特征——可靠性怎么样?首先,Stage II 的一个主要好处是您可以在大规模下测试您的工作流,并添加可靠性增强特性,确保您的流程能够处理生产规模的工作负载。其次,您的流程需要由一个本身运行可靠的系统进行协调,这比听起来更难。这种生产级调度器需要是
高可用性: 协调器本身必须不能崩溃,即使它运行的服务器出现随机故障。
高度可扩展: 我们不应该担心系统所协调的流的数量。
能够基于不同条件触发流程:我们应该能够灵活地自动化流程执行。
易于监控和操作: 将偶尔的人为干预所花费的时间降到最低。
幸运的是,有少数系统能够满足这些要求,根据它们的业绩来看。Metaflow 与其中两个系统集成:Argo Workflows,它在 Kubernetes 上运行,以及 AWS Step Functions,这是 AWS 提供的托管服务。截止到今天,Argo Workflows 是唯一支持 Metaflow 强大的事件触发功能 的调度器,这使它成为一个良好的默认选择。
此外,Metaflow与一个流行的开源工作流调度器Apache Airflow集成。虽然Airflow的限制比前面提到的两个调度器更多,但如果您已经在上面部署了许多DAG,并且不想在您的环境中引入新的调度器,它是一个不错的选择。
虽然所有这些系统在后台都相当复杂,但 Metaflow 使得使用它们变得简单:您可以仅用一条命令来部署您的流程 - 无需更改代码。此外,这意味着您可以轻松地在调度程序之间切换。例如,您可以首先使用 Apache Airflow 以保持与现有数据管道的兼容性,并在一段时间内迁移到 Argo Workflows,而无需支付任何迁移费用。
生产部署的模式
一旦流程稳定运行,您可以在各种系统上利用结果 - 比如新训练的模型:
- 您可以将部署的工作流作为构建块,通过使用 事件触发 来组合更大的系统。
- 您可以在数据仓库中写入新的预测或其他结果,例如,以支持仪表板。
- 您可以在缓存中填充最新的结果,例如用于推荐系统。
- 您可以在您选择的模型托管平台上部署模型,例如Seldon或AWS Sagemaker。
确切的模式取决于您的用例。重要的是,当您可以信任您的流可靠地运行时,创建这些集成变得容易得多。我们很高兴在Metaflow支持Slack上帮助您找到适合您需求的模式。
到生产环境及返回
虽然上面的旅程示意图看起来像是从原型到生产的线性路径,但实际上,图中应该显示出到处都是循环。特别是,本地开发与生产部署之间会有持续的互动,因为您需要解决生产问题(不可避免),同时继续致力于流的更新版本。
在故障排除时,一个非常方便的功能是能够resume 本地恢复失败的生产运行。此外,请记住,你可以实时检查任何生产运行的状态,使用cards和notebooks。
当涉及到使用较新版本时,您如何知道较新版本的性能是否优于最新的生产部署?通常,回答这个问题的最好方法是将新版本部署为与现有生产版本同时运行并比较结果,就像A/B测试一样。这个模式由 the @project
decorator 启用。此外, Metaflow
tags 在设计生产部署流程时也非常有用。
你将学习什么
您可以通过注册一个a Metaflow Sandbox来体验所有这些概念并进行动手测试,而无需在本地安装任何东西!
在本节中,您将学习如何使您的流程自动运行而无需任何人工干预。
调度 Metaflow 流的基础:
- Depending on the 已安装的基础设施, pick a section below:
- 使用 Argo 调度流
工作流程
- 如果在Kubernetes上运行,请选择此项。
- 使用AWS Step Functions安排流程
- 选择以最小的操作开销。
- 使用Apache Airflow调度流程
- 选择保持与您现有的 Airflow 部署兼容。
- 使用 Argo 调度流
工作流程
- Depending on the 已安装的基础设施, pick a section below:
协调更大的 Metaflow 项目 是一种更高级的模式,允许多个并行生产部署。
通过事件连接流程 显示了如何基于实时事件自动启动工作流。该模式允许您使用流程作为构建块来构建反应式系统。