PyTorch 是最廣泛使用和最強大的深度學習框架之一,用於訓練和部署複雜的神經網路。訓練和部署 AI 應用程式從未如此簡單,用於建立最佳化工作流的低成本、高效能、高能效的硬體、工具和技術也比以往任何時候都更容易獲取。但是資料科學、機器學習和開發運維本身就是深奧的課題,對於擁有專業特長的開發人員來說,看到它們在現實世界中如何結合在一起,甚至不知道從何開始,都可能令人望而生畏。
為此,Arm 與 GitHub 的朋友們合作,分解了使用 PyTorch 模型進行真實世界 MLOps 管道的基本要素,並建立了一個簡化的工作流和 MLOps 教程,任何擁有 GitHub 和 Docker Hub 賬戶的人都可以利用。
MLOps 概述
機器學習應用程式的軟體開發生命週期通常從訓練資料開始,這些資料用於訓練複雜的神經網路 (NN),這些神經網路經過最佳化,整合到軟體映象中,然後部署到計算叢集,甚至部署到現場的裝置群中。這些裝置通常持續收集資料,並由雲服務管理,雲服務主動監控 ML 演算法的效能,並反饋資料以供生命週期下一次迭代的再訓練——從而實現演算法的持續改進,並支援新 AI 功能的部署。

典型 ML 軟體開發生命週期的示例。
GitHub 的 Scott Arbeit 最近發表了一篇優秀博文,強調了 MLOps 在機器學習中的重要性,並描述了透過簡化的 GitHub Actions 實現多個關鍵任務的自動化,其中包括
- 資料預處理:為訓練清理和準備資料。
- 模型訓練和驗證:當新資料被推送或模型程式碼發生更改時,自動執行訓練指令碼。
- 部署:在成功訓練和驗證後,自動將模型打包並部署到生產環境。
- 監控和警報:工作流用於監控模型效能,並在達到特定閾值時傳送警報。
該文章還描述了一個概念性的高效 MLOps 管道,該管道利用 natively 整合到 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 應用程式生命週期中的所有步驟。

此 MLOps 工作流在 GitHub Actions 中成功執行。
親自嘗試一下!
我們的 Arm 團隊已經在實際應用中對這個教程進行了實戰測試,並於今年早些時候在 GitHub Universe 2024 上以研討會的形式釋出了這個教程。現在是您親身體驗 PyTorch 和 MLOps 的時候了。
在這裡嘗試 Arm 學習路徑!
透過本教程,您可以
- 設定一個新的 GitHub Arm-runner,以原生構建 arm64 映象,利用最低成本、最高能效的計算資源。
- 使用德國交通標誌識別基準 (GTSRB) 資料集訓練和測試 PyTorch ML 模型。
- 比較兩個經過訓練的 PyTorch ML 模型的效能;一個模型使用 OpenBLAS(開放式基礎線性代數子程式庫)和 oneDNN(深度神經網路庫)編譯,另一個模型使用 Arm 計算庫 (ACL) 編譯。
- 將 ML 模型容器化並將容器推送到 DockerHub。
- 使用 GitHub Actions 將每個任務自動化為單個 MLOps 管道。
將 PyTorch 的強大功能與 GitHub Actions 的簡潔性以及原生 Arm Runners 的高效性相結合,顯著有助於加速您的深度學習開發和部署過程。遵循本部落格文章中概述的最佳實踐有助於您的 PyTorch 專案實現最佳效能和成本效益。
我們很樂意看到您基於此示例建立的作品。如果您建立了自己的 Arm 學習路徑,歡迎在此分享。