共用方式為


在 Azure 中使用雲端規模分析的數據科學專案最佳做法

我們建議您在 Microsoft Azure 中使用雲端規模分析來運作數據科學專案。

開發範本

開發一個範本,為您的數據科學專案組合一組服務。 使用組合一組服務的範本,協助提供各種數據科學小組使用案例的一致性。 建議您以範本存放庫的形式開發一致的藍圖。 您可以在企業內針對各種數據科學專案使用此存放庫,以協助縮短部署時間。

數據科學範本的指導方針

使用下列指導方針為您的組織開發資料科學範本:

  • 開發一組基礎結構即程序代碼 (IaC) 範本,以部署 Azure 機器學習 工作區。 包含金鑰保存庫、儲存體帳戶、容器登錄和 Application Insights 等資源。

  • 包含這些範本中的數據存放區和計算目標設定,例如計算實例、計算叢集和 Azure Databricks。

部署最佳做法

即時

  • 在範本和 Azure 認知服務中包含 Azure Data Factory 或 Azure Synapse 部署。
  • 範本應該提供所有必要的工具來執行數據科學探索階段和模型的初始運作。

初始設定的考慮

在某些情況下,您組織中的數據科學家可能需要一個環境,才能進行快速的視需要分析。 當數據科學專案未正式設定時,這種情況很常見。 例如,由於遺漏的元素需要核准,因此可能需要在 Azure 內進行交叉收費的項目經理、成本代碼或成本中心可能會遺失。 貴組織或小組中的使用者可能需要存取數據科學環境,以了解數據,並可能評估專案的可行性。 此外,某些專案可能不需要完整的數據科學環境,因為少量的數據產品。

在其他情況下,可能需要完整的數據科學專案、使用專用環境、專案管理、成本程序代碼和成本中心來完成。 完整數據科學專案適用於想要在探索階段成功之後共同作業、共享結果,以及需要讓模型運作的多個小組成員。

安裝程式

在設定範本之後,應該以每個項目為基礎部署範本。 每個專案至少應接收兩個實例,以供開發和生產環境分開。 在生產環境中,沒有任何個人應該具有存取權,而且所有專案都應該透過持續整合或持續開發管線和服務主體來部署。 這些生產環境原則很重要,因為 Azure 機器學習 不會在工作區內提供細微的角色型訪問控制模型。 您無法限制使用者存取特定一組實驗、端點或管線。

相同的訪問許可權通常適用於不同類型的成品。 請務必將開發與生產區分開,以防止刪除工作區中的生產管線或端點。 除了範本之外,還需要建置程式,以提供數據產品小組要求新環境的選項。

建議您根據每個項目設定不同的 AI 服務,例如 Azure 認知服務。 藉由為每個項目設定不同的 AI 服務,就會針對每個數據產品資源群組進行部署。 此原則會從數據存取的觀點建立清楚的區隔,並降低錯誤小組未經授權數據存取的風險。

串流案例

針對即時和串流使用案例,應在已 縮減的 Azure Kubernetes Service (AKS) 上測試部署。 測試可以在開發環境中節省成本,再部署到生產 AKS 或容器 Azure App 服務。 您應該執行簡單的輸入和輸出測試,以確保服務如預期般回應。

接下來,您可以將模型部署至您想要的服務。 此部署計算目標是唯一可供 AKS 叢集中生產工作負載使用且建議使用的部署計算目標。 如果需要圖形處理單元(GPU)或現場可程式化閘道數位支援,則此步驟更為必要。 Azure 機器學習 目前無法使用支持這些硬體需求的其他原生部署選項。

Azure 機器學習 需要一對一對應至 AKS 叢集。 Azure 機器學習 工作區的每個新連線都會中斷 AKS 與 Azure 機器學習 之間的先前連線。 一旦減輕該限制,建議將中央 AKS 叢集部署為共用資源,並將其連結至其各自的工作區。

如果應該在將模型移至生產 AKS 之前完成壓力測試,則應該裝載另一個中央測試 AKS 實例。 測試環境應該提供與生產環境相同的計算資源,以確保結果與生產環境相似。

Batch 案例

並非所有使用案例都需要 AKS 叢集部署。 如果大型數據量只需要定期評分或以事件為基礎,則使用案例不需要 AKS 叢集部署。 例如,當數據放入特定記憶體帳戶時,就可以根據大量數據量。 Azure 機器學習 管線和 Azure 機器學習 計算叢集應該用於這些案例類型的部署。 這些管線應該在Data Factory 中協調和執行。

識別正確的計算資源

在 Azure 機器學習 中將模型部署至 AKS 之前,用戶必須先指定應該為個別模型配置的 CPU、RAM 和 GPU 等資源。 定義這些參數可以是複雜且乏味的程式。 您必須使用不同的組態來執行壓力測試,才能識別一組良好的參數。 您可以使用 Azure 機器學習 中的模型分析功能來簡化此程式,這是一項長時間執行的工作,它會測試不同的資源配置組合,並使用已識別的延遲和來回時間 (RTT) 來建議最佳組合。 這項資訊可協助 AKS 上的實際模型部署。

若要安全地更新 Azure 機器學習 中的模型,小組應使用受控推出功能 (預覽) 將停機時間降到最低,並讓模型的 REST 端點保持一致。

MLOps 的最佳做法和工作流程

在數據科學存放庫中包含範例程序代碼

如果您的小組具有特定成品和最佳做法,您可以簡化和加速數據科學專案。 建議您建立所有數據科學小組可以在使用 Azure 機器學習 和數據產品環境的個別工具時使用的成品。 數據和機器學習工程師應該建立並提供成品。

這些成品應包括:

  • 示範如何:

    • 載入、掛接及處理數據產品。
    • 記錄計量和參數。
    • 將定型作業提交至計算叢集。
  • 作業所需的成品:

    • 範例 Azure 機器學習 管線
    • 範例 Azure Pipelines
    • 執行管線所需的更多腳本
  • 文件集

使用設計良好的成品來運作管線

成品可以加速數據科學專案的探索和作業階段。 DevOps 分叉策略可協助跨所有項目調整這些成品。 由於此設定會提升 Git 的使用,因此使用者和整體自動化程式可以受益於提供的成品。

提示

Azure 機器學習 範例管線應使用 Python 軟體開發人員套件 (SDK) 或以 YAML 語言為基礎來建置。 新的 YAML 體驗將更具未來性,因為 Azure 機器學習 產品小組目前正在處理新的 SDK 和命令行介面 (CLI)。 Azure 機器學習 產品小組確信 YAML 會做為 Azure 機器學習 內所有成品的定義語言。

範例管線無法針對每個專案使用現成可用的管線,但可作為基準使用。 您可以調整專案的範例管線。 管線應該包含每個項目最相關的層面。 例如,管線可以參考計算目標、參考數據產品、定義參數、定義輸入,以及定義執行步驟。 Azure Pipelines 應該執行相同的程式。 Azure Pipelines 也應該使用 Azure 機器學習 SDK 或 CLI。

管線應該示範如何:

  • 連線 DevOps 管線內的工作區。
  • 檢查所需的計算是否可用。
  • 提交作業。
  • 註冊及部署模型。

成品不適合所有專案,而且可能需要自定義,但有基礎可以加速專案的作業化和部署。

結構 MLOps 存放庫

您可能有使用者無法追蹤使用者可找到並儲存成品的情況。 若要避免這些情況,您應該要求更多時間來溝通及建構標準存放庫的最上層資料夾結構。 所有項目都應該遵循資料夾結構。

注意

本節所述的概念可跨內部部署、Amazon Web Services、Palantir 和 Azure 環境使用。

下圖說明 MLOps(機器學習作業)存放庫的建議最上層資料夾結構:

MLOps 存放庫結構的圖表。

下列用途適用於存放庫中的每個資料夾:

資料夾 目的
.cloud 將此資料夾中的雲端特定程式代碼和成品儲存在內。 成品包括 Azure 機器學習 工作區的組態檔,包括計算目標定義、作業、已註冊的模型和端點。
.ado/.github 將 Azure DevOps 或 GitHub 成品儲存在此資料夾中,例如 YAML 管線或程式碼擁有者。
code 包含此資料夾中作為專案一部分開發的實際程式代碼。 此資料夾可以包含 Python 套件和一些腳本,這些腳本會用於機器學習管線的個別步驟。 建議您分隔此資料夾中需要完成的個別步驟。 常見的步驟包括 前置處理模型定型和 模型註冊。 針對每個資料夾定義相依性,例如 Conda 相依性、Docker 映像或其他專案。
docs 請針對檔案目的使用此資料夾。 此資料夾會儲存 Markdown 檔案和影像來描述專案。
pipelines 將 Azure 機器學習 管線定義儲存在此資料夾中的 YAML 或 Python 中。
tests 撰寫需要執行的單元和整合測試,以在此資料夾中的專案早期探索 Bug 和問題。
notebooks 使用這個資料夾,將 Jupyter Notebook 與實際的 Python 專案分開。 在資料夾內,每個人員都應該有一個子資料夾來簽入其筆記本,並防止 Git 合併衝突。

後續步驟

Azure 中的雲端規模分析數據產品