跳转到主要内容
社区

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

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

PyTorch 是最广泛使用、最强大的深度学习框架之一,用于训练和部署复杂的神经网络。训练和部署 AI 应用程序从未如此简单,而低成本、高性能、节能的硬件、工具和技术也比以往任何时候都更容易获得,可用于创建优化的工作流。但是,数据科学、机器学习和开发运维本身都是深入的领域,对于专注于某一领域的开发人员来说,看到它们在现实世界中如何协同工作,甚至从何开始都可能感到不知所措。

为此,我们 Arm 与 GitHub 的朋友们合作,分解了使用 PyTorch 模型的现实 MLOps 流水线的基本元素,并创建了一个简化的工作流和 MLOps 教程,任何拥有 GitHub 和 Docker Hub 账户的人都可以利用它。

MLOps 概述

机器学习应用程序的软件开发生命周期通常从训练数据开始,这些数据用于训练复杂的神经网络 (NNs),然后将这些网络进行优化,集成到软件镜像中,再部署到计算集群甚至现场设备群中。这些设备通常持续收集数据,并由云服务管理,云服务主动监控机器学习算法的性能,并反馈数据以用于生命周期的下一次迭代的再训练——从而实现算法的持续改进,并支持新 AI 功能的部署。

process flow chart

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

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

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

文章还描述了一个概念性的高效 MLOps 流水线,该流水线利用了与 GitHub Actions 原生集成的低成本 Arm Runners 来训练和验证 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 工作流,该工作流结合并自动化了每个 ML 任务的独立工作流。为了演示这一点,该存储库在一个样板 `.yml` 文件中包含了一个自动化各个步骤的工作流。

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

process flow chart

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

亲自尝试!

我们的 Arm 团队已经在实际应用中对本教程进行了实战检验,并于今年早些时候在 GitHub Universe 2024 上以研讨会的形式发布了本教程。现在,是时候让您亲自体验 PyTorch 和 MLOps 了。

在此处尝试 Arm 学习路径:点此进入

完成本教程后,您可以:

  • 设置新的 GitHub Arm-runner,原生构建 arm64 镜像,以利用最低成本、最高能效的计算资源。
  • 使用德国交通标志识别基准 (GTSRB) 数据集训练和测试 PyTorch 机器学习模型。
  • 比较两个已训练的 PyTorch 机器学习模型的性能;一个模型使用 OpenBLAS (Open Basic Linear Algebra Subprograms Library) 和 oneDNN (Deep Neural Network Library) 编译,另一个模型使用 Arm Compute Library (ACL) 编译。
  • 将机器学习模型容器化并将其推送到 DockerHub。
  • 使用 GitHub Actions 将每个任务自动化到单个 MLOps 流水线中。

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

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