PyTorch 是最广泛使用且功能最强大的深度学习框架之一,用于训练和部署复杂的神经网络。训练和部署 AI 应用从未如此简单,而且用于创建优化工作流程的低成本、高性能、节能的硬件、工具和技术比以往任何时候都更容易获得。但是,数据科学、机器学习和 DevOps 本身就可以是深奥的领域,对于专注于某一专业的开发者来说,了解它们如何在现实世界中结合在一起,或者甚至知道从哪里开始,可能会感到不知所措。
为此,我们 Arm 公司与 GitHub 的朋友合作,分解了使用 PyTorch 模型的现实世界 MLOps 管道的基本元素,创建了一个简化的工作流程和 MLOps 教程,任何拥有 GitHub 和 Docker Hub 账户的人都可以利用。
MLOps 概述
机器学习应用的软件开发生命周期通常从训练数据开始,这些数据用于训练复杂的神经网络(NN),这些神经网络经过优化,集成到软件镜像中,然后部署到计算集群,甚至部署到现场设备群中。这些设备通常持续收集数据,并由云服务管理,云服务积极监控机器学习算法的性能,并收集反馈数据用于下一轮生命周期的再训练——从而实现算法的持续改进,同时也支持部署新的 AI 功能。
典型机器学习软件开发生命周期的示例。
GitHub 的 Scott Arbeit 最近发布了一篇优秀的博客,强调了 MLOps 在机器学习中的重要性,并描述了通过简化的 GitHub 动作自动化几个关键任务,包括:
- 数据预处理:对数据进行清洗和准备以供训练。
- 模型训练和验证:当新数据被推送到或对模型代码进行更改时自动执行训练脚本。
- 部署:在训练和验证成功后,自动将模型打包并部署到生产环境中。
- 监控和警报:监控模型性能的工作流程,并在某些阈值被突破时发送警报。
文章还描述了一个概念上高效的 MLOps 管道,该管道利用 GitHub Actions 中本地产入的新、低成本 Arm Runners 来训练和验证 PyTorch 模型。它还使用容器化技术,以确保在不同环境中的一致部署。
我们在 Arm 的团队将 GitHub 的想法和概念工作流程付诸实践,并创建了一个教程,帮助您今天开始使用。
优化您的 PyTorch MLOps 工作流程
一条新的 Arm 学习路径详细解析了 Scott 博客中描述的每个关键阶段,并详细演示了每个关键任务,提供指导性说明和代码示例,以利用 PyTorch 框架的多个方面来实现每个阶段。
使用 GitHub Actions 设置和自动化的关键 ML 任务。
通过这条学习路径,您将能够利用以下策略,通过一个真实世界的目标检测用例来构建自己的精简 MLOps 工作流程:
- 容器化:将 PyTorch 模型及其依赖项打包到 Docker 容器中,以确保在不同环境中的一致性能。
- 高效数据加载:优化数据加载管道,以帮助减少 I/O 瓶颈并最大化 GPU 利用率。
- 模型优化:探索模型量化、剪枝和知识蒸馏等技术,以帮助减小模型大小并提高推理速度。
- 利用 PyTorch 生态系统:使用 TorchVision 等库来帮助简化常见的深度学习任务。
- 监控和配置:监控资源利用率并识别潜在瓶颈,以进一步优化您的流程。
全流程 MLOps 工作流程
这个学习路径的最佳部分不仅在于它详细介绍了每个任务,而且将所有任务整合为一个统一的自动化工作流程。
使用 GitHub Actions,您可以构建一个端到端的自定义 MLOps 工作流程,该工作流程结合并自动化了每个 ML 任务的独立工作流程。为了演示这一点,该存储库包含一个在模板 .yml 文件中的工作流程,该工作流程自动化了各个步骤。
您可以使用 GitHub Actions 原生地运行 MLOps 工作流程,以管理您 ML 应用程序生命周期的所有步骤。
在 GitHub Actions 中成功运行此 MLOps 工作流程。
试试看!
我们的 Arm 团队已在现场对该教程进行了实战测试,并在今年年初的 GitHub Universe 2024 上将其作为研讨会发布。现在轮到您亲自尝试,动手使用 PyTorch 和 MLOps 了。
在这里尝试 Arm 学习路径!
在本教程结束时,您可以:
- 设置新的 GitHub Arm 运行器,以原生方式构建 arm64 镜像,利用最低成本、最高效的计算能力。
- 使用德国交通标志识别基准数据集(GTSRB)训练和测试 PyTorch 机器学习模型。
- 比较两个训练好的 PyTorch 机器学习模型的性能;一个模型使用 OpenBLAS(开放基本线性代数子程序库)和 oneDNN(深度神经网络库)编译,另一个模型使用 Arm Compute Library(ACL)编译。
- 将机器学习模型容器化并推送到 DockerHub。
- 使用 GitHub Actions 将每个任务自动化成一个单一的 MLOps 流水线。
结合 PyTorch 的力量、GitHub Actions 的简单性和原生 Arm Runners 的效率,可以显著加速您的深度学习开发和部署过程。遵循本博客文章中概述的最佳实践,可以帮助您实现 PyTorch 项目的最佳性能和成本效益。
我们很乐意看到您基于这个示例创作的作品。如果您已经创建了您自己的 Arm 学习路径,欢迎在此分享。