社区

通过 Arm 和 GitHub 协作简化 PyTorch 的 MLOps 工作流程

作者 2025年1月15日2025年5月5日暂无评论

PyTorch 是目前最广泛使用且功能最强大的深度学习框架之一,用于训练和部署复杂的神经网络。如今,训练和部署人工智能应用的门槛已大幅降低,且用于创建优化工作流程的低成本、高性能、高能效硬件、工具和技术也比以往任何时候都更容易获取。然而,数据科学、机器学习和 DevOps 本身就是深奥的课题,对于专注于某一领域的开发者来说,要了解它们如何在现实世界中协同工作,甚至只是找到入门途径,都可能令人感到不知所措。

为此,我们 Arm 与 GitHub 的伙伴们合作,将使用 PyTorch 模型构建现实世界 MLOps 流水线的基本要素进行了拆解,并创建了一个简化的工作流程和 MLOps 教程,任何拥有 GitHub 和 Docker Hub 账户的人都可以使用。

MLOps 概述

机器学习应用的软件开发生命周期通常始于训练数据,这些数据用于训练复杂的神经网络(NN),随后对其进行优化、整合到软件镜像中,并部署到计算集群乃至现场的设备集群上。这些设备通常在持续收集数据,并由云服务进行管理。云服务会主动监控机器学习算法的性能,并将数据反馈回生命周期的下一迭代中进行再训练,从而实现算法的持续改进,并支持部署新的人工智能功能。

process flow chart

典型机器学习软件开发生命周期的示例。

来自 GitHub 的 Scott Arbeit 最近发表了一篇出色的博客文章,强调了 MLOps 在机器学习中的重要性,并描述了通过简化的 GitHub Actions 实现多个关键任务的自动化,包括:

  • 数据预处理:为训练清洗和准备数据。
  • 模型训练与验证:当推送新数据或修改模型代码时,自动执行训练脚本。
  • 部署:在训练和验证成功后,自动打包并将模型部署到生产环境。
  • 监控与告警:监控模型性能并在达到特定阈值时发送告警的工作流。

这篇文章还描述了一个概念性的高效 MLOps 流水线,利用了原生集成到 GitHub Actions 中的全新、低成本 Arm Runner 来训练和验证 PyTorch 模型。它还使用容器化技术,以确保在不同环境中的一致性部署。

我们在 Arm 的团队将 GitHub 的理念和概念性工作流程付诸实践,并创建了一个教程,帮助您从今天开始上手。

优化您的 PyTorch MLOps 工作流程

一个新的Arm 学习路径详细拆解了 Scott 博客中所述的每个关键阶段,并详细演示了每项关键任务,提供了指导性说明和代码示例,以利用 PyTorch 框架的多个方面来实现各个阶段。

process flow chart

使用 GitHub Actions 设置和自动化的关键机器学习任务。

通过这条学习路径,您将能够在一个现实世界的目标检测用例中应用以下策略,从而构建属于自己的简化 MLOps 工作流程:

  • 容器化:将您的 PyTorch 模型及其依赖项打包到 Docker 容器中,以帮助确保在不同环境下的一致性能。
  • 高效数据加载:优化数据加载流水线,以最大限度地减少 I/O 瓶颈并最大化 GPU 利用率。
  • 模型优化:探索模型量化、剪枝和知识蒸馏等技术,以帮助减小模型体积并提高推理速度。
  • 利用 PyTorch 生态系统:利用 TorchVision 等库来简化常见的深度学习任务。
  • 监控与性能分析:监控资源利用率并识别潜在瓶颈,以进一步优化您的工作流程。

端到端的 MLOps 工作流程

这条学习路径最精彩的部分不仅在于它详细介绍了每项任务,还在于它将所有任务整合为一个统一的自动化工作流程。

利用 GitHub Actions,您可以构建一个端到端的自定义 MLOps 工作流程,将每项机器学习任务的独立工作流结合并自动化。为了演示这一点,存储库包含一个 .yml 样板文件中的工作流,该文件实现了各个步骤的自动化。

您可以原生使用 GitHub Actions 运行 MLOps 工作流程,以管理机器学习应用生命周期中的所有步骤。

process flow chart

在 GitHub Actions 中成功运行此 MLOps 工作流。

亲自尝试!

我们的 Arm 团队已经在实际场景中验证了本教程,并于今年早些时候在 GitHub Universe 2024 大会上将其作为研讨会内容进行了演示。现在是时候让您亲自上手,实践 PyTorch 和 MLOps 了。

点击此处尝试 Arm 学习路径!

通过本教程,您将能够:

  • 设置一个新的 GitHub Arm-runner,以原生方式构建 arm64 镜像,利用现有最低成本、最高能效的计算资源。
  • 使用德国交通标志识别基准(GTSRB)数据集训练和测试 PyTorch 机器学习模型。
  • 比较两个已训练 PyTorch 模型的性能;一个模型使用 OpenBLAS(开放式基础线性代数子程序库)和 oneDNN(深度神经网络库)编译,另一个模型使用 Arm Compute Library (ACL) 编译。
  • 将机器学习模型容器化并将其推送到 DockerHub。
  • 使用 GitHub Actions 将各项任务自动化为单一的 MLOps 流水线。

将 PyTorch 的强大功能与 GitHub Actions 的简便性以及原生 Arm Runner 的高效性相结合,将显著加速您的深度学习开发和部署流程。遵循本博客文章中概述的最佳实践,有助于您在 PyTorch 项目中实现最优的性能和成本效益。

我们非常期待看到您基于此示例创作的作品。如果您创建了自己的 Arm 学习路径,欢迎在此分享