探索 MLOps 結構
身為資料科學家,您想要定型最佳的機器學習模型。 若要實作模型,您想要將其部署至端點,並將其與應用程式進行整合。
經過一段時間後,您可能會想要重新定型模型。 例如,當您有更多定型資料時,就可以重新定型模型。
一般而言,當您將機器學習模型定型之後,您會想要為企業級模型做好準備。 若要準備模型並加以運作,您會想要:
- 將模型定型轉換為強固且可重現的管線。
- 在開發環境中測試程式碼和模型。
- 在生產環境中部署模型。
- 將端對端流程自動化
設定開發環境和生產環境
在 MLOps (類似於 DevOps) 內,環境是指資源的集合。 這些資源會用來部署應用程式,或使用機器學習專案來部署模型。
注意
在此課程模組中,我們會參考 DevOps 對環境的解譯。 請注意,Azure Machine Learning 也會使用環境一詞來描述執行指令碼所需的 Python 套件集合。 這兩種環境概念互不相關。
您使用的環境數目取決於您的組織。 一般而言,至少有兩個環境:「開發環境」或「開發」以及「生產環境」或「生產」。此外,您還可以在中間新增「預備」或「進入生產階段前」 (「生產前」) 環境。
典型的方法是:
- 在「開發」環境中試驗模型定型。
- 將最佳模型移至「預備」或「生產前」環境,部署及測試模型。
- 最後,將模型「發行」到「生產」環境,部署模型以供終端使用者使用。
組織 Azure Machine Learning 環境
當您實作 MLOps 並大規模使用機器學習模型時,最佳做法是在不同的階段使用不同的環境。
想像小組使用開發、生產前和生產環境。 並非小組每個人都該存取所有環境。 資料科學家可能只在開發環境中使用非生產資料,而機器學習工程師則使用生產資料,在生產前和生產環境中部署模型。
擁有不同的環境會更容易控制資源存取權。 然後,每個環境均可與個別的 Azure Machine Learning 工作區建立關聯。
在 Azure 中,您要使用角色型存取控制 (RBAC) 賦與同事正確的等級,以存取其需要使用的部分資源。
或者,您也可以只使用一個 Azure Machine Learning 工作區。 當開發和生產只使用一個工作區時,Azure 磁碟使用量和管理額外負荷都比較小。 不過,RBAC 可同時套用至開發與生產環境,而這表示您授與人員太少或太多的資源存取權。
設計 MLOps 結構
將模型帶入生產環境,表示您需要調整解決方案,並與其他小組合作。 您可能會決定與其他資料科學家、資料工程師和基礎結構小組一起使用下列方法:
- 將資料儲存在資料工程師所管理的 Azure Blob 儲存體中。
- 基礎結構小組要建立所有必要的 Azure 資源,例如 Azure Machine Learning 工作區。
- 資料科學家著重於其最佳用途:開發和定型模型 (內部迴圈)。
- 機器學習工程師會將定型的模型進行部署 (外部迴圈)。
因此,您的 MLOps 結構包含下列組件:
- 設定:為解決方案建立所有必要的 Azure 資源。
- 模型開發 (內部迴圈):探索與處理資料來訓練與評估模型。
- 持續整合:封裝並註冊模型。
- 模型部署 (外部迴圈):部署模型。
- 持續部署:測試模型並升階至實際執行環境。
- 監視:監視模型與端點效能。
當您與較大型的小組合作時,您不應該如同資料科學家般負責所有 MLOps 結構的組件。 不過,若要準備 MLOps 的模型,您應該考慮如何針對監視和重新定型進行設計。